21

GoogleのSoyテンプレートの優れた機能は、クライアント(JS)とサーバー(Java)で同じテンプレートを使用できることです。

現在、JSにコンパイルされたSoyテンプレートを使用して、ほとんどのページをクライアント側でレンダリングする予定です。ただし、私のバックエンドは(Tornadoを使用して)Pythonで記述されているため、サーバー側で同じテンプレートを使用して電子メールや静的ページを簡単に生成することはできません。

サーバー側で別のJavaコンポーネントを使用してこれらの大豆テンプレートをレンダリングすることも、node.jsで機能させることもできます。これらのオプションはどちらも特にクリーンではないようです。

JSとPythonの両方で実行される優れたテンプレートエンジンはありますか?JSON-TemplateまたはTenjinで良い結果が得られた人はいますか?他のアイデアはありますか?

4

3 に答える 3

11

Mustacheは、PythonとJavaScript(および他の多くの言語)の両方で実装されているテンプレートエンジンです。

http://mustache.github.com/

于 2011-01-04T07:20:57.357 に答える
7

Michael Kerrin は、 pwt.jinja2jsというプロジェクトを作成しました。

プロジェクトの説明:

pwt.jinja2js は、マクロを含む有効な Jinja2 テンプレートを JavaScript にコンパイルする Jinja2 テンプレート エンジンの拡張機能です。JavaScript の出力は、script タグを介して含めるか、アプリケーションの JavaScript に追加することができます。

ドキュメントに記載されているように

スイッチを入れることで、Closure Library を利用して以下を生成する Java Script を生成できます。

ジンジャ2:

{% 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();
}
于 2011-07-16T08:20:31.833 に答える
2

これは非常に古い質問だと思いますが、参考までに、Soy テンプレートを Python コードにコンパイルできるようになりました。

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

于 2014-04-13T12:50:51.157 に答える