2009-05-29 13 views
16

Primero, una advertencia. El script principal es que no se ejecuta en una página web. Voy a ejecutar el archivo .js en Windows usando Windows Script Host.¿Cómo puedo crear una biblioteca de JavaScript en un archivo separado e "incluirla" en otro?

El problema: Me gustaría crear una "biblioteca" javascript que contiene una serie de objetos, cada uno con un número de funciones. Espero que esta biblioteca sea bastante grande con el tiempo y me gustaría mantenerla en un archivo javascript separado (llamémoslo Library.js). Me gustaría acceder a los objetos desde Library.js desde otra secuencia de comandos (llamemos a este User.js).

En esencia, estoy buscando algo similar al paradigma "incluir" de C/C++.

¿Hay alguna forma de implementar esto en javascript? (Recuerde, esto no está basado en la web)

+1

Aquí hay una pregunta similar: http://stackoverflow.com/questions/316166/how-do-i-include-a-common-file- in-vbscript-similar-to-c-include – Helen

Respuesta

19

This page right here es el más cercano que pude encontrar. Habla sobre archivos .wsf que le permiten combinar múltiples scripts (que pueden escribirse en diferentes idiomas) en un solo archivo.

Por su pregunta que debe ser algo como:

user.wsf

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

puede haber mejores maneras, pero no soy un experto en WSH.

+0

Geesh ... Suba a la respuesta ... ;-) – Dscoduc

1

Puede lograr su objetivo utilizando el Windows Scripting Host en lugar de un archivo .js o .vbs específico. Se puede encontrar más información en the MSDN site.

Desde el enlace:

script de Windows (* .wsf) archivo es un documento de texto que contiene Extensible Markup Language código (XML). Incorpora varias características que le ofrecen mayor flexibilidad de scripting. Dado que los archivos de script de Windows no son específicos del motor, pueden contener el script de cualquier motor de scripting compatible con Windows Script . Actúan como un contenedor.

Se podría cal archivo lthe utilizando la misma sintaxis que una .js y .vbs archivo:

wscript.exe myScriptFile.wsf

ACTUALIZADO: corrección señaló ...

+0

El script host es cscript.exe o wscript.exe, no vbscript.exe. – Helen

13

Sé que esta es una pregunta anterior y ha sido respondida y aceptada.

Conozco los archivos .WSF y cómo funcionan; ellos sirven el propósito.

Sin embargo, también me pareció útil hacer la "inclusión" desde un archivo .js puro que se ejecuta en WSH. Aquí está mi solución para eso.

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

Con esa función de utilidad definida, no puedo hacer esto desde dentro de un módulo javascript:

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

... y luego puedo invocar a cualquiera de las funciones o cosquillas a cualquiera de las variables definidas en esos módulos.

Una técnica similar funciona con archivos .vbs:
How do I include a common file in VBScript (similar to C#include)?

+0

+1 para el enlace a http://stackoverflow.com/questions/316166 – 0xC0000022L

+3

Intenté esta función 'includeFile' pero desafortunadamente' eval' dentro de esta función no tiene efecto para el resto del archivo. Parece que 'eval' funciona solo dentro de la función y no tiene un efecto global. Tuve que hacer algo como: eval (includeFile ("something.js")); Donde 'includeFile' devuelve el valor' fileData' (return fileData). – MrHIDEn

Cuestiones relacionadas