19

Tôi thực sự thích các ngôn ngữ tạo ngôn ngữ django/jinja2. Cú pháp của chúng cực kỳ đơn giản và rất linh hoạt. Có bất cứ điều gì tương tự như trong cả cú pháp và khả năng trong javascript, hoặc nếu không phải cả hai, ít nhất là trong khả năng.Ngôn ngữ lập trình JS giống như Jinja

Tôi đã xem các mẫu gạch dưới, mẫu jquery và mẫu ria mép và không có mẫu nào trong số đó dường như là những gì tôi đang tìm kiếm.

Ghi chú thêm

Tôi nghĩ rằng trong số tất cả libs (Tôi nhìn) ria mép là tốt nhất nhưng tôi không thực sự thích cú pháp. Ví dụ bộ ria mép này mẫu

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

so với mẫu django của:

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

Ngoài ra điều tương tự cho áp dụng bộ lọc. Ví dụ:

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

vs

{{ value|filter }} 

Tôi nghĩ rằng cách tiếp cận django/jinja2 sạch hơn và chỉ cảm thấy tự nhiên hơn.

Vì vậy, có thư viện js nào thực hiện các mẫu rất giống với django/jinja không? Nếu không, tôi đoán tôi phải sống với muschache (hoặc có thể một số thư viện js tốt khác - tôi mở để suggesstions), nhưng nó chỉ cảm thấy không đúng.

Cảm ơn bạn.

+0

Tính năng nào bị thiếu trong bộ ria mép? – pradeek

+0

tham khảo thêm ghi chú – miki725

+2

Có một [cổng JavaScript cho Jinja] (https://github.com/ericclemmons/jinja.js) nhưng tôi chưa đích thân thử nó. – pradeek

Trả lời

2

một mẫu thư viện javascript, nhằm mục đích là tương thích với ngôn ngữ mẫu django của

Plate

5

My thực hiện Javascript Jinja có thể được tìm thấy ở đây: https://github.com/sstur/jinja

Nó hỗ trợ cả Jinja và cú pháp lỏng, chạy trên trình duyệt và trong Node, sẽ biên dịch các mẫu để sự phụ thuộc free JavaScript, và khoảng 3K gzip

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

Các thử nghiệm bao gồm. hỗ trợ Express.js cơ bản dở dang ..

3

Swig là một tuyệt vời, Django/Jinja giống như mẫu động cơ cho Node.js và trình duyệt.

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

Bạn có thể thêm các thẻ tùy chỉnh để đạt được nhiều loại hình mẫu cú pháp:

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

Side-lưu ý: Bạn có thể sử dụng Django request.is_ajax() có điều kiện gửi lại một un-rendered Django mẫu và sử dụng Uống một lân để render nó với một đối tượng JSON.

+1

Tôi thứ hai, đặc biệt vì khả năng tương thích Express! – DandyDev

12

Hãy xem Nunjucks, một công cụ tạo khuôn mẫu JS được lấy cảm hứng từ Jinja2. Nó hỗ trợ khối thừa kế, macro, bộ lọc và nhiều hơn nữa và hoạt động cả máy chủ (NodeJS) và phía máy khách (hầu hết các trình duyệt).

+4

Đối với bất cứ ai khác là muộn cho bữa tiệc như tôi, Nunjucks là dự án duy nhất được liệt kê ở đây mà vẫn có hoạt động trên github. Nó được điều hành bởi Mozilla, vì vậy có lẽ sẽ không biến mất bất cứ lúc nào sớm ... –

+0

Nunjucks không còn được duy trì – felipecrp

+0

@felipecrp Nunjucks chắc chắn vẫn đang được duy trì. Cam kết, PR, rất nhiều hoạt động https://github.com/mozilla/nunjucks – KayakinKoder

Các vấn đề liên quan