guide - ¿Convenciones para app.js, index.js y server.js en node.js?
airbnb style code (3)
En node.js, parece que me encuentro con los mismos 3 nombres de archivo para describir el punto de entrada principal a una aplicación:
- Cuando se utiliza el paquete
express-generator
, se crea un archivoapp.js
como punto de entrada principal para la aplicación resultante. - Al crear un nuevo archivo
package.json
través denpm init
, se le solicitará al archivo principal del punto de entrada. El valor predeterminado se da comoindex.js
. - En algunos programas que he visto,
server.js
sirve como punto de entrada principal.
Otras veces, aún así, parece que hay diferencias sutiles en su uso. Por ejemplo, esta estructura de directorios de aplicaciones de nodo utiliza index.js
y server.js
en diferentes contextos:
app
|- modules
| |- moduleA
| | |- controllers
| | | |- controllerA.js
| | | +- controllerB.js
| | |- services
| | | +- someService.js
| | +- index.js <--------------
| +- index.js <-------------------
|- middleware.js
+- index.js <------------------------
config
+- index.js <------------------------
web
|- css
|- js
server.js <----------------------------
¿Cuáles son las diferencias, si las hay, entre estos tres nombres?
Aunque puede llamar a los archivos como desee, existe una ventaja al llamar al punto de entrada index.js o server.js
Por qué index.js: cuando emita npm init
, se establecerá el punto de entrada principal del módulo en index.js. Algunas personas no lo cambian, por lo que terminan nombrando su punto de entrada principal index.js. Significa que hay una cosa menos que hacer.
Por qué server.js: si su paquete de nodo no va a ser consumido por otro paquete, sino que es una aplicación independiente, entonces si llama a su punto de entrada principal server.js, puede emitir npm start
y iniciar su aplicación . npm start
ejecutará su archivo server.js por defecto. Para cambiar este comportamiento, proporcione un script de start
en package.json. Si existe un script de start
, npm start
ejecutará ese script en su lugar.
app.js es solo una convención; la única ventaja de esto es que algunos IDE, como Visual Studio Code, predeterminarán app.js como el punto de entrada de un programa que depura. De esa manera, cuando se utiliza el marco más común, Express, que crea un archivo app.js, "simplemente funciona"
De hecho, todos son solo nombres y debe ser coherente en su propio trabajo como lo señaló @Oka en una respuesta anterior.
El único punto válido aquí es que la naturaleza modular del nodo puede jugar un papel importante en su decisión, como se señala en la sección de Carpetas como Módulos de la documentación de NodeJS, hay 3 formas en que se puede pasar una carpeta a require () como argumento y el segundo y el más común es cargar automáticamente el archivo index.js desde la carpeta , así es como se construyen muchos paquetes NPM y es simple y estándar según la función de carga automática de NodeJS. Parece la mejor opción si está desarrollando un paquete NPM.
Al final, como han señalado otros, puede elegir cualquiera de los tres, o incluso otro, pero atenerse a su decisión. Mi decisión fue usar siempre index.js basado en el hecho mencionado anteriormente.
Donde trabajo, realmente no nos conformamos con un formato, así que tenemos algunas aplicaciones con index.js, algunas con server.js. Además, en algunos tenemos un archivo config.js en el nivel raíz, otros están en una carpeta de configuración (así que requieren (config / config.js). Incluso tenemos uno donde server.js está en una carpeta de servidor.
El problema viene cuando queremos automatizar nuestro proceso de implementación. Se convierte en una deuda técnica cuando tenemos que hacer un montón de modificaciones menores para cada servicio.
Dicho esto, elige un formato que tenga sentido para ti y apégate a él.