Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在单独的文件中创建javascript库和;包括「;它在另一个地方吗?_Javascript_Include_Wsh_Windows Scripting - Fatal编程技术网

如何在单独的文件中创建javascript库和;包括「;它在另一个地方吗?

如何在单独的文件中创建javascript库和;包括「;它在另一个地方吗?,javascript,include,wsh,windows-scripting,Javascript,Include,Wsh,Windows Scripting,首先是一个警告。主脚本未在网页中运行。我将使用Windows脚本主机在Windows中运行.js文件 问题: 我想创建一个javascript“库”,其中包含许多对象,每个对象都有许多函数。我希望这个库随着时间的推移会变得相当大,并且希望将它保存在一个单独的javascript文件中(我们称之为library.js)。我想从另一个脚本访问Library.js中的对象(我们称之为User.js) 本质上,我正在寻找类似于C/C++“包含”范式的东西 是否有办法在javascript中实现这一点?(

首先是一个警告。主脚本未在网页中运行。我将使用Windows脚本主机在Windows中运行.js文件

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

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


是否有办法在javascript中实现这一点?(请记住,这不是基于web的)

这个phpjs实现可能会有所帮助

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

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

user.wsf

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


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

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

从链接:

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

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

wscript.exe myScriptFile.wsf


更新:已更正…

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

我知道.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文件:

该解决方案针对浏览器。脚本主机是cscript.exe或wscript.exe,而不是vbscript.exe。这里有一个类似的问题:我尝试了此
includeFile
函数,但不幸的是,此函数中的
eval
对文件的其余部分无效。它看起来像
eval
只在函数内部工作,没有全局效果。我不得不这样想:eval(includeFile(“something.js”);其中
includeFile
返回
fileData
值(返回fileData)。