expreso = requerir('expreso')

Feb 01 2023
Así es como funciona el proceso mientras intentaba entender lo que estaba pasando detrás de escena de esta declaración. Ahora, echemos un vistazo a la caja ;) primero comencemos por saber qué es realmente express en require.
Foto de Kelli McClintock en Unsplash

Así es como funciona el proceso mientras intentaba entender lo que estaba pasando detrás de escena de esta declaración. Ahora, echemos un vistazo a la caja;)

primero comencemos por saber qué es realmente express en require .

express es el paquete de marco que instaló cuando usó:

npm istall express

Como puede ver aquí, tenemos algunas funciones definidas y otras cosas, y allí estamos exportando algunas cosas, incluidas las funciones.

¿No sabes lo que significa exportar?

Exportar aquí es como exportar bienes en la vida real, solo estás moviendo cosas a otro lugar para poder usarlas allí;

¿De acuerdo?

En JS puedes exportar funciones, propiedades y otras cosas a otro archivo usando:

module.exports = (stuff you want to export)

En un archivo.js tenemos esta función sayHi:

// a.js

const sayHi = () => { return 'Hi' }

Al agregar esa línea, dijimos anteriormente que es:

// a.js

module.exports = sayHi

// a.js

const sayHi = () => { return 'Hi' }
module.exports = sayHi

¡No, debemos importarlo para poder usarlo! es logico

pero como entonces?

Usando la línea de abajo. Es expresivo: necesitamos ese módulo, así que lo requerimos.

require(module location);

// b.js

const sayHi = require('./a.js');

Ahora, tenemos una referencia a la función y podemos llamarla agregando () a la referencia;

// b.js
const sayHi = require('./a.js');
console.log( sayHi() ) //output: Hi

podemos ver esto:

//express.js module

exports = module.exports = createApplication;

//express.js module 

exports.static = require('serve-static');
exports.json = bodyParser.json
exports.query = require('./middleware/query');
exports.raw = bodyParser.raw

Las exportaciones aquí son solo una referencia a module.exports, de modo que en lugar de decir module.exports.json, puede usar este acceso directo directamente export.json.

¿Está bien?

vayamos al archivo app.js donde creamos nuestro servidor y agregamos algunas rutas, ahora solo necesitamos ver la primera línea:

// app.js

const express = require('express')

probemos registrándolo:

// app.js

const express = require('express')

console.log(express)


[Function: createApplication] {
 application: {
 init: [Function: init],
 defaultConfiguration: [Function: defaultConfiguration],
 lazyrouter: [Function: lazyrouter],
 handle: [Function: handle],
 use: [Function: use],
 route: [Function: route],
 engine: [Function: engine],
 param: [Function: param],
 set: [Function: set],
 path: [Function: path],
 enabled: [Function: enabled],
 disabled: [Function: disabled],
 enable: [Function: enable],
 disable: [Function: disable],
 acl: [Function (anonymous)],
 bind: [Function (anonymous)],
 checkout: [Function (anonymous)],
 connect: [Function (anonymous)],
 copy: [Function (anonymous)],
 delete: [Function (anonymous)],
 get: [Function (anonymous)],
 head: [Function (anonymous)],
 link: [Function (anonymous)],
 lock: [Function (anonymous)],
 'm-search': [Function (anonymous)],
 merge: [Function (anonymous)],
 mkactivity: [Function (anonymous)],
 mkcalendar: [Function (anonymous)],
 mkcol: [Function (anonymous)],
 move: [Function (anonymous)],
 notify: [Function (anonymous)],
 options: [Function (anonymous)],
 patch: [Function (anonymous)],
 post: [Function (anonymous)],
 propfind: [Function (anonymous)],
 proppatch: [Function (anonymous)],
 purge: [Function (anonymous)],
 put: [Function (anonymous)],
 rebind: [Function (anonymous)],
 report: [Function (anonymous)],
 search: [Function (anonymous)],
 source: [Function (anonymous)],
 subscribe: [Function (anonymous)],
 trace: [Function (anonymous)],
 unbind: [Function (anonymous)],
 unlink: [Function (anonymous)],
 unlock: [Function (anonymous)],
 unsubscribe: [Function (anonymous)],
 all: [Function: all],
 del: [Function (anonymous)],
 render: [Function: render],
 listen: [Function: listen]
 },
 request: IncomingMessage {
 header: [Function: header],
 get: [Function: header],
 accepts: [Function (anonymous)],
 acceptsEncodings: [Function (anonymous)],
 acceptsEncoding: [Function (anonymous)],
 acceptsCharsets: [Function (anonymous)],
 acceptsCharset: [Function (anonymous)],
 acceptsLanguages: [Function (anonymous)],
 acceptsLanguage: [Function (anonymous)],
 range: [Function: range],
 param: [Function: param],
 is: [Function: is],
 protocol: [Getter],
 secure: [Getter],
 ip: [Getter],
 ips: [Getter],
 subdomains: [Getter],
 path: [Getter],
 hostname: [Getter],
 host: [Getter],
 fresh: [Getter],
 stale: [Getter],
 xhr: [Getter]
 },
 response: ServerResponse {
 status: [Function: status],
 links: [Function (anonymous)],
 send: [Function: send],
 json: [Function: json],
 jsonp: [Function: jsonp],
 sendStatus: [Function: sendStatus],
 sendFile: [Function: sendFile],
 sendfile: [Function (anonymous)],
 download: [Function: download],
 type: [Function: contentType],
 contentType: [Function: contentType],
 format: [Function (anonymous)],
 attachment: [Function: attachment],
 append: [Function: append],
 header: [Function: header],
 set: [Function: header],
 get: [Function (anonymous)],
 clearCookie: [Function: clearCookie],
 cookie: [Function (anonymous)],
 location: [Function: location],
 redirect: [Function: redirect],
 vary: [Function (anonymous)],
 render: [Function: render]
 },
 Route: [Function: Route],
 Router: [Function (anonymous)] {
 param: [Function: param],
 handle: [Function: handle],
 process_params: [Function: process_params],
 use: [Function: use],
 route: [Function: route],
 acl: [Function (anonymous)],
 bind: [Function (anonymous)],
 checkout: [Function (anonymous)],
 connect: [Function (anonymous)],
 copy: [Function (anonymous)],
 delete: [Function (anonymous)],
 get: [Function (anonymous)],
 head: [Function (anonymous)],
 link: [Function (anonymous)],
 lock: [Function (anonymous)],
 'm-search': [Function (anonymous)],
 merge: [Function (anonymous)],
 mkactivity: [Function (anonymous)],
 mkcalendar: [Function (anonymous)],
 mkcol: [Function (anonymous)],
 move: [Function (anonymous)],
 notify: [Function (anonymous)],
 options: [Function (anonymous)],
 patch: [Function (anonymous)],
 post: [Function (anonymous)],
 propfind: [Function (anonymous)],
 proppatch: [Function (anonymous)],
 purge: [Function (anonymous)],
 put: [Function (anonymous)],
 rebind: [Function (anonymous)],
 report: [Function (anonymous)],
 search: [Function (anonymous)],
 source: [Function (anonymous)],
 subscribe: [Function (anonymous)],
 trace: [Function (anonymous)],
 unbind: [Function (anonymous)],
 unlink: [Function (anonymous)],
 unlock: [Function (anonymous)],
 unsubscribe: [Function (anonymous)],
 all: [Function (anonymous)]
 },
 json: [Function: json],
 query: [Function: query],
 raw: [Function: raw],
 static: [Function: serveStatic] {
 mime: Mime {
 types: [Object: null prototype],
 extensions: [Object: null prototype],
 default_type: 'application/octet-stream',
 Mime: [Function: Mime],
 charsets: [Object]
 }
 },
 text: [Function: text],
 urlencoded: [Function: urlencoded]
}

Es createApplication, por lo que lo que se devolvió es en realidad la referencia a createApplication();

¡Puedes estar preguntando como yo, antes de que entendiera!

¡dónde están las otras exportaciones que vimos arriba como esta! :

// express.js module

exports.static = require('serve-static');
exports.json = bodyParser.json
exports.query = require('./middleware/query');
exports.raw = bodyParser.raw

¿Entonces, Que esta pasando aquí?

Se trata de funciones que se comportan en JS, se comporta como un objeto;)

cuando usaste esto:

exports = module.exports = createApplication;

exports.static = require('serve-static');
exports.json = bodyParser.json
exports.query = require('./middleware/query');
exports.raw = bodyParser.raw

exports = module.exports = createApplication;

createApplication.static = require(‘serve-static’);

__

Echa un vistazo a este fragmento y ponte a prueba preguntando a qué equivale express en cada línea a continuación:

// app.js

const express = require('express')
const app = express();
app.use(express.static('public'))

¿finalizado? ahora vámonos:

En la primera línea: requerimos el módulo que devolvió una referencia createApplication que incluye otras propiedades y almacenó esa referencia en express constante;

En la segunda línea: llamamos a esta función express agregando () a la referencia express y esa función (createApplication) devuelve el objeto de la aplicación que almacenamos en la constante de la aplicación.

En la tercera línea: usamos express constant que se refiere a la función createApplication que tiene algunas propiedades como la función estática que llamamos aquí.

Ahora, terminé…