Laden und Ausführen einer externen js-Datei in node.js mit Zugriff auf lokale Variablen?
Ist es einfach/möglich, um einen einfachen include('./path/to/file')
Typ des Befehls in node.js?
Alles was ich will zu tun ist, haben Zugriff auf lokale Variablen und ein Skript ausführen. Wie gehen die Menschen in der Regel organisieren node.js Projekte, die größer sind als eine einfache "hello world"? (Eine voll funktionsfähige dynamische website)
Zum Beispiel würde ich gerne Verzeichnisse wie:
/models
/views
... etc
InformationsquelleAutor der Frage Travis | 2010-12-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einfach eine
require('./yourfile.js');
Deklarieren alle Variablen, die Sie wollen Zugriff von außen als Globale Variablen.
Also anstatt
var a = "hello"
es wirdGLOBAL.a="hello"
oder nura = "hello"
Dies ist offensichtlich schlecht. Sie wollen nicht von der Verschmutzung der globalen scope.
Statt der empfehlen-Methode ist
export
Ihre Funktionen/Variablen.Wenn Sie möchten, dass das MVC-pattern anschauen, Geddy.
InformationsquelleAutor der Antwort Shripad Krishna
Müssen Sie verstehen, CommonJS, das ist ein Muster zu definieren-Module. Sie sollten nicht zu missbrauchen GLOBALE Reichweite, ist immer eine schlechte Sache zu tun, anstatt Sie mit dem 'Export' - token, wie diese:
- Und client-code, verwenden Sie unser Modul:
Dieser code stammt von node.js Dokumentation API:
http://nodejs.org/docs/v0.3.2/api/modules.html
Auch, wenn Sie möchten, verwenden Sie so etwas wie Rails oder Sinatra, ich empfehle Express (konnte ich nicht posten, die URL, Schande auf Stack Overflow!)
InformationsquelleAutor der Antwort Ivan Torres
Wenn Sie code schreiben, für die Knoten, die mittels Node-Module wie beschrieben von Ivan ist ohne Zweifel der Weg zu gehen.
Allerdings, wenn Sie brauchen, um das laden von JavaScript, die bereits geschrieben wurden, und ist sich nicht bewusst von Knoten, die
vm
- Modul ist der Weg zu gehen (und auf jeden Fall vorzuzieheneval
).Zum Beispiel, hier ist mein
execfile
- Modul, das wertet das script anpath
entwedercontext
oder globalen Kontext:Beachten Sie auch: die Module geladen mit
require(…)
keinen Zugriff auf den globalen Kontext.InformationsquelleAutor der Antwort David Wolever