【问题标题】:Browser compatible NodeJS templating浏览器兼容的 NodeJS 模板
【发布时间】:2011-04-30 14:13:27
【问题描述】:

我希望在浏览器中重用我为 NodeJS 编写的模板,借此我希望获得快速的页面加载时间(初始渲染)和动态内容切换能力等......

这在 Node 上是最自然的,有兼容模板引擎的想法吗?

顺便说一句,我喜欢 HAML 风格的语法,所以任何基于 HAML 的东西都是一个巨大的优势。

谢谢! 罗马

编辑: 我认为我最喜欢 Mustache 的方法,它适用于 Express,也适用于客户端.. 将在此处更新实现方式..

【问题讨论】:

    标签: node.js haml


    【解决方案1】:

    Jade 非常棒,与 HAML 非常相似,并且可以编译成 JavaScript 供浏览器使用 :)

    有关详细信息,请参阅Github repo 上的自述文件。

    Jade 也是目前最流行的 Node Web 框架Express 的半官方推荐模板语言(事实上,他们共享作者),所以对我来说它看起来是个不错的选择。

    我最近评估了很多 NodeJS 模板库,最终选择了 Jade。

    我创建了一个simple example of using Jade in the browser。有趣的事情发生在demo.js,您还可以查看包含基本页面标记的index.jade

    【讨论】:

    • 您能否链接一些在浏览器中使用Jade 的示例以及API 的外观。
    • 我已经添加了small example,正如上面的答案中提到的:)
    • 谢谢,但似乎 Jade 在 FF3 中不起作用(根据列表),在 iPad 上也不起作用 =/
    【解决方案2】:

    EJS 在浏览器中工作,并且开箱即用。诚然,该语法不是HANL风格,也不是特别丰富的功能,但您可以轻松使用它。

    我还使用了simple technique 在客户端和服务器上重复使用模板和视图,它运行得相当好

    【讨论】:

      【解决方案3】:

      JAVASCRIPT TEMPLATE SHOWDOWN!~

      几乎所有最好的模板都在浏览器中进行测试。

      (还有@Raynos,它在浏览器中包含了一个翡翠的例子)

      我个人使用 Jade,结合手写笔和 jquery 我只使用 css 选择器。

      但是。 . .从图表中可以看出,Jade 无法与 firefox 3 或 opera 相处。

      【讨论】:

      • 我上面的示例在我拥有的所有浏览器中都可以正常工作(尝试了 Opera 10 和 11)。不过我没有FF3,所以我不能保证。
      • 至于渲染速度,我认为我不会对大多数应用程序产生太大影响,因为在 DOM 中插入渲染标记所花费的时间比任何模板引擎渲染的时间都要长,更不用说首先花在获取数据上的时间了。一个人当然有权使用他想要的任何模板库,但我认为没有理由为了可疑的性能提升而牺牲便利性:)
      • 它也不能与 iPad 相处,尽管我很想忽略苹果,但我不能:(
      • 谷歌浏览器有没有结果(应该和node.js速度差不多)?该网站无法在我使用的任何浏览器中运行。只有旧版本 1 可以。
      【解决方案4】:

      您可以尝试在服务器端和客户端实现焊接https://github.com/hij1nx/weld

      【讨论】:

        【解决方案5】:

        node-jqtpl 是您最好的选择。它是jQuery Templates 的端口,因此可以在浏览器中100% 重用。

        【讨论】:

          【解决方案6】:

          有一个用 Node.js 编写的类似命令的实用程序 TplCpl,它允许编译 Jade 模板以供浏览器使用。

          https://github.com/jsmarkus/tplcpl

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-11-25
            • 2012-10-19
            • 2012-08-09
            • 2015-03-07
            相关资源
            最近更新 更多