2009-05-29 9 views
16

In primo luogo, un avvertimento. Lo script principale è non eseguito in una pagina Web. Eseguirò il file .js in Windows usando Windows Script Host.Come posso creare una libreria javascript in un file separato e "includerla" in un'altra?

Il problema: Vorrei creare un javascript "libreria" che contiene una serie di oggetti, ognuno con una serie di funzioni. Immagino che questa libreria diventerà piuttosto grande con il tempo e vorrebbe tenerla in un file javascript separato (chiamiamolo Library.js). Vorrei accedere agli oggetti da Library.js da un altro script (chiamiamolo uno User.js).

In sostanza, sto cercando qualcosa di simile al paradigma "include" di C/C++.

È comunque necessario implementarlo in javascript? (Ricordate, questo non è basato sul web)

+1

Ecco una domanda simile: http://stackoverflow.com/questions/316166/how-do-i-include-a-common-file- in-vbscript-similar-to-c-include – Helen

risposta

19

This page right here è il più vicino che ho trovato. Parla di file .wsf che consentono di combinare più script (che possono essere scritti in lingue diverse) in un unico file.

per la tua domanda dovrebbe essere qualcosa di simile:

user.wsf

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

Ci possono essere modi migliori, ma io non sono un esperto di WSH.

+0

Geesh ... Batteremi alla risposta .... ;-) – Dscoduc

1

È possibile raggiungere il proprio obiettivo utilizzando Windows Scripting Host anziché un file specifico .js o .vbs. Ulteriori informazioni possono essere trovate a the MSDN site.

Dal link:

script di Windows (* .wsf) file è un documento di testo contenente Extensible Markup Language codice (XML). Incorpora diverse funzionalità che ti offrono una maggiore flessibilità di scripting pari a . Poiché i file di script di Windows non sono specifici per il motore , possono contenere lo script da qualsiasi motore di script compatibile con Windows Script . Agiscono come contenitore.

Si potrebbe cal file di lthe utilizzando la stessa sintassi come un js e vbs file:

wscript.exe myScriptFile.wsf

AGGIORNAMENTO: Correzione notato ...

+0

L'host di script è cscript.exe o wscript.exe, non vbscript.exe. – Helen

13

So che questa è una vecchia domanda ed è stata data risposta e accettata.

Conosco file .WSF e come funzionano; servono allo scopo.

Tuttavia, ho anche trovato utile fare "inclusione" all'interno di un puro file .js eseguito in WSH. Ecco la mia soluzione per questo.

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

Con questa funzione di utilità definita, posso fare questo all'interno di un modulo javascript:

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

... e poi posso invocare una delle funzioni o solleticare qualsiasi delle variabili definite quei moduli.

Una tecnica simile funziona con i file .vbs:
How do I include a common file in VBScript (similar to C#include)?

+0

+1 per il collegamento a http://stackoverflow.com/questions/316166 – 0xC0000022L

+3

Ho provato questa funzione 'includeFile' ma sfortunatamente' eval' all'interno di questa funzione non ha effetto per il resto del file. Sembra che "eval" funzioni solo all'interno della funzione e non abbia alcun effetto globale. Ho dovuto fare qualcosa di simile: eval (includeFile ("something.js")); Dove 'includeFile' restituisce il valore' fileData' (restituisce fileData). – MrHIDEn