¿Qué sucede cuando necesito un módulo en Node.js?

Su llamada al método require está devolviendo el objeto asignado a module.exports.

Entonces, si tengo un archivo llamado foo.js y en él, tengo este código

//foo.js
module.exports = {
barra: “No sé nodejs”
}

y lo requiero en otro archivo como este,

//anotherFile.js
var myNewVar = require (‘foo’);

entonces, myNewVar será un objeto como este

{
barra: “No sé nodejs”
}

Tenga en cuenta que está asignando el objeto y no lo invoca / invoca exactamente. En Javascript, incluso las funciones se tratan como objetos. Entonces, si su module.exports está asignado a una función, está reasignando esa misma función a otro objeto requerido por ella.

En el ejemplo anterior, si mi foo.js tuviera una función como esta,

//foo.js
module.exports = function () {
devolver “Alguna otra cadena”;
}

entonces, requerir foo lo haría equivalente a

myNewVar = function () {
devolver “Alguna otra cadena”;
}

y NO

myNewVar = “Alguna otra cadena”


Entonces, cuando lo haces

aplicación var = connect ();

Indirectamente estás haciendo

aplicación var = require (‘conectar’) (); // El extra () significa que estás llamando a esa función

Lo que significa que está realizando una llamada de función y asignando el valor devuelto al objeto de la aplicación .

No estoy seguro sobre el módulo de conexión, pero puedo explicarlo.

var connect = require (‘conectar’); podría estar devolviendo una función en lugar de un objeto.

entonces tenemos que ejecutar la función de retorno para obtener un objeto de ella haciendo

aplicación var = connect ();

implementación:

var connect = func1 (); // func1 es su requerimiento (‘conectar’)

resultado var = connect (); // test ahora contiene el valor devuelto de func1.

// esta función devuelve un cierre (cierre de JavaScript)

función func1 () {

// variable privada, métodos privados.

función de retorno (param1, param2) {

// algunos cálculos basados ​​en cálculos.

}

}

entonces, cualquiera que ejecute el func1 obtendrá la función en la variable llamada que luego se puede ejecutar.

Este patrón de diseño se utiliza cuando desea devolver un cierre y llamar a la función con algunos parámetros adicionales basados ​​en el requisito.