【问题标题】:How can I create a javascript library in a separate file and "include" it in another?如何在单独的文件中创建 javascript 库并将其“包含”在另一个文件中?
【发布时间】:2010-10-30 00:26:57
【问题描述】:

首先,请注意。主脚本不在网页中运行。我将使用 Windows Script Host 在 Windows 中运行 .js 文件。

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

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

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

【问题讨论】:

标签: javascript include wsh windows-scripting


【解决方案1】:

This page right here 是我能找到的最接近的。它讨论了 .wsf 文件,它可以让您将多个脚本(可能用不同的语言编写)组合在一个文件中。

你的问题应该是这样的:

user.wsf

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

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

【讨论】:

    【解决方案2】:

    我知道这是一个老问题,并且已被回答和接受。

    我了解 .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 文件:
    How do I include a common file in VBScript (similar to C #include)?

    【讨论】:

    • 我试过这个includeFile 函数,但不幸的是这个函数内部的eval 对文件的其余部分没有效果。看起来eval 只在函数内部起作用,没有全局影响。我不得不做出一些思考: eval(includeFile("something.js"));其中includeFile 返回fileData 值(返回文件数据)。
    【解决方案3】:

    您可以通过使用 Windows 脚本宿主而不是特定的 .js 或 .vbs 文件来实现您的目标。更多信息请访问the MSDN site

    来自链接:

    Windows 脚本 (*.wsf) 文件是文本 包含可扩展标记的文档 语言 (XML) 代码。它包含 为您提供的几个功能 增加了脚本的灵活性。 因为 Windows 脚本文件不是 特定于引擎的,它们可以包含 来自任何 Windows 脚本的脚本 兼容的脚本引擎。他们行动 作为一个容器。

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

    wscript.exe myScriptFile.wsf

    更新:更正说明...

    【讨论】:

    • 脚本宿主要么是cscript.exe要么是wscript.exe,不是vbscript.exe。
    猜你喜欢
    • 2010-10-31
    • 2023-03-18
    • 1970-01-01
    相关资源
    最近更新 更多