Подтвердить что ты не робот

Jinja-like JS templating language

Мне очень нравятся языки программирования django/jinja2. Их синтаксис чрезвычайно прост и в то же время очень универсален. Есть ли что-то подобное в синтаксисе и возможностях в javascript, или, если не в обоих, по крайней мере в возможностях.

Я посмотрел на подчеркивание, шаблоны jquery и шаблоны усов, и ни один из них, похоже, не был тем, что я ищу.

Дополнительные примечания

Я думаю, что из всех libs (я смотрел) усы являются лучшими, но мне не очень нравится синтаксис. Например, этот шаблон усов

{{#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? Если нет, я полагаю, что мне нужно жить с музыкой (или, может быть, с какой-то другой хорошей библиотекой js), я открыт для предложений, но это просто не так.

Спасибо.

4b9b3361

Ответ 2

Посмотрите Nunjucks, двигатель JS-шаблонов, сильно вдохновленный Jinja2. Он поддерживает наследование блоков, макросы, фильтры и многое другое и работает как на сервере (NodeJS), так и на стороне клиента (большинство браузеров).

Ответ 3

Моя реализация JavaScript Jinja можно найти здесь: https://github.com/sstur/jinja

Он поддерживает синтаксис Jinja и Liquid, работает в браузере и в Node, будет компилировать шаблоны для JavaScript без зависимостей и составляет около 3K gzipped

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

Включены тесты. Поддержка Express.js.

Ответ 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 }}

Боковое примечание. Вы можете использовать Django request.is_ajax(), чтобы условно отправить обратно необработанный шаблон Django и использовать Swig для рендеринга его с помощью объекта JSON.

Ответ 5

библиотека шаблонов javascript, предназначенная для совместимости с языком шаблонов django

Plate

Ответ 8

Я использовал Jinja2 с Python, и теперь я использую jinjs в другом проекте на платформе Node.js.

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