Anuncios

Bienvenidos sean a este post, hoy hablaremos sobre como son los modulos con CommonJS.

Anuncios

Como dijimos en el post anterior CommonJS es el estandar mas basico para crear modulos, uno de las funciones mas utilizadas es require, de la cual hablamos anteriormente pero veamos como es su sintaxis:

require(modulo);
Anuncios

Resumiendo su explicacion, el codigo buscara el modulo que le informemos y lo usara para que podamos usar sus metodos y/o propiedades, por lo general se tiende a definirlo de la siguiente manera:

const nombre_objeto = require(modulo)[.promises];
Anuncios
Anuncios

Primero definiremos una constante con un nombre que se transformara en un objeto que contendra el accionar del require y el modulo que le pasemos, de forma opcional podemos pasar un promises si es que utilizamos una funcion asincronica, de lo cual hablamos en este post, pero porque definir un «objeto» de esta forma y no de una forma tradicional? porque de esta contendremos el llamado del require cada vez que lo necesitemos y a su vez nos evitamos cualquier tipo de modificacion que pueda producir un error, el metodo require es parte del objeto modules, el cual sera el encargado de manejar a los modulos, en algunos casos tenemos alias creados para poder acceder a estos metodos sin problemas, por ejemplo veamos a require, en realidad es un llamado a:

modules.require(modulo);
Anuncios

No solamente podemos importar modulos por medio de require sino que tambien podemos exportar funciones de un script por medio de exports para que puedan ser importadas desde otro por medio de require, es decir que todos nuestros scripts pueden ser modulos y no solamente los instalados por medio de npm, veamos primero como es su sintaxis:

exports.nombre_function = function(args) { ... };
Anuncios

Para entenderlo un poco mejor vamos a realizar un simple ejemplo, para ello vamos a crear un archivo que llamaremos ejemplo00.js y le agregaremos el siguiente codigo:

ejemplo00.js

var contar = 0;
exports.proximo = function() { return ++contar; };
exports.saludar = function() {
	return "Hola, como estas?";
	};
Anuncios

Ún codigo simple donde tendremos una variable llamada contar, luego tenemos dos funciones, la primera se llama proximo y esta devolvera el valor de la incrementacion de la variable anterior (contar), la segunda funcion es saludar y esta mostrara un mensaje en pantalla, observen a estas dos funciones donde le agregamos el metodo exports para que podamos importarlas desde otro lugar, nuestro siguiente paso sera abrir el interprete solo y desde importaremos este archivo recien creado, vamos a verlo en accion mediante el siguiente video para luego comentar algunos detalles:

Anuncios

Como pueden ver primero ingresamos al interprete simple y llanamente, desde este definiremos un objeto llamado e donde usaremos a require y le pasamos la ubicacion del modulo:

> const e = require('./ejemplo00')
Anuncios

Por mas que abramos el interprete desde el mismo directorio debemos especificar la ubicacion y en este caso al estar en el mismo directorio debemos especificarlo de esta forma, lo siguiente en el video es llamar al metodo saludar mediante el objeto creado y vemos como lo muestra, despues hacemos varias llamadas al metodo proximo y vemos como se incrementa el valor de contar, pero que pasaria si intentamos ver a la variable contar?, veamos que sucede:

> console.log(e.contar)
undefined
undefined
>
Anuncios

En este caso vemos que no podemos acceder a la variable porque no la habilitamos para poder ser accesible mediante el exports, por ultimo tenemos dos variables propias del objeto modules que nos permiten obtener los datos del directorio (__dirname) y el archivo (__filename), para ello vamos a crear un nuevo archivo que llamaremos dir.js y le agregaremos el siguiente codigo:

dir.js

console.log(`dirname: ${__dirname}`);
console.log(`filename: ${__filename}`);
Anuncios

En este ejemplo simplemente haremos un llamado para poder mostrar los valores actuales de ambas variables, ejecutemos el script para ver su salida:

$ node dir.js 
dirname: /home/tinchicus/lenguajes/node.js
filename: /home/tinchicus/lenguajes/node.js/dir.js
$
Anuncios
Nota:
Los valores pueden variar con respecto a sus equipos.
Anuncios

Estos nos pueden ser muy utiles para poder trabajar con nuestros codigos sin necesidad de tener que especificar el path de un archivo sino simplemente indicando los valores almacenados en alguna de estas dos variables, obviamente existen mas metodos y variables pero por el momento nos centraremos en estas dos porque seran las mas utilizadas por nosotros.

Anuncios

En resumen, hoy hemos visto como son los modulos desde el punto de vista del standar CommonJS, como se pueden importar, como podemos exportarlos, algunos ejemplos para verlos en accion, tambien como un simple script puede convertirse en un modulo y por ultimo dos variables del estandar para almancenar el directorio de nuestro script y otro con el nombre del archivo incluido, espero les haya sido de utilidad sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.

Anuncios
pp258

Donación

Es para mantenimento del sitio, gracias!

$1.50