javascript - 将 Google 闭包模板与 jQuery 结合使用

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

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

最佳答案

Closure Library 和 Closure Templates 不相互依赖,因此您当然可以将 Closure Templates 与 jQuery 一起使用,而无需引入 Closure Library 或 Closure Compiler。要将模板与 jQuery 一起使用,您可以使用 SoyToJsSrcCompiler.jar as described in the documentation 翻译您的 Closure Template 文件(也称为“Soy”文件)。 .然后每个 Soy 文件都有一个 JavaScript 文件,其中每个 JavaScript 文件包含对应 Soy 文件中定义的每个模板的一个函数。

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

  • soyutils.js
  • 从 Soy 生成的 JavaScript
  • jQuery 库
  • 您的应用程序代码,可能同时依赖于 jQuery 和您的模板函数。

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

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

关于javascript - 将 Google 闭包模板与 jQuery 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6870874/

相关文章:

javascript - 在 Node.js 附加代码中使用 Nan 创建数组

javascript - css3或jquery不透明动画效果

javascript - 如何使用 JQuery 和 Rails 创建类似 Wufoo(表单生成器)的 Web 应用程序?

javascript - 如何在 JQuery 中获取正确的数组长度

javascript - 需要找到替代 Plaxo 帐户的添加小部件

javascript - 在小部件加载 jquery 后嵌入 jquery 脚本

javascript - 使用Javascript检索帐户的所有子帐户

javascript - Jquery 移动设备中的导航面板

php - JQUERY - PHP - MySQL - 添加结果数组,添加更多信息

browser - 带有 Eclipse 4 RCP 应用程序的 SWT 浏览器小部件