17

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

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

本质上,我正在寻找类似于 C/C++“包含”范式的东西。

无论如何在javascript中实现这个?(请记住,这不是基于网络的)

4

3 回答 3

21

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

对于您的问题,它应该类似于:

用户.wsf

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

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

于 2009-05-29T21:45:04.443 回答
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);
    }

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

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

...然后我可以调用任何函数或处理这些模块中定义的任何变量。

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

于 2011-04-29T17:45:28.747 回答
1

您可以通过使用 Windows 脚本宿主而不是特定的 .js 或 .vbs 文件来实现您的目标。更多信息可以在MSDN 站点上找到。

从链接:

Windows 脚本 (*.wsf) 文件是包含可扩展标记语言 (XML) 代码的文本文档。它包含了一些特性,可以为您提供更高的脚本编写灵活性。因为 Windows 脚本文件不是特定于引擎的,所以它们可以包含来自任何与 Windows 脚本兼容的脚本引擎的脚本。它们充当容器。

您可以使用与 .js 和 .vbs 文件相同的语法来调用文件:

wscript.exe myScriptFile.wsf

更新:更正指出...

于 2009-05-29T21:50:33.683 回答