Recientemente comencé a aprender Node/express. Una duda me está molestando desde hace un par de semanas. Sé lo que esto hace, y he sido capaz de superarlo. Pero no puedo entender la lógica utilizada en la línea 'const a = express()'.
express = require('express'); const a = express()No creo haber visto esto antes en javascript. En este caso, express es un objeto o una función (las funciones también son objetos en JavaScript), ¿verdad? Y esta línea es lo que le da acceso a la variable 'a' a muchos métodos importantes como 'escuchar' y 'obtener'. ¿Pero no es incorrecta la sintaxis aquí? Para usar la función express, necesitamos escribir como
const express = require('express'); const a = express.express()o necesitamos usar la desestructuración de objetos para escribir como
const {express} = require('express'); const a = express()Tal vez la confusión esté en suponer que la exportación predeterminada del módulo express es algo más que una función, pero como otros han señalado, la exportación predeterminada de express es una función. Una vez importado, el valor devuelto de esa función es una instancia de Express, que es donde tiene acceso a todos los métodos que mencionó.
Imagine que la definición de function express y el objeto que devuelve se parece a
class Express { // Implementation of Express server } // You're importing this and calling the function, receiving a new instance of this class. In reality this could be a class or object for all I know. export default function express() { return new Express() }