Hexo: Vue.js 中的双大括号{{ Mustache }}与 Nunjucks 解析相冲突

Created on 29 Apr 2016  ·  12Comments  ·  Source: hexojs/hexo

编写vue相关的文章时会用到双大括号语法,每一次都需要加上{% raw %}{% endraw %}么?
求一个简单点的方法。

Most helpful comment

个人觉得要不改vue的渲染标签,要不就改Nunjucks的标签,改哪个主要看团队中vue和nunjucks在开放中的重要程度而定。而个人建议将花括号“{{ }}”改成“[[ ]]”中括号,起码键位是一致的,减少变更标签带来的麻烦。

前者Vue参考这里对全局配置进行修改:
https://cn.vuejs.org/v2/api/#delimiters

后者Nunjucks参考这里对variable进行修改
https://mozilla.github.io/nunjucks/api.html#customizing-syntax
示例:


var env = nunjucks.configure('/path/to/templates', {
  tags: {
    variableStart: '[[',
    variableEnd: ']]'
  }
});

All 12 comments

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

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

目前没有太好的办法,受到标记语言的限制,这个问题我也一筹莫展。

mustache.js 的時候也是, 要是能更換 delimiter 就好了, 像是 Set Delimiter

最近也被这个问题困扰......

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

我认为改 delimiter 并不是一个好办法,毕竟 Mustache 标记已经被大众所熟知,在浏览文章时突然出现另外一个标记未免一时接受不了。感觉应该在 Nunjucks 解析的时候或者是 markdown 解析的时候搞一搞。一个想法,不一定对。

@gaoryrt 您好,我想咨询下 hexo 里面写 Vue的 双括号代码的时候;您说的那个用法是怎么用的呢?
比如:
{{message}}

应该写成怎么样?

@Alibner
{% raw %}{{message}}{% endraw %}
好像是这样
https://mozilla.github.io/nunjucks/templating.html#raw

@gaoryrt ok,非常感谢!

个人觉得要不改vue的渲染标签,要不就改Nunjucks的标签,改哪个主要看团队中vue和nunjucks在开放中的重要程度而定。而个人建议将花括号“{{ }}”改成“[[ ]]”中括号,起码键位是一致的,减少变更标签带来的麻烦。

前者Vue参考这里对全局配置进行修改:
https://cn.vuejs.org/v2/api/#delimiters

后者Nunjucks参考这里对variable进行修改
https://mozilla.github.io/nunjucks/api.html#customizing-syntax
示例:


var env = nunjucks.configure('/path/to/templates', {
  tags: {
    variableStart: '[[',
    variableEnd: ']]'
  }
});

@gaoryrt has the right answer, close this issue.

Was this page helpful?
0 / 5 - 0 ratings