作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试在主干中使用带下划线的 Handlebars 样式模板(与require.js一起使用)。
我有以下几点:
_.templateSettings.interpolate = /\{\{(.+?)\}\}/g;
<div><%= title %> | {{ title }}</div>
Correct title | {{ title }}
_.templateSettings
Object {evaluate: /<%([\s\S]+?)%>/g, interpolate: /\{\{(.+?)\}\}/g, escape: /<%-([\s\S]+?)%>/g}
最佳答案
当我这样做时:
_.templateSettings.interpolate = /\{\{(.+?)\}\}/g;
var t = _.template($('#t').html());
#t
中,我得到一个错误:
SyntaxError: Unexpected token '='
/<%([\s\S]+?)%>/g
<%= ... %>
匹配。等号与
\S
匹配,因此,求值正则表达式当然会找到
<%= ... %>
,剥离
<%
和
%>
,然后让
_.template
尝试构建的JavaScript出现语法错误。
_.template
source内部,您会看到以特定顺序检查了正则表达式:
escape
interpolate
evaluate
interpolate
会让
<%= ... %>
掉入并被误解,但
evaluate
会被捕获。
evaluate
正则表达式。我建议替换所有三个正则表达式以避免出现问题:
_.templateSettings = {
evaluate: /\{\{(.+?)\}\}/g,
interpolate: /\{\{=(.+?)\}\}/g,
escape: /\{\{-(.+?)\}\}/g
};
关于underscore.js - 下划线插值设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15624922/
我是一名优秀的程序员,十分优秀!