hexo 中{{content}} 导致文章内容异常

hexo 中{{content}} 因为大括号导致文章内容异常


2018-10-03 更新:
要解决文章内容中 {{  }} 花括号(大括号)引起的错误,使用这个方法才是正解。
示例:
{% raw %}
这里的 {{  }} 不会被解析,所以不会报错了,也解决问题了。
{% endraw %}


参考文档:
Hexo 使用 Nunjucks 来解析文章(旧版本使用 Swig,两者语法类似),内容若包含 {{ }} 或 {% %} 可能导致解析错误,您可以用 raw 标签包裹来避免潜在问题发生。

{% raw %}
Hello {{ sensitive }}
{% endraw %}


我亲自试过了,这个方案能解决问题。
之前,html 文章内容中出现 {{ exp }} 这样的代码,就会引起 hexo 的错误,使用了 raw 之后就解决了问题。




老的文章内容
最近发现一个问题:
hexo 中,我使用的 html 文件存储的文章,
文章中出现了 {{content}} 这样的成对花括号(大括号),
导致:文章内容在文章中重复出现2次。
真是神奇了。

最近时间有限,问题我没有深入研究。
猜测是:
html 文件中,有 Front Matter 的信息,hexo 会处理,
处理过程中,会解析 {{ exp }} 这样的花括号的表达式,从而引起了问题。



旧版实现方案:
(不推荐!!!上面说的方案才是正解)

后来,我的解决办法是:
我的 html 做一次处理,发现 {{ 就转换为:<span>{</span>{,
函数代码:
/*
{{ 转换为: <span>{</span>{ ,这是为了避免文章构建后,出现异常,文章内容可能被重复2次
}} 转换为: <span>}</span>}
*/
function fixHtml (html) {
html = html.replace(/\{\{/g, '<span>{</span>{')
html = html.replace(/\}\}/g, '<span>}</span>}')
return html
},

为什么这样做?
相比网上查到的:{{ 替换成: {空格{,我的方式在用户视觉上,是{{这样,而不是{空格{,在用户复制代码的时候,也不会出现把多余的空格复制进去,复制了空格进去,代码在调试运行的时候可能还需要很久才找到是什么原因


题外话:
其实这不是从问题的根源解决问题,只是临时方案。
如果你有更好的方案,麻烦告诉一声。谢谢了。

hexo 似乎不成成熟,搞的我挺恶心的。遇到很多细节问题。



hexo {{ 问题参考:
Template render error: unexpected token