Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.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_Jquery_Html - Fatal编程技术网

如何将整个JavaScript文件包装到命名函数中?

如何将整个JavaScript文件包装到命名函数中?,javascript,jquery,html,Javascript,Jquery,Html,我的情况如下: 我有4个JS文件——globalCalc.JS、calc1.JS、calc2.JS、calc3.JS。三个calc文件代表不同的计算器。必须加载globalCalc.js才能让每一个计算器都工作。是js将计算器放入DOM中。这是所有第三方代码,不应修改 我的要求是将所有这些计算器以及globalCalc.js放在一个巨大的js文件中。但是,存在名称空间冲突。例如,如果在calc2.js之后加载,则calc1.js将根本不会加载。我试着处理每个calc的初始化函数和重写,但它就是不

我的情况如下:

我有4个JS文件——globalCalc.JS、calc1.JS、calc2.JS、calc3.JS。三个calc文件代表不同的计算器。必须加载globalCalc.js才能让每一个计算器都工作。是js将计算器放入DOM中。这是所有第三方代码,不应修改

我的要求是将所有这些计算器以及globalCalc.js放在一个巨大的js文件中。但是,存在名称空间冲突。例如,如果在calc2.js之后加载,则calc1.js将根本不会加载。我试着处理每个calc的初始化函数和重写,但它就是不动——globalCalc.js的设计方式要求对该文件本身进行大量修改,才能正确加载所有内容

所以,我的想法是以某种方式将这些计算器中的每一个都封装在一个命名函数中,然后从我的HTML调用它。我知道这看起来很愚蠢,因为从技术上讲,我可以简单地发送一个异步GET请求,并在需要时加载计算器,但要求我将它们放在一个文件中

这样做可行吗

function loadCalc1() { 
    / ** the entire calc1 code, i.e. the contents of the calc1.js file **/
};

function loadCalc2() { 
    / ** same as above, except for calc2.js **/
};
然后在我的HTML中有如下内容:

loadCalc1

这是一种方法吗?还是有更好的方法来解决这个问题?除了发送单独的GET请求之外


编辑:我按照我说的解决了我的问题。我只是简单地合并了现有的js文件,之前用上面提到的函数包装它们。在我的脚本标签中,我只是简单地执行该函数,就这样。

如果您可以花一些时间,学习使用,正如blgt所提到的。这是使用Javascript编写适当结构化代码的最佳投资之一

Requirejs将解决名称空间问题,它将节省加载模块的时间,并提供更多优化

如果您没有时间,请看下面这些出色的Javascript模块模式解释:

它们并没有那么难,它们将帮助你保持计算器的独立性,同时又便于使用


祝你好运:-

如果你能花上几个小时,学习使用,就像blgt提到的那样。这是使用Javascript编写适当结构化代码的最佳投资之一

Requirejs将解决名称空间问题,它将节省加载模块的时间,并提供更多优化

如果您没有时间,请看下面这些出色的Javascript模块模式解释:

它们并没有那么难,它们将帮助你保持计算器的独立性,同时又便于使用


祝你好运:-

把4个文件放进1个文件,有点讨厌。为什么不创建一个helper JS文件来加载它们,或者仅仅通过脚本标记按需要的顺序包含它们呢。听起来你在尝试做模糊的面向对象编程。创建一个执行一系列子代码的函数。这通常是使用框架编写的,您无法更改第三方文件。但是你能把它们复制到一个文件中,然后放一些JS吗?@fallereneaper这正是问题所在。如果我将3个计算器的3个单独的脚本标记按任何顺序放置,屏幕上只显示最后一个计算器。对于另外两条评论,我知道这听起来很傻——但这正是我的要求。我希望有自由做我想做的事情。你仍然可以用函数名包装它们,并将它们保存在不同的文件中。这样定义的函数将被执行,文件仍然是分开的。将4个文件放进1个文件中,有点讨厌。为什么不创建一个helper JS文件来加载它们,或者仅仅通过脚本标记按需要的顺序包含它们呢。听起来你在尝试做模糊的面向对象编程。创建一个执行一系列子代码的函数。这通常是使用框架编写的,您无法更改第三方文件。但是你能把它们复制到一个文件中,然后放一些JS吗?@fallereneaper这正是问题所在。如果我将3个计算器的3个单独的脚本标记按任何顺序放置,屏幕上只显示最后一个计算器。对于另外两条评论,我知道这听起来很傻——但这正是我的要求。我希望有自由做我想做的事情。你仍然可以用函数名包装它们,并将它们保存在不同的文件中。这样定义的函数将被执行,文件仍然是分开的。谢谢。不幸的是,对于我和其他人来说,我们不能包含requirejs。不过,我一定会看看你发布的另一个链接。很高兴能帮上忙。通常我们没有太多的自由,但无论如何,重要的工作是通过在模块结构中正确包装代码来完成的,比如var myModule=function{…};等等。这样,我们组织了基本的关系和接口。我只是这样做了——或者说,类似的事情。我
'无论如何,现在可能会使用myModule方式。谢谢。不幸的是,对于我和其他人来说,我们不能包含requirejs。不过,我一定会看看你发布的另一个链接。很高兴能帮上忙。通常我们没有太多的自由,但无论如何,重要的工作是通过在模块结构中正确包装代码来完成的,比如var myModule=function{…};等等。这样,我们组织了基本的关系和接口。我只是这样做了——或者说,类似的事情。无论如何,我现在可能会使用myModule方式。