Ответ 1
Ссылка из комментария @pradeek. Это порт jinja для js.
Мне очень нравятся языки программирования 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), я открыт для предложений, но это просто не так.
Спасибо.
Ссылка из комментария @pradeek. Это порт jinja для js.
Посмотрите Nunjucks, двигатель JS-шаблонов, сильно вдохновленный Jinja2. Он поддерживает наследование блоков, макросы, фильтры и многое другое и работает как на сервере (NodeJS), так и на стороне клиента (большинство браузеров).
Моя реализация JavaScript Jinja можно найти здесь: https://github.com/sstur/jinja
Он поддерживает синтаксис Jinja и Liquid, работает в браузере и в Node, будет компилировать шаблоны для JavaScript без зависимостей и составляет около 3K gzipped
Включены тесты. Поддержка Express.js.
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.
библиотека шаблонов javascript, предназначенная для совместимости с языком шаблонов django
twig.js выглядит действительно интересным и весит меньше, чем тарелка https://github.com/justjohn/twig.js
Это очень новое: angularjs http://googledevelopers.blogspot.nl/2012/06/better-web-templating-with-angularjs-10.html
Я использовал Jinja2 с Python, и теперь я использую jinjs в другом проекте на платформе Node.js.