【问题标题】:Templating system for both Python and Javascript?Python和Javascript的模板系统?
【发布时间】:2011-06-03 05:48:50
【问题描述】:

Google 的 Soy 模板的一个不错的功能是您可以在客户端 (JS) 和服务器 (Java) 上使用相同的模板。

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

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

有没有可以在 JS 和 Python 中运行的好的模板引擎?有没有人用 JSON-Template 或 Tenjin 取得好的结果?还有其他想法吗?

【问题讨论】:

    标签: javascript python templates google-closure-templates


    【解决方案1】:

    Mustache 是一个模板引擎,已在 Python 和 JavaScript(以及许多其他语言)中实现。

    http://mustache.github.com/

    【讨论】:

    • 感谢您的回复,迈克!你有使用它的经验吗?你是怎么找到它的?有没有更大的网站使用它?
    • 我为一个名为 Play (github.com/murz/play-mustache) 的 Java MVC 框架维护了一个 mustache 模块。使用 mustache 的大型网站包括 Twitter、LinkedIn、Zendesk。这里有一个列表:github.com/janl/mustache.js/wiki/Beard-Competition
    • 嘿迈克,刚刚注意到这个答案。非常感谢,真的很感激!我现在仍在使用 Soy,但我可能会尝试将我们的一些模板转换为 Mustache,看看它是如何工作的。
    【解决方案2】:

    Michael Kerrin 创建了一个名为pwt.jinja2js 的项目

    项目描述:

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

    documentation中所述

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

    神社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();
    }
    

    【讨论】:

      【解决方案3】:

      我意识到这是一个非常古老的问题,但作为参考,现在可以将 Soy 模板编译为 Python 代码。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-04-07
        • 1970-01-01
        • 1970-01-01
        • 2010-11-22
        • 2011-01-24
        • 1970-01-01
        • 2021-09-21
        相关资源
        最近更新 更多