在es6模板文字,如何包装一个长模板文字到多行而不创建一个新的行在字符串?
例如,如果你这样做:
const text = `a very long string that just continues
and continues and continues`
然后它将为字符串创建一个新的行符号,就像解释它有一个新的行一样。如何在不创建换行符的情况下将长模板文字包装到多行?
在es6模板文字,如何包装一个长模板文字到多行而不创建一个新的行在字符串?
例如,如果你这样做:
const text = `a very long string that just continues
and continues and continues`
然后它将为字符串创建一个新的行符号,就像解释它有一个新的行一样。如何在不创建换行符的情况下将长模板文字包装到多行?
当前回答
@ codingconspiracy提出的解决方案在节点7上不适合我。好吧,如果我在第一行不使用续行,它就会工作,否则它就会失败。
这可能不是最好的解决方案,但它没有任何问题:
(`
border:1px solid blue;
border-radius:10px;
padding: 14px 25px;
text-decoration:none;
display: inline-block;
text-align: center;`).replace(/\n/g,'').trim();
其他回答
这个NPM包允许你做以下事情…
import { oneLine } from 'common-tags';
const foo = oneLine`foo
bar
baz`;
console.log(foo); // foo bar baz
类似于Doug的回答,这被我的TSLint配置所接受,并且不受我的IntelliJ自动格式化器的影响:
const text = `a very long string that just ${
continues
} and ${continues} and ${continues}`
你可以直接吃掉模板文字中的换行符。
//感谢https://twitter.com/awbjs给我介绍这个想法 //这里:https://esdiscuss.org/topic/multiline-template-strings-that-don-t-break-indentation const printLongLine = continue => { Const text = '一个很长的字符串,只有${continues}${" }和${continuations}和${continuations} '; 返回文本; } console.log (printLongLine('继续'));
如果你在字面值的换行符处引入了一个续行符(\),它不会在输出时创建换行符:
const text = `a very long string that just continues\
and continues and continues`;
console.log(text); // a very long string that just continuesand continues and continues
使用旧的和新的。模板字面值很好,但是如果你想避免冗长的字面值以获得紧凑的代码行,可以将它们连接起来,ESLint不会引起麻烦。
const text = `a very long string that just continues`
+` and continues and continues`;
console.log(text);