Módulo, objeto module en AngularJS

| 2015-03-21 | No hay comentarios »

Los módulos son una de las piezas fundamentales en el desarrollo con AngularJS y nos sirven para organizar el código en esta librería. Lo puedes entender como un contenedor donde situas el código de los controladores, directivas, etc.

2992

La incorporación de módulos en AngularJS es motivada por la realización de aplicaciones con mejores prácticas. Son como contenedores aislados, para evitar que tu código interactúe con otros scripts Javascript que haya en tu aplicación (entre otras cosas dejarán de producirse colisiones de variables, nombres de funciones repetidos en otras partes del código, etc.). Los módulos también permiten que el código sea más fácilmente reutilizable, entre otras ventajas.

Indicar el módulo al arrancar la aplicación

Cuando arrancas una aplicación AngularJS, usando ng-app generalmente pondrás el nombre del módulo que quieres ejecutar en tu aplicación.

<HTML ng-app="miAplicacion">

En ese caso se supone que para identificar tu aplicación dentro del DOM le has colocado un identificador «miapp». Aprecia también que los módulos son opcionales e incluso que podría haber varios módulos que deseas arrancar, algo posible, pero raramente usado.

Creación de módulos

Desde Javascript crearás los módulos usando el método angular.module() e indicándole una serie de parámetros. Echa un vistazo a esta sintaxis.

angular.module('miAplicacion', [ ... ], function(...){ ... })

La variable «angular» la tienes como variable global cuando cargas AngularJS, dentro tiene un objeto que estará disponible en cualquier parte de tu código. Luego ves «module», que es un método del objeto «angular» y que sirve para crear el módulo. El primer argumento es el nombre del módulo, que corresponde con el nombre de tu aplicación. En el segundo parámetro puedes indicar una serie de módulos adicionales, separados por comas, que serían tus dependencias. Pueden ser módulos de otros autores o puede que tú mismo hayas decidido organizar tu código en diferentes módulos. El tercer parámetro es opcional y en él colocamos una función que sirve para configurar AngularJS.

Para comenzar crearás tus módulos probablemente de una manera sencilla, tal como puedes ver a continuación:

angular.module('nuevaApp', []);

En el código anterior «nuevaApp» es el nombre de tu módulo. Como se comentó anteriormente, ese módulo se debe indicar en el bootstrap (arranque) de tu aplicación, comúnmente en la directiva ngApp.

<html ngApp="nuevaApp">

El objeto module

Esta llamada a angular.module() te devuelve un objeto module, que tiene una serie de métodos como config, run, provider, service, factory, directive, controller, value, etc. que son los que nos sirven para controlar la lógica de presentación y la lógica de negocio. Verás dos variantes de código en este sentido:

OPCIÓN 1) Puedes «cachear» (almacenar) el módulo en una variable y luego usarlo para crear tus controladores, factorías, etc.

var nuevaApp = angular.module('nuevaApp', []);
nuevaApp.controller( ... );

OPCIÓN 2) Aunque en muchos casos verás que ese objeto module ni siquiera se guarda en una variable, sino que se encadenan las creaciones de los controladores o factorías todo seguido. A esto último se suele llamar estilo «Fluent»

angular
  .module('nuevaApp', [])
  .controller( ... )
  .factory( ... );

Estas dos opciones proponen estilos de código distintos. En la segunda opción, al encadenar las llamadas desde la creación del módulo hasta los controladores u otras cosas que necesitemos, nos estamos ahorrando la creación de una variable global, eliminando posibilidad de que colisione con otras del mismo nombre que haya en otras partes de tu aplicación. Como te imaginarás, se recomienda la OPCIÓN 2).

Acceder a un módulo ya creado en nuestra aplicación

El módulo lo crearás una vez, pero puedes necesitarlo en diversos puntos de tu código. Si lo has cacheado en una variable global, tal como se comentaba en la OPCIÓN 1) del punto anterior, podrás acceder a él en cualquier lugar de tu aplicación. Sin embargo, habíamos dicho que no era la opción más recomendable, así que necesitamos alguna otra manera de acceder a un módulo ya creado.

Lo conseguimos por medio del mismo método module() que utilizamos para crear el módulo, solo que en esta ocasión solo le indicaremos el módulo al que queremos acceder.

angular.module('nuevaApp')

Por si no has visto la diferencia con angular.module(‘nombreModulo’, []) creamos un módulo y con angular.module(‘nombreModulo’) recuperamos un módulo que haya sido creado anteriormente con el nombre ‘nombreModulo’.


Acerca del autor: Rodrigo Paszniuk

Ingeniero Informático, amante de la tecnología, la música, el ciclismo y aprender cosas nuevas.

Posts Relacionados

  • Tutorial: Crear una aplicación web utilizando MEAN
  • Qué es y cómo empezar con Ionic Framework
  • Scope en AngularJS, manejando ámbitos con $parent
  • Factorías (factory) en AngularJS



SEGUÍNOS EN FACEBOOK


GITHUB