Jinja2的JS替代品,可在AngularJS的静态服务器上运行

时间:2015-01-06 09:44:26

标签: javascript angularjs template-engine

我正在一所旧学校使用AngularJS开发应用程序的前端"服务器,我的意思是不支持Python,Ruby,Java。我只能访问一个糟糕的phpMyAdmin数据库和php,我不会使用它们。

我已经习惯了Django的模板引擎(Jinja2受到启发),我是block 继承功能的忠实粉丝< / strong>即可。不幸的是,AngularJS只提供一个常规的include指令,它只允许将代码块包含在输出文件中。

另一方面,使用Django(Jinja),您可以轻松地执行类似

的操作
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    {% block content %}
    {% endblock content %}
</body>
    <script type="text/javascript">
        // ... some stuff that should be done on every page
    </script>
</html>

以及您网站的每个页面

{% extends "core/skeleton.html" %}
{% block content %}
    <h1>This is my content...</h1>
    <p>
        ...and I don't care about the rest.
    </p>
{% endblock content %}

我觉得非常强大。

仅使用AngularJS,最终会得到2个include语句,以达到相同的效果。此外,您希望在页面中嵌套的块越多,您需要使用的include语句越多(实际上,每个Django block都会导致AngularJS中的2个ìnclude语句。

符合我要求的最合适的模板引擎是什么?即:

  • 用JS编写,以便它可以在&#34;静态&#34;服务器
  • 使用块继承功能
  • 与AngularJS
  • 不冲突

1 个答案:

答案 0 :(得分:0)

如果你真的想要走这条路,你可以使用jade模板并在构建时将它们编译成html,例如:http://www.npmjs.com/package/grunt-contrib-jade

Jade有extendinclude指令。

你这样做可能会有角度。 UiRouter提供组合和嵌套状态,抽象状态和命名视图。