【问题标题】:A JS alternative to Jinja2 that works on a static server with AngularJSJinja2 的 JS 替代品,可在带有 AngularJS 的静态服务器上工作
【发布时间】:2015-03-03 23:01:42
【问题描述】:

我正在“老式”服务器上使用 AngularJS 开发应用程序的前端,我的意思是不支持 Python、Ruby、Java。我只能访问一个糟糕的phpMyAdmin db和php,我不会使用它们。

我已经习惯了 Django 的模板引擎(Jinja2 的灵感来源于此),并且我是block 继承功能 的忠实粉丝。不幸的是,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 编写以便它可以在“静态”服务器上运行
  • 具有块继承功能
  • 与 AngularJS 不冲突

【问题讨论】:

标签: javascript angularjs template-engine


【解决方案1】:

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

Jade 有一个 extendinclude 指令。

您可能会通过这样做来对抗角。 UiRouter 提供组合和嵌套状态、抽象状态和命名视图。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多