Ist es einfach / möglich, einen einfachen include('./path/to/file')
Befehlstyp in node.js auszuführen?
Ich möchte nur auf lokale Variablen zugreifen und ein Skript ausführen. Wie organisieren Leute normalerweise node.js Projekte, die größer sind als eine einfache Hallo-Welt? (Eine voll funktionsfähige dynamische Website)
Zum Beispiel hätte ich gerne Verzeichnisse wie:
/models
/views
... etc
javascript
node.js
Travis
quelle
quelle
downloadedModules
im selben Verzeichnis wie das Skript aufgerufen wird .Antworten:
Mach einfach eine
require('./yourfile.js');
Deklarieren Sie alle Variablen, auf die Sie von außen zugreifen möchten, als globale Variablen. Also statt
var a = "hello"
es wird seinGLOBAL.a="hello"
oder nura = "hello"
Das ist offensichtlich schlecht. Sie möchten den globalen Bereich nicht verschmutzen. Stattdessen bezieht sich die vorgeschlagene Methode auf
export
Ihre Funktionen / Variablen.Wenn Sie das MVC-Muster möchten, schauen Sie sich Geddy an.
quelle
require
in Ihren npm-Modulen aussieht, wenn Sie Ihrem Pfad nicht so etwas wie./
Sie müssen CommonJS verstehen, ein Muster zum Definieren von Modulen. Sie sollten den GLOBAL-Bereich nicht missbrauchen, was immer schlecht ist. Stattdessen können Sie das Exporttoken wie folgt verwenden:
Und der Client-Code, der unser Modul verwendet:
Dieser Code wurde aus der Dokumentations-API von node.js extrahiert:
http://nodejs.org/docs/v0.3.2/api/modules.html
Wenn Sie etwas wie Rails oder Sinatra verwenden möchten, empfehle ich Express (ich konnte die URL nicht posten, schade um Stack Overflow!)
quelle
Wenn Sie Code für Node schreiben, ist die Verwendung von Node-Modulen, wie von Ivan beschrieben, ohne Zweifel der richtige Weg.
Wenn Sie jedoch JavaScript laden müssen, das bereits geschrieben wurde und den Knoten nicht kennt, ist das
vm
Modul der richtige Weg (und definitiv vorzuzieheneval
).Hier ist zum Beispiel mein
execfile
Modul, das das Skriptpath
entweder imcontext
oder im globalen Kontext auswertet :Beachten Sie auch: Mit geladene Module
require(…)
haben keinen Zugriff auf den globalen Kontext.quelle
require.cache
, sodass eine einzelne Datei möglicherweise mehrmals geladen wird.require
gewohnt:function loadService(name) { return require('./services/' + name); }
Dann listen Sie die Dienste auf, die jedoch für die Anwendung sinnvoll sind.Wenn Sie die Funktionen oder Objekte einer externen Javascript-Datei laden möchten, laden Sie diesen Kontext mit dem folgenden Code - beachten Sie die runInThisContext-Methode:
quelle
Wenn Sie die Antwort von @Shripad und @Ivan erweitern , würde ich empfehlen, die Standardfunktion von module.export von Node.js zu verwenden .
In Ihre Datei für Konstanten ( z. B.
constants.js
) würden Sie Konstanten wie folgt schreiben:Dann in der Datei , in der Sie wollen verwenden diese Konstanten, schreiben Sie den folgenden Code:
Wenn Sie die
const { ... }
Syntax noch nie gesehen haben: Das ist eine destrukturierende Aufgabe .quelle
Entschuldigung für die Auferstehung. Sie können das Modul child_process verwenden, um externe js-Dateien in node.js auszuführen
quelle