Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 用于客户端和服务器端呈现的模板语言_Javascript_Templates_Client Side_Server Side - Fatal编程技术网

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

Javascript 用于客户端和服务器端呈现的模板语言,javascript,templates,client-side,server-side,Javascript,Templates,Client Side,Server Side,我正在研究JavaScript模板作为呈现视图的一种方式。目标是能够为启用了JavaScript的用户呈现客户端,以便为那些没有启用JavaScript的用户(和爬虫)呈现相同的模板/数据服务器端 要求 客户端渲染 服务器端呈现(JVM支持一个很好的应用程序) 对循环、条件、文本操作、部分、宏和扩展/插件的合理支持 相当大/活跃的用户社区 目前发现的不满意解决方案 :支持服务器端和客户端呈现、大型/活动社区,但“无逻辑”模板似乎限制性很强,也很痛苦 另外:像下划线这样的JS模板提供了我所需要的所

我正在研究JavaScript模板作为呈现视图的一种方式。目标是能够为启用了JavaScript的用户呈现客户端,以便为那些没有启用JavaScript的用户(和爬虫)呈现相同的模板/数据服务器端

要求

  • 客户端渲染
  • 服务器端呈现(JVM支持一个很好的应用程序)
  • 对循环、条件、文本操作、部分、宏和扩展/插件的合理支持
  • 相当大/活跃的用户社区
  • 目前发现的不满意解决方案

  • :支持服务器端和客户端呈现、大型/活动社区,但“无逻辑”模板似乎限制性很强,也很痛苦
  • 另外:像下划线这样的JS模板提供了我所需要的所有模板灵活性,但是使用Node.JS在服务器端呈现它们是非常脆弱的。node.js是一个新的、相当不稳定的包管理(导出…)需要很多技巧才能正常工作
  • :这些可编译为JS和Java,并具有许多我想要的功能。不幸的是,浏览谷歌群组时,很多基本功能似乎都缺失了(比如功能),而且看起来非常稀疏和痛苦。此外,我不知道在线社区中有谁在使用它,谷歌不接受开源贡献,他们也没有足够的带宽来发布新功能
  • :用JS编写模板,并使用Mozilla SpiderMonkey JS运行时的Ruby包装器在服务器端呈现这些模板。看起来很有希望,但是这个项目已经有6个多月没有承诺了
  • 使用:Liquid模板语言看起来很棒,但是Liquid.js项目似乎没有经过测试(在IE中没有测试!),没有文档,不清楚是否有人使用它,而且它已经有一段时间没有更新了
  • 我会选择XSLT()

    使用。它几乎具备了你要求的所有功能

    它可以与express.js一起使用,并且在客户机上运行良好

    作为奖励,我将使用backbone.js在客户机和服务器上进行MVC


    当然,这依赖于node.js。我觉得使用express、now和backbone可以让您在node.js中实现很多稳定的控制。更不用说SSJS非常棒,代码重用也非常棒

    我们最后选择了。查看并获取更多信息。

    EJS看起来确实是一种非常好的模板语言。我唯一担心的是node的稳定性/成熟度,以及您需要单独获取ejs帮助程序()。@YevgeniyBrikman没有意识到我必须单独获取这些帮助程序。我喜欢写很多真正的HTML…而express助手不能正常工作。尝试按照他们的指示设置
    app=helpers.all(app)导致Node.js抛出带有instanceof check的异常。Gah,这个node.js对于这个项目来说可能太不成熟了。@YevgenlyBrikman不使用帮助程序。问题解决了。node的问题是很多早期的插件没有升级到与0.4兼容的版本。我在W3S上找不到关于这个主题的任何信息。。。你能说得更具体一点吗?我没有否决你的答案,也没有使用XSLT,只是想在提到w3schoolsXSLT是一种笨重、内存不足、笨拙的技术之后,让事情变得合理。可能是XML书籍中唯一一个允许声明性树转换的。人们喜欢这个概念,但它的实际工作是可怕的。这是一个有趣的话题。由于您需要同时支持服务器端和客户端的模板语言,我有点好奇服务器端模板引擎如何正确处理服务器端动态内容上的模板,并保持客户端内容(包括模板说明)不变。