2012-07-12 109 views
19

我真的很喜欢django/jinja2模板语言。他们的语法非常简单,但却非常灵活。在JavaScript中是否有类似于语法和能力的东西,或者如果不是两者,至少在能力上是如此。Jinja-like JS模板语言

我看着下划线,jquery模板和小胡子模板,并且它们都不是我正在寻找的东西。

其他注意事项

我想出来的所有库(我看了一下)胡子是最好的,但我真的不喜欢的语法。例如,这胡子模板

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

相比,Django的模板:

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

还为应用滤镜同样的事情。例如:

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

VS

{{ value|filter }} 

我认为Django的/ Jinja2的方法更干净,只是感觉更自然。

那么,有没有js库的模板非常类似于django/jinja?如果不是这样,我想我必须和muschache一起生活(或者其他一些好的js库 - 我愿意提供),但是它感觉不对。

谢谢。

+0

小胡子中缺少哪些功能? – pradeek 2012-07-13 01:37:10

+0

参考其他注意事项 – miki725 2012-07-13 04:34:40

+2

有一个[Jinja的JavaScript端口](https://github.com/ericclemmons/jinja.js),但我还没有亲自尝试过。 – pradeek 2012-07-13 05:46:10

回答

3

Swig是node.js的和浏览器的真棒,Django的/神社类模板引擎。

<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的模板,并使用痛饮使用JSON对象进行渲染。

+1

我第二次,尤其是因为Express兼容性! – DandyDev 2014-01-10 14:44:06

12

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

+4

对于和我一样迟到的其他人,Nunjucks是这里列出的唯一一个仍在github上进行活动的项目。它由Mozilla运行,因此很可能不会很快消失... – 2015-09-14 02:09:27

+0

Nunjucks不再维护 – felipecrp 2017-04-20 21:29:32

+0

@felipecrp Nunjucks肯定还在维护中。提交,PR,大量的活动https://github.com/mozilla/nunjucks – KayakinKoder 2017-11-17 18:45:55