Konventionen für app.js, index.js und server.js in node.js?
In node.js es scheint, dass ich in die gleiche 3-Dateinamen zu beschreiben, die wichtigsten Einstiegspunkt für eine app:
- Bei der Verwendung der
express-generator
- Paket, eineapp.js
- Datei erstellt, wie der Haupteinstiegspunkt für die entsprechende app. - Beim erstellen eines neuen
package.json
Datei übernpm init
man aufgefordert wird, sich für die main-entry-point-Datei. Der Standardwert ist gegeben alsindex.js
. - In einigen Programmen, die ich gesehen habe,
server.js
dient als Haupt-Einstiegspunkt auch.
Anderen Zeiten, immer noch, es scheint, als ob es gibt subtile Unterschiede in Ihrer Nutzung. Zum Beispiel, dieser Knoten-app Verzeichnis-Struktur verwendet index.js
und server.js
in verschiedenen Kontexten:
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 <----------------------------
Was sind die Unterschiede, wenn überhaupt, zwischen diesen drei Namen?
- Sie sind nur Namen. Denke nicht zu hart über Sie, nur seien Sie konsequent in Ihren eigenen arbeiten.
- Eine Sache zu beachten, über index.js ist, dass durch die
require('./config');
Sie benötigen ./config/index.js Datei, so ist es im Grunde Haupt-Eingabe-Datei für das Verzeichnis. Sonst sind Sie nur Namen wie bereits von der Oka - beim laufen
npm init
es scheint, dass der Standard istindex.js
- Jemand bitte geben Sie eine Antwort darauf, warum Menschen nutzen app.js statt index.js
Du musst angemeldet sein, um einen Kommentar abzugeben.
Obwohl Sie können rufen Sie die Dateien, was Sie wollen, es ist ein Vorteil, um den Aufruf der entry-point index.js oder server.js
Warum index.js:
Wenn Sie
npm init
es werden die wichtigsten Einstiegspunkt für das Modul index.js. Manche Menschen wissen es nicht mehr ändern, so dass Sie am Ende Ihre Benennung Haupteinstiegspunkt index.js. Es bedeutet, dass es eine Sache weniger zu tun.Warum server.js:
Wenn Ihre Knoten-Paket wird nicht konsumiert werden, durch ein anderes Paket, sondern eher ein stand-alone-Anwendung, dann wenn Sie an Ihren wichtigsten Eintrittspunkt server.js dann können Sie die Ausgabe
npm start
und starten Sie Ihre app.npm start
läuft Ihr die server.js Datei standardmäßig. Um dieses Verhalten zu ändern, geben Sie einenstart
- Skript im Paket.json. Wenn einstart
Skript existiert,npm start
wird das Skript auszuführen, statt.app.js ist nur eine Konvention-der einzige Vorteil ist es, dass einige IDEs wie Visual Studio-Code wird standardmäßig app.js als Einstiegspunkt für ein Programm, das Sie Debuggen. So, wenn die Verwendung der meisten Rahmen -, Express -, das schafft ein app.js Datei, "es funktioniert einfach"
Wo ich arbeite, hatten wir nicht wirklich, sich auf ein format, so haben wir einige apps mit index.js einige mit server.js.
Auch, in einigen haben wir ein config.js Datei auf der root-Ebene, andere in einer config-Ordner (also require(config/config.js).
Wir haben sogar eine, wo server.js ist in einem server-Ordner.
Das Problem kommt, wenn wir automatisieren möchten unsere deployment-Prozess. Es wird wie technische Schulden, wenn wir eine Reihe von geringfügigen änderungen für jeden Dienst.
Sagte, dass, Sie sich für ein format, das macht Sinn für Sie, und bleiben Sie dabei.
In der Tat sind alle nur Namen und Sie müssen konsistent sein, in Ihrer eigenen Arbeit wie bereits von @Oka in einer vorherigen Antwort.
Nur gültig Punkt hier ist, dass die modulare Natur der Knoten spielen eine wichtige Rolle in Ihrer Entscheidung, wie bereits in Ordner als Module Abschnitt der NodeJS-Dokumentation es gibt 3 Möglichkeiten, in dem Sie einen Ordner übergeben require() als argument und die zweite und verbreitet, ist zu automatisch zu laden index.js Datei aus dem Ordner, dies ist, wie viel von NPM-Pakete sind gebaut und wie es ist einfach und standard nach automatisch laden NodeJS-Funktion. Es scheint, die beste Wahl, wenn Sie die Entwicklung eines NPM-Pakets.
In das Ende, wie andere darauf hingewiesen, Sie können wählen Sie eine der drei, oder sogar einen anderen, aber halten Sie sich an Ihre Entscheidung. Meine Entscheidung war immer index.js basierend auf den oben erwähnten Umstand.
Es ist ziemlich einfach!
Wenn Ihre Anwendung ist, um in anderen Anwendungen verwendet werden: index.js
Wenn Ihre Anwendung ist NICHT in anderen Anwendungen verwendet werden: server.js
Wie bereits erwähnt die Gründe, die beim aufrufen
npm start
, falls nicht definiert, wird inpackage.json
, sieht automatisch fürserver.js
. Und wenn darunter ein weiteres Modul in Ihre Anwendung, es sieht fürindex.js
.Extra:
Ich Neige auch zu verwenden nur
index.js
als Datei-Namen, wenn diese automatisch gefunden irgendwie. Dies macht mir bewusst, wenn die Datei aufgerufen wird, direkt oder indirekt.