Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python和Javascript的模板系统?_Javascript_Python_Templates_Google Closure Templates - Fatal编程技术网

Python和Javascript的模板系统?

Python和Javascript的模板系统?,javascript,python,templates,google-closure-templates,Javascript,Python,Templates,Google Closure Templates,Google的Soy模板的一个很好的特性是,您可以在客户端(JS)和服务器(Java)上使用相同的模板 目前,我计划使用编译为JS的Soy模板在客户端呈现大多数页面。然而,我的后端是用Python编写的(使用Tornado),所以我不能轻易地在服务器端使用相同的模板来生成电子邮件或静态页面 我可以在服务器端使用单独的Java组件呈现这些模板,或者甚至可以让它们在node.js中工作。这两种选择似乎都不是特别干净 有没有在JS和Python中运行的好的模板引擎?有人对JSON模板或Tenjin有好

Google的Soy模板的一个很好的特性是,您可以在客户端(JS)和服务器(Java)上使用相同的模板

目前,我计划使用编译为JS的Soy模板在客户端呈现大多数页面。然而,我的后端是用Python编写的(使用Tornado),所以我不能轻易地在服务器端使用相同的模板来生成电子邮件或静态页面

我可以在服务器端使用单独的Java组件呈现这些模板,或者甚至可以让它们在node.js中工作。这两种选择似乎都不是特别干净


有没有在JS和Python中运行的好的模板引擎?有人对JSON模板或Tenjin有好的结果吗?还有其他想法吗?

Mustach是一个模板引擎,已经用Python和JavaScript(以及许多其他语言)实现


迈克尔·科林创建了一个名为

项目说明:

jinja2js是Jinja2模板引擎的扩展,它将包含宏的有效Jinja2模板编译为JavaScript。JavaScript输出可以通过脚本标记包含,也可以添加到JavaScript应用程序中

如合同中所述

通过滑动开关,我们可以生成利用闭包库的Java脚本,并生成以下内容:

金甲2号:

{% namespace ns1 %}

{% macro printusers(users) %}
<ul>
{% for user in users %}
    <li><a href="{{ user.url }}">{{ user.username }}</a></li>
{% endfor %}
</ul>
{% endmacro %}
{%ns1%}
{%宏打印用户(用户)%}
    {users%%中的用户为%s}
  • {%endfor%}
{%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();
}
goog.provide('ns1');
goog.require(“大豆”);
ns1.printusers=函数(opt_数据,opt_sb){
var output=opt_sb | | new soy.StringBuilder();
output.append('\n
    \n'); var userList=opt_data.users; var userListLen=userList.length; 对于(var userIndex=0;userIndex\n'); } output.append('\n
\n'); if(!opt_sb)返回output.toString(); }
我意识到这是一个非常古老的问题,但作为参考,现在可以将Soy模板编译成Python代码


谢谢你的回复,迈克!你有使用它的经验吗?你觉得怎么样?有没有更大的站点使用它?我为一个名为Play()的JavaMVC框架维护了一个mustache模块。使用胡子的大型网站包括Twitter、LinkedIn和Zendesk。这里有一个列表:嘿,迈克,刚刚注意到这个答案。非常感谢,非常感谢!我现在仍在使用Soy,但我可能会尝试将一些模板转换为Mustache,看看它是如何工作的。