我正在研究JavaScript模板作为渲染视图的一种方式。目标是能够为启用JavaScript的用户客户端呈现,并为那些没有启用JavaScript的用户(和网络爬虫)服务器端呈现相同的模板/数据。
要求
- 客户端渲染。
- 服务器端渲染(JVM支持是一个好的补充)。
- 合理支持循环、条件语句、文本操作、部分内容、宏和扩展/插件。
- 有相当大/活跃的用户社区支持。
- Mustache:支持服务器和客户端渲染,拥有庞大/活跃的社区,但是“无逻辑”的模板似乎非常受限制和痛苦。
- Node.js 加上 underscore:像underscore这样的JS模板提供了我需要的所有模板灵活性,但使用Node.js在服务器端呈现它们非常脆弱。node.js是新的且相当不稳定,其软件包管理(exports…)需要很多技巧才能正常工作。
- Google Closure Templates:这些编译为JS和Java,并具有我想要的许多功能。不幸的是,在浏览Google组时,似乎缺少许多基本功能(例如能够循环遍历关联数组),而制作自己的插件的文档非常稀少和令人痛苦。此外,我无法确定在线社区中谁在使用它,Google不接受对其进行开源贡献,并且他们没有带宽来发布新功能。
- isotope:使用Johnson(Mozilla SpiderMonkey JS运行时的Ruby封装程序)在服务器端呈现JS模板。看起来很有前途,但该项目已经超过6个月没有提交过代码。
- Liquid与Liquid.js:Liquid模板语言看起来很棒,但是liquid.js项目似乎没有经过测试(在IE中没有测试!),没有文档,不清楚是否有人使用它,并且已经有一段时间没有更新了。