2009-05-29 5 views
16

D'abord, une mise en garde. Le script principal est non exécuté dans une page Web. Je vais exécuter le fichier .js dans Windows en utilisant Windows Script Host.Comment puis-je créer une bibliothèque javascript dans un fichier séparé et "l'inclure" dans un autre fichier?

Le problème: Je voudrais créer une « bibliothèque » javascript contenant un certain nombre d'objets, chacun avec un certain nombre de fonctions. Je m'attends à ce que cette bibliothèque devienne plutôt volumineuse avec le temps et que je souhaite la conserver dans un fichier javascript séparé (appelons-le Library.js). Je voudrais accéder aux objets de Library.js à partir d'un autre script (appelons celui-ci User.js).

En substance, je cherche quelque chose de similaire au paradigme "include" de C/C++.

Y a-t-il un moyen de l'implémenter en javascript? (Rappelez-vous, ce n'est pas basé sur le Web)

+1

Voici une question similaire: http://stackoverflow.com/questions/316166/how-do-i-include-a-common-file- in-vbscript-similar-to-c-include – Helen

Répondre

19

This page right here est le plus proche que je pouvais trouver. Il parle des fichiers .wsf qui vous permettent de combiner plusieurs scripts (qui peuvent être écrits dans différentes langues) dans un seul fichier.

Pour votre question, il devrait être quelque chose comme:

user.wsf

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

Il peut y avoir de meilleures façons, mais je ne suis pas un expert en WSH.

+0

Geesh ... Battez-moi à la réponse .... ;-) – Dscoduc

1

Vous pouvez atteindre votre objectif en utilisant Windows Scripting Host au lieu d'un fichier .js ou .vbs spécifique. Plus d'informations peuvent être trouvées au the MSDN site.

À partir du lien: Fichier

script Windows (* .wsf) est un texte document contenant le code de balisage extensible Language (XML). Il intègre plusieurs fonctionnalités qui vous offrent une plus grande flexibilité de script. Parce que les fichiers de script Windows ne sont pas spécifiques au moteur , ils peuvent contenir le script à partir de n'importe quel moteur de script compatible Windows Script . Ils agissent en tant que conteneur.

Vous cal fichier lthe en utilisant la même syntaxe que un fichier .js et .vbs:

wscript.exe myScriptFile.wsf

MISE À JOUR: correction noté ...

+0

L'hôte de script est soit cscript.exe ou wscript.exe, pas vbscript.exe. – Helen

13

Je sais que c'est une vieille question et il a été répondu et acceptée.

Je connais les fichiers .WSF et leur fonctionnement; ils servent le but.

Cependant, j'ai également trouvé pratique d'effectuer l'inclusion à partir d'un fichier .js pur qui s'exécute dans WSH. Voici ma solution pour cela.

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

Avec cette fonction d'utilité définie, je peux le faire à partir d'un module javascript:

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

... puis je peux invoquer l'une des fonctions ou chatouiller l'une quelconque des variables définies dans ces modules.

Une technique similaire fonctionne avec les fichiers .vbs:
How do I include a common file in VBScript (similar to C#include)?

+0

+1 pour le lien vers http://stackoverflow.com/questions/316166 – 0xC0000022L

+3

J'ai essayé cette fonction 'includeFile' mais malheureusement' eval' dans cette fonction n'a pas d'effet pour le reste du fichier. Il semble que 'eval' ne fonctionne que dans la fonction et n'a pas d'effet global. J'ai dû faire quelque chose comme: eval (includeFile ("something.js")); Où 'includeFile' renvoie la valeur' fileData' (return fileData). – MrHIDEn

Questions connexes