JavaScript 中的多行文本
有时候,我们需要使用 JavaScript 构造一些 HTML 代码,如下:
<div id="outer"> <div id="inner"> 内容 </div></div>用 JavaScript 字符串来表示就是:
const html = '<div id="outer"><div id="inner">内容</div></div>'为了可读性和避免写错,就有强烈的写成带缩进的多行文本的需求。 现阶段,JavaScript 的多行文本,大家马上能想到的就是用 ES6 的字符串模板字面量来创建。
const html = `<div id="outer"> <div id="inner"> 内容 </div></div>`忆苦思甜,以前都是怎么做的呢?
可能大家还有印象,最笨拙的字符串拼接方法:
var html = ''+ '<div id="outer">'+ '<div id="inner">'+ '内容'+ '</div>'+ '</div>'还有利用反斜杠的方式:
var html = '\<div id="outer">\ <div id="inner">\ 内容\ </div>\</div>\'利用数组的方式:
var html = ['<div id="outer">',' <div>',' 内容',' </div>','</div>'].join('')不走寻常路的利用读取函数内容的方式:
function hereDoc(docFn) { return docFn.toString().replace(/^[^\/]+\/\*!?\s?/, '').replace(/\*\/[^\/]+$/, '')}
var html = hereDoc(function(){/*!<div id="outer"> <div id="inner"> 内容 </div></div>*/})在浏览器环境中,也可以直接在 HTML 中写模板代码,然后 JavaScript 读取内容:
<script id="template" type="text/template"> <div id="outer"> <div id="inner"> 内容 </div> </div></script>var html = document.getElementById('template').textContent讲了这么多种书写多行字符串的方法,有什么用处呢?
其实什么用都没,大部分场景,无脑使用 ES6 的模板字面量即可。
全文完