您对管理JavaScript依赖项的提议的看法

时间:2010-09-22 06:15:03

标签: javascript maven-2 dependencies mojo

我最近在开发Rich Internet Application的过程中完成了大量的JavaScript编程。我在开发之初的观点几乎就是它现在的样子; JS RIA可以工作,但缺乏开发工具。

我特别想念的一个工具是管理依赖项。我发现我最终得到了许多HTML页面,声明了他们所有的JS文件依赖性,而且这很难维护。

我想知道的是您对我开始实施的项目的看法: Maven JavaScript Import 。我的意图是最终将该项目作为开源发布,但目前我只是在修补它(虽然已经开发了很多)。

声明依赖关系

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

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

然后依赖于jQuery的文件有两种声明其依赖性的方法:

  1. 通过注释块中的@import语句;或
  2. 只需声明一个必需的全局变量。
  3. 进口

    显式导入采用以下形式:

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

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

    Global Vars

    如果依赖文件在全局范围内声明变量,则只需声明任何这些全局符号即可,而不是上述@import。例如,如果文件需要jQuery:

    var $;
    

    ...因为$当然是jQuery定义的全局。

    并非所有依赖项都声明了全局符号,这也是为什么提出@import的原因,但我认为声明所需的符号是好的和干净的(并且符合JSLint!)。

    总结

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

    那你觉得怎么样?这是你可以在JS RIA项目中使用的东西吗?

2 个答案:

答案 0 :(得分:1)

我同意JavaScript开发人员缺少对其项目的正确依赖管理。我并没有完全遵循HTML文件如何导入单个文件js依赖项,然后最终得到所有依赖项。您是否计划过滤HTML文件并用导入的连接类替换脚本导入?

如果你有兴趣,我走了同样的路,结束了https://github.com/ProggerPete/JavaScript-Tools。它对我来说效果很好。

答案 1 :(得分:0)

我认为Bower是有趣的&amp;管理.js依赖关系的正确方法。