25

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

我查看了下划线、jquery 模板和 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 库——我愿意接受建议),但这感觉不对。

谢谢你。

4

8 回答 8

18

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

于 2014-04-03T20:55:42.773 回答
7

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

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

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

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

于 2013-02-10T15:02:03.380 回答
4

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

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

于 2012-08-12T04:47:19.017 回答
4

编辑:不再维护

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 }}

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

于 2013-12-26T22:43:41.797 回答
2

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

盘子

于 2012-11-13T08:51:16.243 回答
1

这是非常新的:angularjs http://googledevelopers.blogspot.nl/2012/06/better-web-templating-with-angularjs-10.html

于 2012-07-13T17:24:54.160 回答
0

我已经将 Jinja2 与 Python 一起使用,现在我在 Node.js 平台上的另一个项目中使用 jinjs。

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

于 2013-10-30T04:25:30.040 回答
0

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

于 2013-02-13T14:19:57.473 回答