5

我们开始使用 JavaScript 和 HTML5 创建一个应用程序,它将使用 REST API 访问服务器资源,利用我们的开发团队已经熟悉的 jQuery 的出色和易用性。此应用程序将制作多语言版本。我们后来决定使用 JavaScript 编写 DOM,这将允许我们灵活地使用我们的 UI 位与我们的其他应用程序集成,并将使用 jQuery UI 小部件创建我们自己的小部件。然后,只需在我们其他应用程序的相关页面中添加一个引用 JavaScript 文件的脚本标记,我们就可以完成该特定功能的大部分集成。

因为使用 JavaScript 创建 DOM 需要大量编码,所以我们开始寻找可以帮助我们轻松地将 HTML 转换为 JavaScript 以创建 UI 的工具,因此 Google Closure Templates 出现了。

此时我想到的是,使用 Google 闭包来编写 UI DOM 位,因为它可以快速为我的 DOM 提供 JavaScript,然后为其他 JavaScript(即用于服务器端通信和其他 UI 逻辑,如一旦获得更改 UI来自服务器的响应和 x 应该在单击 z 类的东西时变为 y)需要手写,我应该使用易于编写的 jQuery。

但是在看了这个问题之后,我发现两者都是相互比较的,这让我对一些事情感到疑惑。

  1. 如果我按照我当时的想法去做,我能否在我的 jQuery 小部件中调用 Google Closure 生成的函数来呈现 UI?

  2. 如果我离开 jQuery 并只使用 Google Closure 是否足以满足我的要求?

  3. 当我开始阅读 Google Closure 文档时,我发现它拥有自己的全新世界,并且涉及到学习曲线。这个多少钱?如果它不是很多,那么我们的 5 名开发人员团队将准备好学习它。

在 2 和 3 上,如果任何已经使用过它的人都可以提供一些见解,那就太好了。

注意:- 以防万一它有任何相关性,我们正在为服务器端开发 Microsoft .NET 堆栈。

4

1 回答 1

8

闭包库和闭包模板不相互依赖,因此您当然可以在 jQuery 中使用闭包模板,而无需引入闭包库或闭包编译器。要将模板与 jQuery 一起使用,您SoyToJsSrcCompiler.jar 需要按照文档中的说明翻译您的 Closure Template 文件(又名“Soy”文件) 。然后,您将为每个 Soy 文件拥有一个 JavaScript 文件,其中每个 JavaScript 文件包含在相应 Soy 文件中定义的每个模板的一个函数。

要使用生成的 JavaScript 函数,您还必须包含soyutils.js,它是生成函数所需的一组实用程序。因此,您的生产系统应包含以下按此顺序连接/缩小的 JavaScript 文件:

  • soyutils.js
  • 从大豆生成的 JavaScript
  • jQuery 库
  • 您的应用程序代码,大概取决于 jQuery 和您的模板函数。

掌握闭包模板的速度比学习库或编译器要容易得多,所以我相信您的开发团队可以快速掌握它。我相信在线文档很详尽,不会让人不知所措,因此语法和用法应该不需要很长时间才能学习。

请注意,如果您决定在某个时候使用 Closure 库而不是 jQuery,则应该包含soyutils_usegoog.js而不是soyutils.js。尽管如果您在拥有大量代码后决定重写应用程序逻辑以依赖闭包库而不是 jQuery,那么这个小改动可能是您最不关心的!也就是说,我确信您最终可以使用 Google Closure 编写整个应用程序,但是对于大型应用程序从一个 JavaScript 库迁移到另一个库可能需要进行大量代码更改,以至于您可能过于害怕而无法进行迁移。

于 2011-08-02T15:34:20.153 回答