代码之家  ›  专栏  ›  技术社区  ›  Christopher Hunt

您对管理JavaScript依赖关系的建议有何看法

  •  3
  • Christopher Hunt  · 技术社区  · 14 年前

    Rich Internet Application . 在开发之初,我的观点与现在差不多;JS-RIA可以工作,但是缺少开发工具。

    我特别怀念的一个工具是管理依赖关系。我发现,我最终得到了很多HTML页面,声明了它们所有的JS文件依赖关系,这变得很难维护。

    我想知道的是你对我从事的一个项目的看法: Maven JavaScript导入

    声明依赖项

    我的想法基于使用Maven将JS文件声明为依赖项。这就是我在pom文件中声明jQuery的项目依赖关系的方式:

    <dependency>
      <groupId>com.jquery</groupId>
      <artifactId>jquery</artifactId>
      <version>1.4.2</version>
      <type>js</type>
    </dependency>
    

    依赖jQuery的文件有两种声明依赖关系的方法:

    1. 只需声明一个必需的全局变量。

    显式导入的形式如下:

    /**
     * @import com.jquery:jquery
     */
    

    如您所见,导入的格式是 <groupId>:<artifactId> . 该方法的优点是没有在具有依赖关系的js文件中声明文件/版本信息。这些GAV参数解析为POM文件中声明的构件。

    全局变量

    与上面的@import不同,如果依赖文件在全局范围内声明变量,则只需声明其中任何一个全局符号即可。例如,如果文件需要jQuery:

    var $;
    

    并不是所有依赖项都声明全局符号,这就是为什么也建议使用@import,但是我认为声明所需的符号是很好和干净的(而且符合JSLint!)。

    总之

    最终,需要JS资源的HTML文件只声明它需要的直接文件,而不是它的所有依赖项。我的Maven插件将运行所有JS文件(源文件和依赖项),并构建一个符号树。任何包含资源的HTML文件都会有插件注入的脚本元素,以确保包含所有依赖项。当一个项目的阶段被执行时,比如在测试之前,或者在资源阶段执行之前,这些都会以神奇的Maven方式发生。

    你觉得呢?这是你在JS-RIA项目中可能用到的东西吗?

    2 回复  |  直到 14 年前
        1
  •  1
  •   Programming Guy    13 年前

    我同意JavaScript开发人员对他们的项目缺少适当的依赖关系管理。我不完全理解一个HTML文件是如何只导入一个文件js依赖项,然后最终得到所有依赖项的。您是否计划过滤HTML文件,并将脚本导入替换为串联类的导入?

    如果你感兴趣的话,我也走过同样的路 https://github.com/ProggerPete/JavaScript-Tools . 对我来说效果还不错。

        2
  •  0
  •   Jarek Krochmalski    11 年前

    Bower 是管理.js依赖项的有趣且正确的方法。

    推荐文章