登录
注册
node.js 学习社区
客户端模板引擎的选择

阿拉磕巴

2014-12-05 00:44

参考:http://engineering.linkedin.com/frontend/client-side-templating-throwdown-mustache-handlebars-dustjs-and-more

主要的客户端模板引擎

1、允许嵌入JavaScript的模板引擎:可嵌入任何JavaScript代码

  • underscore.js
  • Jade
  • haml-js
  • jQote2
  • doT
  • Stencil
  • Parrot
  • Eco
  • EJS
  • jQuery templates
  • node-asyncEJS

2、无逻辑的模板引擎:只有一些简单的循环、判断逻辑,并且使用的是模板语法而不是JS语法

  • mustache
  • dust.js
  • handlebars
  • Google Closure Templates
  • Nun
  • Mu
  • kite

如何选择模板引擎

如果要严格执行业务逻辑和表现分类的原则,则不要选择可嵌入JS的模板引擎,从机制上避免越界的可能性。此外,选择模板引擎还应考虑以下因素:

  • 是否可以同时在客户端和服务器端执行渲染;
  • 是否支持表现层逻辑,即根据数据内容,选择性渲染样式或内容;
  • 是否支持文本格式化,例如是否可以将JSON字符串中的\n替换成《br/》;

Linkedin公司经过比较,选择dust.js作为其客户端模板技术,主要基于以下考虑:

  • 缓存:与服务器端模板相比,客户端模板可以通过内容分发网络CDN提供,以降低延迟和带宽占用。另外模板文件可在浏览器端缓存,因此一旦模板初次加载后,服务器只需要提供动态数据(例如JSON),这样效率非常高;
  • 性能:dust.js可以被预编译为高效的JavaScript函数;
  • 浓缩:模板可以分解为小片段,HTML标记和渲染逻辑可重用,即便后台采用不同的技术堆栈(Java Ruby等);
  • 解耦:dust.js模板鼓励表现层和应用层、业务逻辑分离;
  • 跨浏览器、跨库:dust.js和所有现代浏览器兼容,可以和各种JS类库同时使用,例如YUI 和
    jQuery。它默认禁止一些不合适的用法,帮助我们预防XSS攻击;
  • 服务器端支持:如果你有一个客户端不能运行JavaScript,例如搜索引擎爬虫,那么页面必须在服务器端渲染。dust.js模板不仅支持客户端渲染,也可以通过 node.js 或 Rhino在服务器端渲染;
  • 渐进渲染:dust.js模板支持同步或异步渲染,因此可将耗时的操作放在背后进行,其他事情可以先完成。当在服务器端渲染时,同样可将某些内容优先渲染,这样用户很快就能看到一些东西;
  • 简单、强大、开放:dust.js模板语法易于学习和扩展。Linkedin开发了dust helpers类库,以清晰的方式实现格式化、国际化、表现层逻辑等功能;

原文引自:http://cnodejs.org/topic/517263de6d38277306defb40

回复 · 1

  • hello!我是社交APP「她说」的HR。她说是由红杉资本投资,是一款高质量的陌生人社交产品,业内好评度很高。现在正处于高速发展阶段。想找一位优秀的Node.js研发工程师一起打造杰出的产品。岗位base在北京朝阳门银河SOHO。如感兴趣,可以发简历至邮箱:hr@intelcupid.com,或者加我微信1229100802哈~

    0

发表回复

你可以在回复中 @ 其他人