2012-07-12 111 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