36

我在一个大型的基于 Java 的 Web 应用程序上工作,它是在过去 5 年左右的时间里建立起来的——UI 需要大修/大量重写。我们正在研究可用的 UI 工具/库/框架来使用,并且发现dust.js作为模板的一个选项。

问题: 我很想听听dust.js的用户对它的看法:

  1. 它成功了吗?
  2. 这个容易用吗?
  3. 是否有充分的记录?
  4. 社区支持好吗?(ST 上只有 6 个问题标记为“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 的完整方法,则仅在客户端使用;Instead of using a JSP, GSP, or ERB to assemble a page server side and send back HTML, we have the server send back just the dynamic data as JSON and have the page assembled in the browser using a static client-side template served from a CDN"
    2. 完全国际化
    3. 良好的社区支持
    4. 足够容易使用/拿起
    5. 与jQueryBackbone.js一起愉快地工作
    6. 有据可查
4

2 回答 2

41

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

它也在积极维护https://github.com/linkedin/dustjs

  1. 它成功了吗?

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

  2. 这个容易用吗?

    我尝试过使用它,它就像 Mustache 或 Handlebars.js 一样简单。

  3. 是否有充分的记录?

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

  4. 社区支持好吗?(ST 上只有 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 框架一起使用,但我认为它根本不应该是一个问题。

希望有帮助。

于 2012-04-17T16:25:14.937 回答
7
  1. 我现在正在为一家相当大的成熟的利基 IT 公司做一个自由项目,他们选择了dust.js 作为他们的 HTML5 移动应用程序框架。是的,LinkedIn 是一家成功的大公司。

  2. 有点。没什么难的,但我需要习惯它。我在 Java 上使用 Freemarker - 由于许多内置的强大功能,Freemarker 似乎更容易使用。然而,很多人可能会觉得dust.js 不错——它有清晰的逻辑,非常轻量级的语法——dust.js 中有很多东西让很多人真正喜欢。

  3. Freemarker for Java 的文档记录要好得多。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 在这里很有用)以与“核心”版本一起使用. 在这种情况下,您可以大大提高实际性能 - 将所有模板放在一起并缩小它们将使客户端浏览器无需在每次需要时从服务器获取模板。“完整”和“核心”不是关于商业/免费的——核心版本只是没有模板编译器,而是与预编译的模板一起使用。

于 2013-03-03T10:09:02.170 回答