Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/442.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_Namespaces_Module - Fatal编程技术网

如何将多个文件放入单个命名空间/模块中?(javascript)

如何将多个文件放入单个命名空间/模块中?(javascript),javascript,namespaces,module,Javascript,Namespaces,Module,我一直在阅读有关模块模式的内容,但我所阅读的所有内容都假定模块的全部内容将在一个文件中。我想每个班有一个文件 我在每个文件的顶部都这样做: if(window.ModuleName === undefined) { window.ModuleName = {}; } ModuleName.ClassName = function () { ... } 但这允许文件在没有依赖项的情况下被包含,这也很烦人。例如,假设有ClassA使用ClassB,而HTML中没有“ClassB.js”,那么Cl

我一直在阅读有关模块模式的内容,但我所阅读的所有内容都假定模块的全部内容将在一个文件中。我想每个班有一个文件

我在每个文件的顶部都这样做:

if(window.ModuleName === undefined) { window.ModuleName = {}; }

ModuleName.ClassName = function () { ... }
但这允许文件在没有依赖项的情况下被包含,这也很烦人。例如,假设有
ClassA
使用
ClassB
,而HTML中没有“ClassB.js”,那么
ClassA
将抛出错误。据我所知,Javascript缺少一个
import
语句,所以在本例中,我实际上希望所有内容都在一个文件中


我假设大型javascript项目被分解成多个文件,因此必须有一种方法来解决这个问题。一般是怎么做的?是否有一些工具可以将多个类文件合并到一个模块文件中?

这是一个很大的主题,但让我尽可能多地解释一下。Javascript要求您已经预加载了任何您想要使用的东西,这就是为什么您的模块模式将所有“东西”都放在同一个文件中的原因。但是,如果您计划将它们分离到不同的文件中,那么您必须在使用之前对其进行管理。我建议采取以下办法

  • 在服务器中为它们提供服务之前将它们连接起来。例如,在jsp中,您可以创建一个返回contenttype=“text/javascript”的servlet,在该servlet中,您可以将所需的所有脚本附加到一个动态生成的脚本中,然后将其返回给客户端

  • 在您的ant或maven构建等中,有一些配置,您可以将它们连接到您想要的文件中。这是一种常见的做法,因此你应该在互联网上找到许多参考资料

  • 延迟加载Java脚本。这是我喜欢的方式。我用。基本上,我声明了某些代码的依赖关系,就像Java中的“import”一样,然后在调用它们之前,我加载它们的依赖关系。这允许在没有脚本冗余的情况下优化依赖项加载。问题是您需要编写一些相当复杂的脚本来完成这项工作


  • 希望能有所帮助。

    +1-我会创建一个大的javascript文件并缩小它。你也应该将这种方法应用到你的css中。谢谢你提供了信息丰富的答案。另一方面,我查看了jQuery项目makefile,看起来他们有一个手工制作的文件列表,这些文件与
    cat
    连接在一起。