选择合适的UI模板工具 - dust.js?

36

我在一款基于Java的大型Web应用程序上工作,它已经建立了约5年左右 - UI需要全面改进/重新编写。我们正在调查可用的UI工具/库/框架,并发现dust.js是一个模板选项。

问题: 我想听听使用dust.js的用户对其的看法:

  1. 它成功了吗?
  2. 它容易使用吗?
  3. 是否有足够的文档资料?
  4. 社区支持好吗?(仅有6个关于ST标记为“dust.js”的问题!)
  5. 与其他模板工具(如Underscore模板,Google Closure TemplatesHandlebarsMustache)相比的优缺点是什么?
  6. 在MV*结构框架下使用它是否存在任何问题,例如Backbone.js在线书籍)?

一些背景:

  • 为什么我们对dust.js感兴趣:以下LinkedIn博客文章首先引起了我们的关注:

    • 离开JSP:将LinkedIn迁移到dust.js客户端模板
    • 客户端模板之争:mustache、handlebars、dust.js等

      这两篇文章中的第二篇回答了问题5,但除了LinkedIn外,Google上很少有关于该模板系统的详情或暗示它是一个受欢迎的选择。此外,文章提到他们已经扩展了功能,并希望有一天能为原项目做出贡献。我担心在他们贡献之前,我们也需要扩展功能。

      话虽如此,LinkedIn对于模板系统的最初要求与我们非常接近(见下文),并且他们显然在选择之前进行了非常彻底的调查。

  • 我们的要求:

    1. DRY:我们理想情况下希望在服务器(基于Java)和客户端使用模板系统,或者如果我们选择LinkedIn的完整方法,则仅在客户端使用它;而不是使用JSP、GSP或ERB来组装服务器端页面并返回HTML,我们让服务器仅返回动态数据作为JSON,并使用从CDN提供的静态客户端模板在浏览器中组装页面
    2. 完全国际化
    3. 良好的社区支持
    4. 足够易于使用/掌握
    5. 能够与jQueryBackbone.js很好地配合使用
    6. 文档齐全

这是我发现的一个不错的小测试页面:http://linkedin.github.com/dustjs/test/test.html - Ed .
2个回答

41

Dust.js是一个不错的选择。它比一些其他的模板框架更好,因为它不限制数据必须在文件中或字符串中等存储。

此外,它也在积极地维护中 https://github.com/linkedin/dustjs

  1. 它成功吗?

    是的,我至少知道LinkedIn正在使用它并贡献改进/补丁等。

  2. 它易于使用吗?

    我尝试过使用它,和Mustache或Handlebars.js一样容易。

  3. 文档是否充足?

    是的 http://akdubya.github.com/dustjs

  4. 社区支持如何?(仅6个关于'dust.js'的标记问题!)

    如果你正在比较Mustache或Handlebars.js,dust.js没有那么多的用户,但我相信如果你有问题并在LinkedIn库上发布了它,他们肯定会回应。我也会回复,因为我正在关注它 :-)

  5. 与其他模板工具(如Underscore的模板、Google Closure Templates、Handlebars和Mustache)相比,有哪些优缺点。

    至于优点,你可以在这里查看何时应该考虑使用dust.js https://github.com/linkedin/dustjs#readme

    至于缺点,与像Mustache或Handlebars.js这样流行的库相比,dust.js没有足够的用户。尽管如此,其他库如Google Closure也存在同样的问题。

    但正如我之前提到的,我个人认为dust.js设计得非常好,比其他框架要好。

  6. 在MV*结构框架(例如Backbone.js)中使用它会有什么问题吗?

    我没有在其他MVC框架中使用过它,但我认为这应该不是问题。

希望能够帮到你。


谢谢,我在搜索中错过了这个页面 - https://github.com/linkedin/dustjs - Ed .
http://engineering.linkedin.com/frontend/client-side-templating-throwdown-mustache-handlebars-dustjs-and-more - bora.oren
Paypal也在客户端和服务器端渲染中使用它。 - ontk

7
  1. 我现在为一家规模相当大且成熟的IT公司做自由职业项目,他们选择了dust.js作为其HTML5移动应用程序框架。是的,LinkedIn是一家庞大而成功的公司。

  2. 有点。没有什么真正困难的事情,但我需要适应它。我曾经使用Java上的Freemarker——因为内置的强大功能很多,Freemarker似乎更容易使用。然而,许多人可能会觉得dust.js很好——它有清晰的逻辑,非常轻量级的语法——dust.js中有很多值得喜欢的东西。

  3. Java上的Freemarker文档要好得多。dust.js的GitHub页面对于初学者来说非常不错,但例如,我找不到所有的dust.js过滤器的描述,需要在Google上搜索——然而,这次搜索很容易提供我所需要的信息。

  4. 没有看到太多社区支持,但库确实非常轻量级和清晰——只需要进行几次Google搜索,就可以收集到所有必要的信息。

  5. 没有使用其他JS模板工具。

  6. 我在第一个问题的答案中提到的那家公司使用dust.js与jQuery和Backbone.js一起构建了一个轻量级的HTML5框架。我正在使用该框架为他们完成这个项目,并随时利用jQuery和Backbone.js功能,没有任何抱怨。dust.js有点像Backbone.js——轻量级,不会对您的编码风格或其他使用的库施加太多限制。使用它,您将看到有一些优选的JS对象形式可以用来向其提供数据,但很容易适应(我的意思是,如果您的视图需要某些东西的列表,则最好使用列表来向dust.js提供数据,而不是JS对象哈希表,同时也自然地描述分离的实体)。

关于性能的一件事——您可以使用“完整”版本开发应用程序,然后将您的模板编译为生产环境(例如使用node.js + dust.js npm模块,grunt在这里可能会有用),以与“核心”版本配合使用。在这种情况下,您可以在现实世界中获得相当大的性能提升——将所有模板放在一起并对其进行压缩将使客户端浏览器免于每次需要时从服务器获取模板。“完整”和“核心”不是商业/免费的问题——核心版本只是没有模板编译器,并且应与预编译的模板一起使用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接