我最近在开发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的文件有两种声明其依赖性的方法:
进口
显式导入采用以下形式:
/**
* @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项目中使用的东西吗?
答案 0 :(得分:1)
我同意JavaScript开发人员缺少对其项目的正确依赖管理。我并没有完全遵循HTML文件如何导入单个文件js依赖项,然后最终得到所有依赖项。您是否计划过滤HTML文件并用导入的连接类替换脚本导入?
如果你有兴趣,我走了同样的路,结束了https://github.com/ProggerPete/JavaScript-Tools。它对我来说效果很好。
答案 1 :(得分:0)
我认为Bower是有趣的&amp;管理.js依赖关系的正确方法。