客户端和服务器端呈现的模板语言

时间:2011-03-31 02:52:43

标签: javascript templates client-side server-side

我正在研究JavaScript模板,以此来呈现我们的观点。目标是能够为已启用JavaScript的用户呈现客户端,以便为那些没有启用JavaScript的用户(和爬虫)呈现相同的模板/数据服务器端。

要求

  1. 客户端渲染。
  2. 服务器端呈现(JVM支持一个很好的)。
  3. 合理支持循环,条件,文本操作,部分,宏和扩展/插件。
  4. 合理的大/活跃用户群。
  5. 到目前为止找不到令人满意的解决方案

    1. Mustache:支持服务器和客户端渲染,大/活动社区,但“无逻辑”模板似乎非常严格和痛苦。
    2. Node.jsunderscore:像下划线这样的JS模板提供了我需要的所有模板灵活性,但使用Node.js在服务器端渲染它们非常脆弱。 node.js是新的并且相当不稳定,它的包管理(导出...)需要大量的黑客才能使事情正常工作。
    3. Google Closure Templates:这些编译成JS和Java并具有我想要的许多功能。不幸的是,浏览Google群组时,似乎缺少许多基本功能(例如loop over associative arrays的能力),而documentation for making your own plugins看起来非常稀疏和痛苦。此外,我不知道在线社区中有谁在使用它,谷歌不接受开源贡献,而且他们没有带宽来发布新功能。
    4. isotope:在JS中编写模板,并使用Johnson(Mozilla SpiderMonkey JS运行时的Ruby包装器)来渲染这些模板服务器端。看似很有希望,但该项目在6个多月内没有提交。
    5. LiquidLiquid.js:Liquid模板语言看起来很棒,但liquid.js项目似乎未经测试(在IE中没有测试!),没有文档,不清楚是否有人使用它,并且暂时没有更新。

3 个答案:

答案 0 :(得分:3)

使用EJS。它几乎得到了你提出的所有功能。

它可以与开箱即用的express.js一起使用,并且在客户端上运行良好。

作为奖励,我会使用backbone.js在客户端上进行MVC&服务器

当然这确实依赖于node.js.我觉得使用快递,现在& backbone允许你使用node.js进行大量稳定控制。更不用说SSJS简直太棒了,重复使用代码非常棒。

答案 1 :(得分:1)

我们最终选择dust.js。查看Leaving JSPs in the dustThe client-side templating throwdown了解详情。

答案 2 :(得分:-1)