处理ember.js HTML标记与Python(Processing ember.js tagge

2019-09-21 17:21发布

我有以下情形:

  1. 我们正在使用的web2py在服务器端
  2. 我们所服务的一些ember.js页
  3. 目前这些ember.js页是一个iframe内,因为ember.js与模板{{}}标记的web2py冲突 。 这意味着我们不能轻易地混用web2py的模板和模板ember.js。
  4. 所以,我已经实现了辅助类的解决方案: class em(DIV)
  5. 现在,我要处理的原余烬标记HTML文件,并产生EM-标记的文件,整合ember.js和web2py的模板系统成有机的整体。

为此,我需要改变的所有实例{{XXX}}在ember.js文件{{= EM(“XXX”)}}, 其中包括跨越几行实例。 我想到的是怎么回事正则表达式,但我想,以避免重新发明轮子(而不必使用陌生的角落例)

您可以在解析这些类型的模板的蟒蛇认为一个通用的方法。 这是一个简单的寻找开始和结束分隔符(事{{}}然后将一个=em('XXX') 装卸换行 ,并保持格式 (即保持换行符如果有一些) 。

注意:这其实不是ember.js具体是; 它可以适用于任何基于分隔符的多行模板系统。

Answer 1:

注意,在web2py中的主干版本(这将被释放的web2py 2.0在接下来的几天里),你现在可以指定自定义分隔符的模板 - 这样你就可以改变web2py的分隔符,使他们不再冲突余烬。 JS分隔符。 例如,在一个模型文件:

response.delimiters = ['{%', '%}']

然后在你的web2py的模板,你可以这样做:

{%=P('hello world')%}
<p>{{ember template code}}</p>
{%=P('{{ember template code generated by web2py}}')%}

这将产生:

<p>hello world</p>
<p>{{ember template code}}</p>
<p>{{ember template code generated by web2py}}</p>

注意,response.delimiters设置在每个请求,所以如果你不想或者通过在具体行动将其设置为改变所有的网页,但只有那些包含烬代码,可以有条件地设置response.delimiters web2py的分隔符(需要它,或者通过检查在一个模型文件所请求的控制器和/或功能)。 例如,在一个模型文件:

if request.function in ['action1', 'action2', 'action3']:
    response.delimiters = ['{%', '%}']

或在控制器中:

def action1():
    response.delimiters = ['{%', '%}']
    [etc.]


Answer 2:

这可能值得尝试的方法在保持所有Ember.js的东西在不同的文件,并且不与web2py的模板混吧。 幸运的是,Ember.js轻易允许这样做。



文章来源: Processing ember.js tagged html with python