我最近在开发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语句
  • ;或
  • 只需声明一个必需的全局变量。

  • 导入

    显式导入采用以下形式:
    /**
     * @import com.jquery:jquery
     */
    

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

    全局Vars

    代替上面的@import,如果从属文件在全局范围内声明变量,则只需声明所有这些全局符号即可。例如,如果文件需要jQuery:
    var $;
    

    ... $当然是jQuery定义的全局变量。

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

    最后

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

    所以你怎么看?您可以在JS RIA项目中使用此功能吗?

    最佳答案

    我同意JavaScript开发人员缺少对其项目的适当依赖管理。我没有完全遵循HTML文件如何仅导入单个文件js依赖项,然后最终也包含所有依赖项的方式。您是否打算过滤HTML文件并将脚本导入替换为导入的串联类?

    如果您有兴趣,我会走同一条路,然后到达https://github.com/ProggerPete/JavaScript-Tools。对我来说效果很好。

    关于javascript - 您对管理JavaScript依赖项的建议的想法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3766749/

    10-11 22:21
    查看更多