Mi primer m贸dulo Mi primer m贸dulo

馃 Mi primer m贸dulo

馃嵖 驴Qu茅 es un m贸dulo de Nodejs?

Un modulo es un bloque de c贸digo reutilizable cuya existencia no impacta de manera accidental otros bloques de c贸digo.

Javascript, al menos antes de ES6 no tenia una forma estandarizada de organizar el c贸digo de manera que un bloque de c贸digo no impactara otro. Exist铆an formas prevenirlo pero no propiamente como parte del lenguaje.

馃嵖 驴Qu茅 es CommonJS?

CommonJS es una forma estandarizada en la forma en la que los m贸dulos deben de ser estructurados. Es decir la forma en la que organizamos el c贸digo Javascript.

馃嵖 驴Qu茅 son las funciones de primera clase (first class functions)?

Javascript permite el uso de funciones de primer clase (First Class Functions), es decir que podemos asignar una funci贸n a una variable.

var saludar = function(){
    console.log('Hola !');
}

saludar();

E incluso podemos pasar funciones como par谩metros.

var saludar = function(){
    console.log('Hola');
}

var queHacer = function(fun){
    fun();
}

queHacer(saludar);

馃嵖 驴C贸mo crear un m贸dulo en Nodejs?

Vamos a crear el primer m贸dulo que ser谩 independiente de los otros m贸dulos.

  1. Dentro del espacio de trabajo vamos a crear el folder 02_primer_modulo, aqu铆 es donde vamos a trabajar.
  2. Creamos el archivo saludar.js con el siguiente c贸digo para imprimir el Hola.
// saludar.js
console.log('Hola');
  1. Creamos ahora el archivo app.js con el cual vamos a mandar llamar el m贸dulo saludar.
// app.js
require('./saludar.js');
  1. Ejecutamos ahora app.js.
$ node app.js

Imprimir谩 el mensaje Hola.

  1. Ahora vamos a modificar un poco el m贸dulo saludar para encapsular el saludo.
// saludar.js
var saludar = function(){
    console.log('Hola');
}
  1. Si invocamos la funci贸n saludar desde app.js vamos a ver que no es posible.
// app.js
require('./saludar.js')
saludar();
$ node app.js

Aqu铆 vamos a recibir una notificaci贸n de error, y lo que sucede es que aunque hemos invocado al m贸dulo, la funci贸n que existe dentro de este no puede ser invocada de esta forma. Esto esta echo intencionalmente as铆 en node para evitar que varias funciones en diferentes m贸dulos tengan el mismo nombre y colisionen entre si.

  1. Dentro del modulo saludar.js vamos a decirle que exportar.
// saludar.js
var saludar = function(){
    console.log('Hola');
}

module.exports = saludar;

Estamos dici茅ndole al modulo saludar que la parte que exportamos es la funci贸n funci贸n saludar.

// app.js
var saludar = require('./saludar')
saludar();

Y ahora a nivel del modulo app hemos capturado la saluda del modulo saludar en una variable con el mismo nombre. En esta ocasi贸n si podemos ejecutarla.

Cuando utilizo la funci贸n require, si no especifico la extensi贸n del modulo, por default node asume que es .js, en el c贸digo lo hice as铆.

Hola mundo Objetos y literales
comments powered by Disqus