服务器模板(Jinja)和JS模板(ArgulaJS)分隔符顶牛的缓解形式

好了,言归正传。无论是服务器模板依旧客户端模板大家利用的相间符也就那么两种,比如以往正在用的Jinja2Flask的暗中同意模板)和AngularJS暗中同意的变量分隔符都以”{{}}”,当它们一起利用的时候自然就会发生争持。

除开上述二种非此即彼的方案,恐怕二者的相间符都不做修改是更好的点子。Jinja2文档里有讲原样输出二个分隔符的章程:

几年从前就有人提议过,随着浏览器的强大MVC会前移,2个先后的不再是由一个个单独的、每一次请求由劳动器生成的页面组成,而是首先次呼吁生成的HTML&JS&CSS驻留在浏览器中,然后经过REST和服务器举办数据交互。那并不是2个哪些新的架构,倘使大家用Flex开发一个Web程序的话,其实一般都用的都是那种措施。浏览器的进步确实在推进一部分器重应用的Web程序往那个主旋律前进,以后JavaScript的SPA框架已经沸腾了,如《JavaScript宝座:七大框架论剑》里所说:

在实际的采用中往往照旧显示为主的页面和一些使用为主的页面(那样的三个页面往往是二个SPA)的组合,全数的页面依旧有局地方可共享的东西的——比如页头、页尾已经用户特定的音讯,这部分用劳动器端来处理依旧比较简单,所以混合使用服务器模板和客户端模板如今以来如故三个务实的做法。

假诺出口一大段文字,还有更好的格局:

有朋友在评价里关系的办法也是不易的:

myModule.config(function($interpolateProvider) {

$interpolateProvider.startSymbol('{[{');

$interpolateProvider.endSymbol('{[{');

});

当然如此的沙盘会难看些,但也是相比较折中的方法了。

那反过来想想,大家得以不改客户端模板的分隔符,而是去改服务器模板的分隔符,当然Jinja2也是帮助的:

加载整个页面,然后再“渐进增强”以添加动态行为,这种打造Web应用的措施已经不够好了。要想让动用加载快,反应灵敏,而且又引领风尚,必须彻底反省你的开销手段。真正的JavaScript应用必须有方便的数据模型,并拥有客户端渲染能力,而毫无只是是服务器处理多少再加上部分Ajax和jQuery代码那么不难。

env = Environment(variable_start_string="${", variable_end_string="}")

{{ ‘{{‘ }}

那般可以把Jinja2的变量分隔符改为“${}”,当然还是可以做越来越多的安装。但这么做不仅对劳动器端模板的编辑不习惯,更要紧的标题是有个别对准这种模板的编辑器也认不出那一个符号了。

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

多谢卓之威的评论。

在jinja2中选拔”{{空格”就足以分别了
app.jinja_env.variable_start_string = ‘{{ ‘
app.jinja_env.variable_end_string = ‘ }}’
在angularjs中利用{{}}就足以了,那样服务器端和客户端都不须求修改。

但这么做的弱点是如果你利用了此外的AngularJS的插件,而以此插件的模板中运用了”{{}}”这样的分隔符(写死在模板中了),那么就会出难点。

初稿链接:点这里

在SPA应用中大致都用到了客户端模板,似乎服务器模板已经没有用武之地了,确实有许三人觉着混合使用客户端模板和服务器模板是壹个不好的推行。如何处理好服务器和客户端之间的关联着实是个难点,stackoverflow上有人问了近似的题材:《Typical
Angular.js workflow and project structure (with Python
Flask)
》。

Django里的分割符也是”{{}}”,所以可以参照:《AngularJS with Django –
Conflicting template
tags
》里给出的化解方案,简单的说,这几个方案就是接纳AngularJS的一个API改变他的相间符:

相关文章