Twig模板引擎与Vue.js冲突导致显示空白的解决方法

当在以twig为模板引擎的网站管理系统中使用Vue时,会出现冲突导致显示空白,Vue.js无法正常使用,主要原因是由于两者的语法上有导致误解析的相同分隔符——{{}}

vue

受影响的系统包括:October (CMS)、Drupal8、Grav (CMS)等以twig为模板引擎的网站管理系统

例如下面的模板片断:
<pre>
<div class="container">
Label Value: <label>{{ foo }}</label>

Field Value: <input v-model="foo">
</div>
</pre>

解决办法一如下

Vue支持修改分隔符,修改默认的Vue分隔符即可,语法如下:

Vue.config.delimiters = ['${', '}$'];

把上面这句插到初始化Vue的代码之前,修改之后就可以在模板中使用这种方式来执行Vue代码了:

<pre>

<div class="container">
Label Value: <label>${ foo }$</label>

Field Value: <input v-model="foo">
</div>

</pre>

完工,当然,你也可以用类似Vue.config.delimiters = ['<%', '%>']这种分隔符来表示。

解决方法二:

这次我们从October cms下手,October支持“不解析”标签,在不解析标签里面的内容会作为文本对待而不做任何解析,语法如下:
<pre>
{% verbatim %}
{{ foo }}
{% endverbatim %}
</pre>
例如:
<pre>
{% verbatim %}
<div>Hello {{ name }}, this is parsed by AngularJS</div>
{% endverbatim %}
</pre>

附:

引用一:http://vuejs.org/api/#delimiters
引用二:http://octobercms.com/docs/markup/tag-verbatim

Tag:Drupal8, GravCms, OctoberCms, twig, Vue
发布时间:2015年08月09日
博客被黑,挪窝简书安家……

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容