说到 模版字符串 (Template strings or Template literals), 我们先来看看在ES5中,我们遇到的问题:
假设我们需要拼接一段html字符串,常规的做法如下:
var text = 'ES5 sucks!';
var html = '\
<div> \
<p>' + text + '</p>\
</div>';
console.log(html);
或者:
var text = 'ES5 sucks!';
var html = [
'<div>',
'<p>' + text + '</p>',
'</div>'
].join('');
console.log(html);
写的很难受对不对?到了ES2015, 有了 模版字符串 后,事情就变得简单了。
模版字符串,就是用 ` 和 ` 包裹起来的字符串, 如:
let html = `
<div>
<p>ES5 sucks!</p>
</div>
`;
console.log(html);
在其中,我们还可以使用 ${变量名}, 直接引用变量,而不用字符串拼接了,如:
let text = 'ES5 sucks!';
let html = `
<div>
<p>${text}</p>
</div>
`;
console.log(html);
如果不想其中的字符被转译,比如保留换行字符等,可以使用 String.raw, 如:
console.log(`我是\n两行`);
console.log(String.raw`我是\n一行`);
输出:
> 我是
> 两行
> 我是\n一行