如何在单独的文件中创建一个javascript库并将其"包含"在另一个文件中?

17 javascript wsh include windows-scripting

首先,一个警告.主脚本不在网页中运行.我将使用Windows脚本宿主在Windows中运行.js文件.

问题: 我想创建一个包含许多对象的javascript"库",每个对象都有许多功能.我希望这个库会随着时间的推移变得相当大,并希望将它保存在一个单独的javascript文件中(我们称之为Library.js).我想从另一个脚本访问Library.js中的对象(让我们称之为User.js).

本质上,我正在寻找类似于C/C++"包含"范例的东西.

反正有没有在javascript中实现这个?(请记住,这不是基于网络的)

Ion*_*tan 21

这页面就是我能找到的最近的页面.它讨论了.wsf文件,它允许您将多个脚本(可以用不同语言编写)组合在一个文件中.

对于你的问题,它应该是这样的:

user.wsf

<job id="IncludeExample">
   <script language="JScript" src="library.js"/>
   <script language="JScript">
      <![CDATA[
      // use your library functions here
      ]]>
   </script>
</job>
Run Code Online (Sandbox Code Playgroud)

可能有更好的方法,但我不是WSH专家.


Che*_*eso 14

我知道这是一个古老的问题,已得到回答和接受.

我知道.WSF文件及其工作原理; 他们服务于此目的.

但是,我也发现在WSH中运行的纯.js文件中执行"包含"很方便.这是我的解决方案.

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

定义了该实用程序功能后,我可以在javascript模块中执行此操作:

includeFile("externalFile1.js");
includeFile("externalFile2.js");
includeFile("etc.js");
Run Code Online (Sandbox Code Playgroud)

...然后我可以调用任何函数或者勾选这些模块中定义的任何变量.

类似的技术适用于.vbs文件:
如何在VBScript中包含公共文件(类似于C#include)?

  • 我试过这个`includeFile`函数,但不幸的是,这个函数里面的`eval`对文件的其余部分没有影响.看起来`eval`只在函数内部起作用,没有全局效应.我不得不做一些事情:eval(includeFile("something.js")); 其中`includeFile`返回`fileData`值(返回fileData). (3认同)