web-dev-qa-db-fra.com

Conventions pour app.js, index.js et server.js dans node.js?

Dans node.js, il semble que je rencontre les mêmes 3 noms de fichiers pour décrire le point d'entrée principal d'une application:

  • Lorsque vous utilisez le express-generator package, un app.js le fichier est créé comme point d'entrée principal pour l'application résultante.
  • Lors de la création d'un nouveau package.json fichier via npm init, on est invité à entrer le fichier du point d'entrée principal. La valeur par défaut est donnée comme index.js.
  • Dans certains programmes que j'ai vus, server.js sert également de point d'entrée principal.

D'autres fois encore, il semble qu'il y ait de subtiles différences dans leur utilisation. Par exemple, cette structure de répertoire d'application de noeud utilise index.js et server.js dans différents contextes:

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 <----------------------------

Quelles sont les différences, le cas échéant, entre ces trois noms?

27
youngrrrr

Même si vous pouvez appeler les fichiers comme vous le souhaitez, il y a un avantage à appeler le point d'entrée index.js ou server.js

Pourquoi index.js: Lorsque vous lancez npm init il définira le point d'entrée principal du module sur index.js. Certaines personnes ne le modifient pas, elles finissent donc par nommer leur point d'entrée principal index.js. Cela signifie qu'il y a une chose de moins à faire.

Pourquoi server.js: Si votre package de nœud ne va pas être consommé par un autre package, mais est plutôt une application autonome, alors si vous appelez votre point d'entrée principal server.js, alors vous pouvez problème npm start et démarrez votre application. npm start exécutera votre fichier server.js par défaut. Pour modifier ce comportement, fournissez un script start dans package.json. Si un script start existe, npm start exécutera ce script à la place.

app.js est juste une convention - le seul avantage est que certains IDE, tels que Visual Studio Code, seront par défaut app.js comme point d'entrée d'un programme que vous déboguez. De cette façon, lorsque vous utilisez le framework le plus courant, Express, qui crée un fichier app.js, "ça marche"

12
zumalifeguard

Là où je travaille, nous ne nous sommes pas vraiment installés sur un format, nous avons donc des applications avec index.js, d'autres avec server.js. De plus, dans certains, nous avons un fichier config.js au niveau racine, d'autres se trouvent dans un dossier config (alors exigez (config/config.js). Nous en avons même un où server.js se trouve dans un dossier serveur.

Le problème survient lorsque nous voulons automatiser notre processus de déploiement. Cela devient comme une dette technique lorsque nous devons apporter un tas de modifications mineures à chaque service.

Cela dit, choisissez un format qui vous convient et respectez-le.

4
tjgragg

En fait, tous ne sont que des noms et vous devez être cohérent dans votre propre travail, comme indiqué par @Oka dans une réponse précédente.

Le seul point valable ici est que la nature modulaire du nœud peut jouer un rôle important dans votre décision, comme indiqué dans la section Folders as Modules de la documentation NodeJS, il existe 3 façons de passer un dossier à require () comme argument et le second et un commun est de charger automatiquement le fichier index.js à partir du dossier , voici comment beaucoup de Les packages NPM sont construits et comme il est simple et standard en fonction du chargement automatique de la fonctionnalité NodeJS. Cela semble le meilleur choix si vous développez un package NPM.

En fin de compte, comme d'autres l'ont souligné, vous pouvez choisir l'un des trois, voire un autre, mais respectez votre décision. Ma décision était de toujours utiliser index.js sur la base du fait mentionné ci-dessus.

3
Felipe Plets

C'est assez simple!

Si votre application doit être utilisée dans d'autres applications: index.js

Si votre application ne doit PAS être utilisée dans d'autres applications: server.js

Comme indiqué précédemment, les raisons étant, lors de l'appel de npm start, si non défini dans package.json, recherche automatiquement server.js. Et lorsque vous incluez un autre module dans votre application, il recherche index.js.

Extra: J'ai également tendance à n'utiliser que index.js comme nom de fichier lorsque celui-ci est automatiquement trouvé d'une manière ou d'une autre. Cela me fait savoir si le fichier est appelé directement ou indirectement.

1
Karl Morrison