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

Система шаблонов для Python и Javascript?

Хорошей особенностью шаблонов Google Soy является то, что вы можете использовать те же шаблоны на клиенте (JS) и на сервере (Java).

В настоящее время я планирую отображать большинство страниц на стороне клиента, используя шаблоны Soy, скомпилированные в JS. Однако мой бэкэнд написан на Python (с использованием Tornado), поэтому я не могу легко использовать одни и те же шаблоны на стороне сервера для создания электронных писем или статических страниц.

Я мог бы отображать эти шаблоны сои с помощью отдельного Java-компонента на стороне сервера или даже заставить их работать в node.js. Ни один из этих вариантов не выглядит особенно чистым.

Есть ли хорошие шаблонные механизмы, которые работают как в JS, так и в Python? Кто-нибудь имел хорошие результаты с JSON-Template или Tenjin? Любые другие идеи?

4b9b3361

Ответ 1

Усы - это механизм шаблонов, который был реализован как на Python, так и на JavaScript (и на многих других языках).

http://mustache.github.com/

Ответ 2

Майкл Керрин создал проект под названием pwt.jinja2js

Описание проекта:

pwt.jinja2js является расширением для механизма шаблонов Jinja2, который компилирует действительные шаблоны Jinja2, содержащие макросы для JavaScript. Выход JavaScript может быть включен с помощью тегов script или может быть добавлен в приложения JavaScript.

Как указано в документации

Сползая переключатель, мы можем создать Java script, который использует библиотеку Closure и создает следующее:

Jinja2:

{% namespace ns1 %}

{% macro printusers(users) %}
<ul>
{% for user in users %}
    <li><a href="{{ user.url }}">{{ user.username }}</a></li>
{% endfor %}
</ul>
{% endmacro %}

становится:

goog.provide('ns1');

goog.require('soy');

ns1.printusers = function(opt_data, opt_sb) {
    var output = opt_sb || new soy.StringBuilder();
    output.append('\n<ul>\n');
    var userList = opt_data.users;
    var userListLen = userList.length;
    for (var userIndex = 0; userIndex < userListLen; userIndex++) {
        var userData = userList[userIndex];
   output.append('\n   <li><a href="', userData.url, '">', userData.username, '</a></li>\n');
}
    output.append('\n</ul>\n');
    if (!opt_sb) return output.toString();
}

Ответ 3

Я понимаю, что это очень старый вопрос, но для ссылки теперь можно скомпилировать шаблоны Soy для кода Python.

https://pypi.python.org/pypi/soy