nodejs 的模板引擎选择

最近想写一个专题页工具,因为我们比较多专题页,但专题页又大多数差不多,因而想写个工具来根据 数据+模板 生成对应的专题页,提高开发效率。

最开始的想法是分析目前模板页的共性,然后写一个可视化的专题页编辑工具,就是类似各种在线制作 h5 的那种工具。但是这个开发成本会比较高,周期也会比较长,投入和产出的性比价不是很高。

昨晚在浏览网页时,无意看到了模板引擎 pug(就是原来的 jade,作者创新改了个名字)。大概浏览了下 pug 的文档,发现它支持 API 编程。然后就有了新的思路:通过 node+模板引擎,根据数据和专题页模板来生成专题页。这个思路比之前的会简单很多,开发成本和周期都会更低。

要求

既然是写一个基于 node 模板引擎的 cli 工具,首先要选择合适的模板引擎。所以,对模板引擎会有如下几个基本要求:

文档友好

支持 api 编程

社区活跃(是否在维护和更新;issues 和 pr 的处理速度等)

功能越丰富越好

于是,就搜罗了 node 端的模板引擎。

常见引擎

node 端的常见引擎有如下几个:swig/pug(jade)/mustache/ejs/doTjs/handlebars/dustjs/nunjucks/art-template 等

underscore 和 lodash 也提供了模板渲染的功能,但是我认为它们更适合作为 js 的函数功能库,在模板渲染上的能力会稍弱,所以就不列举了。

以上数据截止到2018-04-21 14:20

从以上数据基本可以得出以下几个结论:

从 stars 数据上看,pug 是目前很受开发者欢迎的模板引擎

从 issues 和 contributors 的数据来看,pug 目前的社区活跃度是很好的

综合上述数据来看,目前社区比较接受的模板引擎是 pug、 handlebars 和 nunjucks,其中,nunjucks 属于 mozilla 的开源项目

另外在收集数据时,还发现以下几个问题:

dustjs/swig 基本处于不再维护的状态:dustjs 的最后一个commit 和 release 2016年12月份;swig 的最后一个commit 和 release 分别在 2016年8月和2014年8月

doT 的最后一个 commit 在 2017 年9月 最后一次 release 在2017年2月 pr 和 issue 积累历史久远 很多都没处理

mustache 最后一次 commit 2017/8 最后一次 release 2016/11

所以从选择上来说,就基本会排除了 dustjs、swig、doT 以及 mustache,剩下可供选择的有 pug、ejs、handlebars、nunjucks 以及 art-template,这些都支持 api 编程。

但从文档和功能上看,会排除 art-template 以及 ejs。art-template 是国人开发的,目前功能上比其它几个稍逊色了一点;我觉得ejs 的文档不是很友好,在 api 编程的能力上稍差一点。

pug、handlebars 以及 nunjucks 基本都满足了我对模板引擎的几个要求,pug/nunjucks 有中文文档,而 handlebars 我之前有接触过,是比较熟悉的一个模板引擎。但从我搜索的资料来看,pug 和 handlebars 的受众和使用者会多于 nunjucks,这也意味着相关的资料或者问题解决方案也会比较多,但 nunjucks/pug 在 api 编程上会强于 handlebars,文档也更加友好,所以综合权衡,排除 nunjucks 和 handlebars,选择 pug 作为 cli 工具的模板引擎。

除了在 github 上的数据,在今后的技术选型上,也可以去参考对应技术框架在 stackoverflow 上的数据,甚至还可以参考对应关键字在谷歌搜索上的变化趋势,这些都可以作为技术选型的一些依据。

当然,「脱离业务和团队成员的背景谈技术选型都是耍流氓」。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180421G0QRRK00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券