【问题标题】:Using Google Closure Templates with jQuery在 jQuery 中使用 Google 闭包模板
【发布时间】:2011-07-29 09:01:34
【问题描述】:

我们开始使用 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。

但是在查看this question 之后,我发现两者是相互比较的,这让我对一些事情感到疑惑。

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

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

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

关于 2 和 3,如果任何已经使用过它的人能够提供一些见解,那就太好了。

注意:- 以防万一,我们正在为服务器端开发 Microsoft .NET 堆栈。

【问题讨论】:

  • 你考虑过 jquery 模板吗? Goog 库本身就是一个完整的框架,比 jQuery 更复杂。
  • 你想做什么? Google Closure Templates 和 Google Closure Library 是不共享任何依赖关系的不同软件。
  • @marc,这是否意味着,我将能够在我的 jQuery 小部件中调用由 Google Closure Templates 生成的函数来呈现 UI?
  • 恕我直言,是的,因为它与 无关
  • 是的,我认为这是一种不会引起问题的方法。

标签: javascript jquery widget google-closure google-closure-library


【解决方案1】:

闭包库和闭包模板不相互依赖,因此您当然可以在 jQuery 中使用闭包模板,而无需引入闭包库或闭包编译器。要在 jQuery 中使用模板,您可以使用 SoyToJsSrcCompiler.jar as described in the documentation 翻译您的闭包模板文件(又名“Soy”文件)。然后,您将为每个 Soy 文件创建一个 JavaScript 文件,其中每个 JavaScript 文件包含在相应 Soy 文件中定义的每个模板的一个函数。

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

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

熟悉闭包模板比学习库或编译器要容易得多,因此我相信您的开发团队可以快速掌握它。我相信online documentation 很透彻,不会让人不知所措,所以语法和用法应该不会花很长时间来学习。

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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-01
  • 1970-01-01
  • 2011-12-01
  • 2015-06-24
  • 1970-01-01
相关资源
最近更新 更多