是否有可能使用AngularJS与Jinja2的模板引擎?是否有可能使用AngularJS与Jinj

2019-05-10 12:12发布

我有一个瓶的网站,我想使用AngularJS JavaScript框架。 不幸的是,它好像分隔符重叠。

如何使用角与Jinja2的,如果两者都依赖于双花括号{{ expr }} 它甚至有可能?

Answer 1:

你有一些选择。

1)更改角的分隔符符号:

var app = angular.module('Application', []);

app.config(['$interpolateProvider', function($interpolateProvider) {
  $interpolateProvider.startSymbol('{a');
  $interpolateProvider.endSymbol('a}');
}]);

无论选择的开始和结束的符号将作为新的分隔符。 在这种情况下,你会用快递向角变量{a some_variable a}

这种方法只需要的优势,进行一次并且是明确的设定。

2)更改的Jinja2定界符符号。

覆盖或子类Flask.jinja_options.updateFlask ,绑定到你的应用程序对象(相关瓦尔: block_start_stringblock_end_stringvariable_start_stringvariable_end_stringcomment_start_stringcomment_end_string ):

jinja_options = app.jinja_options.copy()

jinja_options.update(dict(
    block_start_string='<%',
    block_end_string='%>',
    variable_start_string='%%',
    variable_end_string='%%',
    comment_start_string='<#',
    comment_end_string='#>'
))
app.jinja_options = jinja_options

由于有敏感数据的到来未膨胀的从服务器端的风险较高,我建议而不是改变对中你不是唯一的开发任何项目的前端(即角)的语法。

3)输出一个原始块中的Jinja2使用{% raw %}{% verbatim %}

<ul>
{% raw %}
  {% for item in seq %}
      <li>{{ some_var }}</li>
  {% endfor %}
{% endraw %}
</ul>

4)使用Jinja2的写在模板中的花括号:

{{ '{{ some_var }}' }}

这将被输出为{{ some_var }}在HTML。

我的方法#1偏好是显而易见的,但任何上述的正常工作。



Answer 2:

还有另一种选择: 烧瓶三角是一个扩展,以帮助您构建形式,而在整合的Jinja2模板角。 代替改变角度(或Jinja2的)支架分隔符,则可以简单地添加的标识符来告诉的Jinja2如果表达式必须被呈现为角之一。 只需添加|angular的变量之后:

<div>{{variable|angular}}</div>

这将在HTML输出呈现:

<div>{{variable}}</div>

请注意, 瓶,三角还配备了其他功能(对角风格的建筑形式),但我想可能是要在Jinja2的角模板更具可读性的一个有价值的选择。



文章来源: Is it possible to use AngularJS with the Jinja2 template engine?