我在一个基于Java的大型Web应用程序上工作,它已经在过去5年左右的时间内建立起来 - UI需要进行大修/大量重写。我们正在研究可用的UI工具/库/框架,并将dust.js作为模板选项。
问题: 我很想听听dust.js的用户是怎么想的:
某些背景:
为什么我们对dust.js感兴趣:以下LinkedIn博客帖子首先引起我们的注意:
The client-side templating throwdown: mustache, handlebars, dust.js, and more
这两篇文章中的第二篇很好地回答了问题5,但是除了LinkedIn之外,很少有来自谷歌的结果详细说明模板系统或者暗示它是一个受欢迎的选择。此外,帖子提到他们已经扩展了功能,并希望有一天能够为原始项目做出贡献。我担心在他们这样做之前,我们可能还需要扩展功能。
话虽如此,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"
答案 0 :(得分:40)
Dust.js是个不错的选择。它比其他一些模板框架更好,因为它不会限制数据应该在文件中,或在字符串中等。
此外,它正在积极维护https://github.com/linkedin/dustjs。
成功了吗?
是的,我知道至少LinkedIn正在使用它,还会提供改进/补丁等。
易于使用吗?
我尝试过使用它,就像Mustache或Handlebars.js一样简单。
是否有足够的文件记录?
社区支持是否良好? (ST上标记'dust.js'只有6个问题!)
如果您正在比较Mustache或Handlebars.js,dust.js没有那么多用户,但我相信如果您有问题并将其发布在LinkedIn repo上,他们肯定会回复。我也会因为我看着它: - )
与其他模板工具(如Underscore的模板,Google Closure模板,Handlebars和Mustache)相比,有什么优缺点。
至于专业人士,你可以在这里考虑何时考虑使用dust.js https://github.com/linkedin/dustjs#readme。
至于缺点,与Mustache或Handlebars.js等流行的用户相比,没有足够的用户使用dust.js。也就是说,Google Closure等其他库也遇到了同样的问题。
但正如我之前提到的,与其他框架相比,dust.js设计得非常好。
使用MV *结构框架是否有任何问题,例如Backbone.js(在线图书)?
我没有将它与其他MVC框架一起使用,但我认为它根本不应该是一个问题。
希望有所帮助。
答案 1 :(得分:6)
我正在为一家规模较大且成熟的小众IT公司做一个自由职业项目,他们为他们的HTML5移动应用框架选择了dust.js。是的,LinkedIn是一家成功的大公司。
排序。没什么难的,但我需要习惯它。我在Freemarker上使用Java - Freemarker因为有很多内置的电源功能而显得更加容易使用。然而,许多人可能会发现dust.js很好 - 它有清晰的逻辑,非常轻量级的语法 - 在dust.js中有很多东西可以为很多人所喜欢。
Freemarker for Java记录得更好。 dust.js的GitHub页面对初学者来说非常好,但是,例如,我找不到所有dust.js过滤器的描述,需要在Google上搜索它 - 但是,这个搜索很容易为我提供了信息我需要的。
没有看到很多社区支持,但图书馆非常轻巧和清晰 - 我只需要几次Google搜索就可以收集所有必要信息。
没有使用其他JS模板工具。
我在第一个问题的答案中提到的公司已经使用dust.js以及jQuery和Backbone.js构建了一个轻量级的HTML5框架。我正在为他们使用该框架进行项目,并一直使用jQuery和Backbone.js功能 - 没有什么可抱怨的。 dust.js有点像Backbone.js - 轻量级,并没有对你的编码风格或你使用的其他库施加太多限制。使用它你会看到有一些优选形式的JS对象,你用它来提供数据,但它很容易习惯(我的意思是如果你需要在视图中列出某些东西,最好用列表提供dust.js)而不是JS对象哈希,它同时在描述单独的实体时是很自然的。)
关于性能的一件事 - 您可以使用“完整”版本开发您的应用程序,然后编译您的模板以进行生产(例如使用node.js + dust.js npm模块 - grunt在这里很有用)以便与“核心“版本。在这种情况下,您可以在实际性能方面获得相当大的提升 - 将所有模板放在一起并缩小它们将使客户端浏览器无需在每次需要时从服务器获取模板。 “完整”和“核心”不是关于商业/免费的 - 核心版本没有模板编译器,而是与预编译模板一起使用。