我们开始使用 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之后,我看到两者相互比较,这让我想知道一些事情。
如果按照我的想法去做,我是否能够在我的 jQuery 小部件中调用 Google Closure 生成的函数来呈现 UI?
如果我离开 jQuery 而只使用 Google Closure 是否足以满足我的要求?
当我开始阅读 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快速掌握闭包模板比学习库或编译器要容易得多,所以我相信您的开发团队可以很快掌握它。我相信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/
我正在学习如何使用Nokogiri,根据这段代码我遇到了一些问题:require'rubygems'require'mechanize'post_agent=WWW::Mechanize.newpost_page=post_agent.get('http://www.vbulletin.org/forum/showthread.php?t=230708')puts"\nabsolutepathwithtbodygivesnil"putspost_page.parser.xpath('/html/body/div/div/div/div/div/table/tbody/tr/td/div
我有一个Ruby程序,它使用rubyzip压缩XML文件的目录树。gem。我的问题是文件开始变得很重,我想提高压缩级别,因为压缩时间不是问题。我在rubyzipdocumentation中找不到一种为创建的ZIP文件指定压缩级别的方法。有人知道如何更改此设置吗?是否有另一个允许指定压缩级别的Ruby库? 最佳答案 这是我通过查看rubyzip内部创建的代码。level=Zlib::BEST_COMPRESSIONZip::ZipOutputStream.open(zip_file)do|zip|Dir.glob("**/*")d
类classAprivatedeffooputs:fooendpublicdefbarputs:barendprivatedefzimputs:zimendprotecteddefdibputs:dibendendA的实例a=A.new测试a.foorescueputs:faila.barrescueputs:faila.zimrescueputs:faila.dibrescueputs:faila.gazrescueputs:fail测试输出failbarfailfailfail.发送测试[:foo,:bar,:zim,:dib,:gaz].each{|m|a.send(m)resc
很好奇,就使用rubyonrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提
假设我做了一个模块如下:m=Module.newdoclassCendend三个问题:除了对m的引用之外,还有什么方法可以访问C和m中的其他内容?我可以在创建匿名模块后为其命名吗(就像我输入“module...”一样)?如何在使用完匿名模块后将其删除,使其定义的常量不再存在? 最佳答案 三个答案:是的,使用ObjectSpace.此代码使c引用你的类(class)C不引用m:c=nilObjectSpace.each_object{|obj|c=objif(Class===objandobj.name=~/::C$/)}当然这取决于
我正在尝试使用ruby和Savon来使用网络服务。测试服务为http://www.webservicex.net/WS/WSDetails.aspx?WSID=9&CATID=2require'rubygems'require'savon'client=Savon::Client.new"http://www.webservicex.net/stockquote.asmx?WSDL"client.get_quotedo|soap|soap.body={:symbol=>"AAPL"}end返回SOAP异常。检查soap信封,在我看来soap请求没有正确的命名空间。任何人都可以建议我
关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。
我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t
我在开发的Rails3网站的一些搜索功能上遇到了一个小问题。我有一个简单的Post模型,如下所示:classPost我正在使用acts_as_taggable_on来更轻松地向我的帖子添加标签。当我有一个标记为“rails”的帖子并执行以下操作时,一切正常:@posts=Post.tagged_with("rails")问题是,我还想搜索帖子的标题。当我有一篇标题为“Helloworld”并标记为“rails”的帖子时,我希望能够通过搜索“hello”或“rails”来找到这篇帖子。因此,我希望标题列的LIKE语句与acts_as_taggable_on提供的tagged_with方法
我想将html转换为纯文本。不过,我不想只删除标签,我想智能地保留尽可能多的格式。为插入换行符标签,检测段落并格式化它们等。输入非常简单,通常是格式良好的html(不是整个文档,只是一堆内容,通常没有anchor或图像)。我可以将几个正则表达式放在一起,让我达到80%,但我认为可能有一些现有的解决方案更智能。 最佳答案 首先,不要尝试为此使用正则表达式。很有可能你会想出一个脆弱/脆弱的解决方案,它会随着HTML的变化而崩溃,或者很难管理和维护。您可以使用Nokogiri快速解析HTML并提取文本:require'nokogiri'h