it-swarm.com.de

Wofür wird index.js normalerweise in node.js-Projekten verwendet?

Anders als eine nette Möglichkeit, alle Dateien in einem Verzeichnis anzufordern ( node.js erfordert alle Dateien in einem Ordner? ). Was wird index.js hauptsächlich verwendet? Hat es ein "Best Practices" -Programm?

42
alh

Wenn Sie einen Ordner an Nodes 'request () übergeben, wird nach einem package.json für einen Endpunkt gesucht. Wenn dies nicht definiert ist, wird nach index.js und schließlich mit index.node (einem C++ - Erweiterungsformat) gesucht. Daher ist die index.js höchstwahrscheinlich der Einstiegspunkt für das Anfordern eines Moduls.

Die offiziellen Dokumente finden Sie hier: http://nodejs.org/api/modules.html#modules_folders_as_modules .

Sie fragen auch, wie Sie alle Dateien in einem Verzeichnis anfordern müssen. Normalerweise benötigen Sie ein Verzeichnis mit einer index.js, in der die gekapselten Schnittstellen für diese Dateien verfügbar sind. Der Weg, dies zu tun, wird für jedes Modul anders sein. Nehmen Sie jedoch an, Sie wollten den Inhalt eines Ordners einschließen, wenn Sie den Ordner einschließen (beachten Sie, dies ist keine bewährte Methode und wird seltener angezeigt, als Sie denken würden). Dann könnten Sie eine index.js verwenden, die alle Dateien im Verzeichnis synchron lädt (das asynchrone Setzen von Exporten fordert normalerweise nach schrecklichen Fehlern) und hängt sie wie folgt an module.exports an:

var path = require('path'),
    dir = require('fs').readdirSync(__dirname + path.sep);

dir.forEach(function(filename){

    if(path.extname(filename) === '.js' && filename !== 'index.js'){
        var exportAsName = path.basename(filename);
        module.exports[exportAsName] = require( path.join( __dirname, filename) );
    }

});

Ich sehe jedoch kaum Leute, die dieses Muster verwenden wollen - die meiste Zeit möchten Sie, dass Ihre index.js so läuft 

var part1 = require('./something-in-the-directory'),
    part2 = require('./something-else');
....
module.exports = myCoolInterfaceThatUsesPart1AndPart2UnderTheHood;
32
MattNewton

In der Regel sucht der Webserver in anderen Sprachen zuerst nach bestimmten Dateien, die beim Aufrufen eines Verzeichnisses mit der Priorität/geladen werden sollen. Dies ist normalerweise entweder: index oder default. In PHP wäre es index.php oder einfach nur HTML wäre es index.html

In Node.js ist Node selbst der Webserver, sodass Sie nichts index.js benennen müssen , außer es ist leichter zu verstehen , welche Datei ausgeführt werden soll zuerst.

index.js verwaltet normalerweise den Start, das Routing und andere Funktionen Ihrer Anwendung und erfordert andere Module, um Funktionen hinzuzufügen. Wenn Sie eine Website oder eine Web-App ausführen, wird sie auch zu einem grundlegenden HTTP-Webserver, der die Rolle eines traditionelleren Servers wie Apache ersetzt.

11
Steven Leggett

Hier ist ein guter Artikel, der erklärt, wie Node.js für das erforderliche Modul aussieht https://medium.freecodecamp.org/requiring-modules-in-node-js-everything-you-need-to-know-e7fbd119be8 , mit Ordner und index.js Datei

Module müssen keine Dateien sein. Wir können auch einen FindMe-Ordner erstellen unter node_modules und platzieren Sie dort eine index.js -Datei. Das Gleiche In der required ("find-me") -Zeile wird die index.js-Datei dieses Ordners verwendet:

~/learn-node $ mkdir -p node_modules/find-me
~/learn-node $ echo "console.log('Found again.');" > node_modules/find-me/index.js
~/learn-node $ node
> require('find-me');
Found again.
{}
>
1
onmyway133