-
互换的青春
ECMAScript 6(ES6)引入了一种新的文字,即模板文字。它们具有许多特征,可变插值等,但最重要的是,对于这个问题,它们可以是多线的。模板文字由反引号分隔:var html = `
<div>
<span>Some HTML here</span>
</div>
`;(注意:我不主张在字符串中使用HTML)浏览器支持是可以的,但您可以使用转换器更兼容。
-
一只名叫tom的猫
这种模式text = <<"HERE" This Is A Multiline String HERE在js中不可用(我记得在我很好的旧Perl时代使用它)。为了保持对复杂或长多行字符串的监督,我有时使用数组模式:var myString = ['<div id="someId">', 'some content<br />', '<a href="#someRef">someRefTxt</a>', '</div>' ].join('\n');或者匿名模式已经显示(转义换行符),这可能是代码中的一个丑陋的块: var myString = '<div id="someId"> \some content<br /> \<a href="#someRef">someRefTxt</a> \</div>';这是另一个奇怪但有效的'技巧' 1:var myString = (function () {/* <div id="someId"> some content<br /> <a href="#someRef">someRefTxt</a> </div> */}).toString().match(/[^]*\/\*([^]*)\*\/\}$/)[1];外部编辑:jsfiddleES20xx支持使用模板字符串跨多行生成字符串:let str = `This is a text with multiple lines. Escapes are interpreted, \n is a newline.`;let str = String.raw`This is a text with multiple lines. Escapes are not interpreted, \n is not a newline.`;
-
波斯汪
您可以在纯JavaScript中使用多行字符串。此方法基于函数的序列化,该函数被定义为依赖于实现。它在大多数浏览器中都有效(见下文),但不能保证它将来仍能使用,所以不要依赖它。使用以下功能:function hereDoc(f) {
return f.toString().
replace(/^[^\/]+\/\*!?/, '').
replace(/\*\/[^\/]+$/, '');}你可以在这里 - 像这样的文件:var tennysonQuote = hereDoc(function() {/*!
Theirs not to make reply,
Theirs not to reason why,
Theirs but to do and die
*/});该方法已在以下浏览器中成功测试过(未提及=未测试):IE 4 - 10Opera 9.50 - 12(不是9-)Safari 4 - 6(不是3-)Chrome 1 - 45Firefox 17 - 21(不是16-)Rekonq 0.7.0 - 0.8.0Konqueror 4.7.4不支持但是要小心你的缩放器。它往往会删除评论。对于YUI压缩器,/*!将保留以(与我使用的)相似的注释。我认为真正的解决方案是使用CoffeeScript。