2009-05-29 8 views
16

Zuerst ein Vorbehalt. Das Hauptskript ist nicht in einer Webseite ausgeführt. Ich werde die .js-Datei in Windows mit Windows Script Host ausführen.Wie kann ich eine Javascript-Bibliothek in einer separaten Datei erstellen und in einer anderen Datei "einbinden"?

Das Problem: Ich möchte eine Javascript "Bibliothek" mit einer Reihe von Objekten, die jeweils mit einer Reihe von Funktionen. Ich erwarte, dass diese Bibliothek mit der Zeit ziemlich groß wird und möchte es in einer separaten Javascript-Datei behalten (nennen wir es Library.js). Ich möchte auf die Objekte von Library.js von einem anderen Skript zugreifen (nennen wir das User.js).

Im Wesentlichen bin ich auf der Suche nach etwas ähnlich dem C/C++ "include" -Paradigma.

Gibt es trotzdem, dies in Javascript zu implementieren? (Denken Sie daran, dies ist nicht webbasiert)

+1

Hier ist eine ähnliche Frage: http://stackoverflow.com/questions/316166/how-do-i-include-a-common-file- in-vbscript-like-to-c-include – Helen

Antwort

19

This page right here ist das nächstgelegene ich finden konnte. Es spricht über .wsf-Dateien, mit denen Sie mehrere Skripte (die in verschiedenen Sprachen geschrieben sein können) in einer Datei kombinieren können.

Für Ihre Frage sollte es sein, so etwas wie:

user.wsf

<job id="IncludeExample"> 
    <script language="JScript" src="library.js"/> 
    <script language="JScript"> 
     <![CDATA[ 
     // use your library functions here 
     ]]> 
    </script> 
</job> 

Es kann bessere Möglichkeiten, aber ich bin kein Experte WSH.

+0

Geesh ... Beat mich auf die Antwort .... ;-) – Dscoduc

1

Sie können Ihr Ziel erreichen, indem Sie den Windows Scripting Host anstelle einer bestimmten .js- oder .vbs-Datei verwenden. Weitere Informationen finden Sie unter the MSDN site.

Aus dem Link:

Windows-Skript (* WSF-Datei) ist ein Text-Dokument mit Extensible Markup Language (XML) Code. Es enthält mehrere Funktionen, die Ihnen erhöhte Flexibilität bei der Skripterstellung bietet. Da Windows-Skriptdateien nicht Engine-spezifisch sind, können sie Skript von jedem Windows Script kompatible Skript-Engine enthalten. Sie handeln als Container.

würden Sie lthe Datei cal die gleiche Syntax wie eine Js und VBS-Datei mit:

wscript.exe myScriptFile.wsf

AKTUALISIERT: Korrektur bemerkt ...

+0

Der Skript-Host ist entweder cscript.exe oder wscript.exe, nicht vbscript.exe. – Helen

13

Ich weiß, das ist eine alte Frage und es wurde beantwortet und akzeptiert.

Ich weiß über .WSF-Dateien und wie sie funktionieren; sie dienen dem Zweck.

Allerdings habe ich es auch praktisch gefunden, die "Aufnahme" aus einer reinen .js-Datei zu machen, die in WSH läuft. Hier ist meine Lösung dafür.

function includeFile (filename) { 
     var fso = new ActiveXObject ("Scripting.FileSystemObject"); 
     var fileStream = fso.openTextFile (filename); 
     var fileData = fileStream.readAll(); 
     fileStream.Close(); 
     eval(fileData); 
    } 

Mit dieser Nutzenfunktion definiert ist, kann ich dies tun aus einem Javascript-Modul:

includeFile("externalFile1.js"); 
includeFile("externalFile2.js"); 
includeFile("etc.js"); 

... und dann kann ich definiert eine der Funktionen oder kitzeln eine der Variablen aufrufen in diese Module.

Eine ähnliche Technik arbeitet mit vbs-Dateien:
How do I include a common file in VBScript (similar to C#include)?

+0

+1 für den Link zu http://StackOverflow.com/Questions/316166 – 0xC0000022L

+3

Ich habe versucht, diese 'includeFile'-Funktion, aber leider' eval' in dieser Funktion hat keinen Effekt für den Rest der Datei. Es sieht so aus als ob "eval" nur innerhalb der Funktion funktioniert und keinen globalen Effekt hat. Ich musste etwas machen wie: eval (includeFile ("something.js")); Dabei gibt 'includeFile' den Wert 'fileData' zurück (return fileData). – MrHIDEn