代码之家  ›  专栏  ›  技术社区  ›  Tom Dalling

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

  •  4
  • Tom Dalling  · 技术社区  · 14 年前

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

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

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

    但是这允许包含文件而不依赖它们,这也很烦人。例如,假设有 ClassA ClassB ,和“B.js类“那么,HTML中就没有了 甲级 import 语句,所以在本例中,我实际上希望所有内容都在一个文件中。

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

    1 回复  |  直到 14 年前
        1
  •  3
  •   Eugene Ramirez    14 年前

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

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

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

    3. Lazyload javascript library . 基本上,我声明了某些代码的依赖关系,就像Java中的“import”,然后在调用它们之前,我加载它们的依赖关系。这允许在没有脚本冗余的情况下优化依赖项加载。问题是您需要编写一些相当复杂的脚本来实现这一点。

    希望对你有所帮助。