3

我最近在开发富 Internet 应用程序的上下文中完成了大量的 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. 只需声明一个所需的全局变量。

进口

显式导入采用以下形式:

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

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

全局变量

而不是上面的@import,如果一个依赖文件在全局范围内声明变量,那么只需声明任何这些全局符号就可以了。例如,如果一个文件需要 jQuery:

var $;

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

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

综上所述

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

所以你怎么看?这是您可能在 JS RIA 项目中使用的东西吗?

4

2 回答 2

1

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

如果您有兴趣,我已经走过了同样的道路并最终获得了https://github.com/ProggerPete/JavaScript-Tools。它对我来说效果很好。

于 2011-12-07T00:50:02.217 回答
0

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

于 2013-09-16T09:50:11.753 回答