【问题标题】:Jinja-like JS templating language类似 Jinja 的 JS 模板语言
【发布时间】:2012-07-12 19:34:44
【问题描述】:

我真的很喜欢 django/jinja2 模板语言。它们的语法非常简单,但用途广泛。 javascript中的语法和功能是否有类似的东西,或者如果不是两者,至少在功能上。

我查看了下划线、jquery 模板和 mustache 模板,但似乎都不是我想要的。

补充说明

我认为在所有库(我看过)中,mustache 是最好的,但我不太喜欢这种语法。例如这个小胡子模板

{{#people}}
    {{name}}
{{/people}}
{{^people}}
    No people :(
{{/people}}

与 django 的模板相比:

{% for person in people %}
    {{ person.name }}
{% empty %}
     No people :(
{% endfor %}`

应用过滤器也是一样的。例如:

{{#filter}}{{value}}{{/filter}}

{{ value|filter }}

我认为 django/jinja2 方法更干净,感觉更自然。

那么,是否有任何 js 库可以提供与 django/jinja 非常相似的模板?如果不是,我想我必须忍受 muschache(或者可能是其他一些好的 js 库——我愿意接受建议),但这感觉不对。

谢谢。

【问题讨论】:

标签: javascript jquery jinja2 template-engine language-comparisons


【解决方案1】:
【解决方案2】:

来自@pradeek 评论的链接。它是 jinja 到 js 的一个端口。

https://github.com/ericclemmons/jinja.js

【讨论】:

  • 167.667 kb - 更好地启用 gzip
【解决方案3】:

一个javascript模板库,旨在兼容django的模板语言

Plate

【讨论】:

    【解决方案4】:

    我的 JavaScript Jinja 实现可以在这里找到: https://github.com/sstur/jinja

    它同时支持 Jinja 和 Liquid 语法,在浏览器和 Node 中运行,将模板编译为无依赖的 JavaScript,压缩后大小约为 3K

    http://sstur.com/jinja/demo/

    包括测试。 Express.js 支持正在进行中..

    【讨论】:

      【解决方案5】:

      twig.js 看起来也很有趣,而且重量比盘子还轻 https://github.com/justjohn/twig.js

      【讨论】:

        【解决方案6】:

        我在 Python 中使用过 Jinja2,现在我在 Node.js 平台上的另一个项目中使用 jinjs。

        https://github.com/ravelsoft/node-jinjs

        【讨论】:

          【解决方案7】:

          编辑:不再维护

          Swig 是一个很棒的、类似于 Django/Jinja 的模板引擎,适用于 node.js 和浏览器。

          <h1>{{ pagename|title }}</h1>
          <ul>
          {% for author in authors %}
              <li{% if loop.first %} class="first"{% endif %}>{{ author }}</li>
          {% endfor %}
          </ul>
          

          可以添加自定义标签,实现各类模板语法:

          {% filter %}{{value}}{% endfilter %}
          {% filter 'value' %}
          {{ value | filter }}
          

          旁注:您可以使用 Django 的 request.is_ajax() 有条件地发回未渲染的 Django 模板,并使用 Swig 使用 JSON 对象渲染它。

          【讨论】:

          • 我支持这个,特别是因为 Express 兼容性!
          【解决方案8】:

          看看Nunjucks,一个深受 Jinja2 启发的 JS 模板引擎。它支持块继承、宏、过滤器等等,并且可以在服务器端(NodeJS)和客户端(大多数浏览器)工作。

          【讨论】:

          • 对于像我这样迟到的人来说,Nunjucks 是这里列出的唯一一个在 github 上仍然有活动的项目。它由 Mozilla 运营,因此可能不会很快消失......
          • Nunjucks 不再维护
          • @felipecrp Nunjucks 肯定仍在维护中。提交、PR、大量活动github.com/mozilla/nunjucks
          • @KayakinKoder 现在有了。 :) 但是在发表评论时,他们正在寻找维护者。 github.com/mozilla/nunjucks/commit/…
          猜你喜欢
          • 2017-12-06
          • 2010-11-30
          • 2011-12-21
          • 2010-10-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多