模板文字插值打断空格 table
Template literal interpolation breaks whitespace table
使用模板文字时,我注意到 table 格式存在问题。
当做这样的事情时:
var hello = 'Hello',
bye = 'Goodbye';
console.log(`
${hello} World
${bye} World
`);
因为 {bye} 部分比 'Goodbye' 少四个字母,字符串打印为:
Hello World
Goodbye World
这对于数组或对象的插值变得更加复杂。
我想知道是否有人找到了解决此类问题的方法。在插值期间可以保留字符串的间隔 table 格式。
假设现在模板标签使用字符串和数组。数组由单词之间的空格连接。
var hello = 'Hello',
bye = 'Goodbye',
phrase = ['I', 'like'];
console.log(someTag`
${hello} World
${bye} World
Some things I like:
${phrase} sunsets.
${['I', 'like']} candy.
`);
以防万一您无法告诉数组方括号、引号、美元、花括号等在插值之前计入字符串的长度(视觉上)。插值后单词之间的空格计入字符串长度。缩进受额外字符丢失和标记处理期间添加字符的影响。
这个问题有一个公认的答案,但我希望看到更多的讨论。这个问题可以有多个答案。
您可以使用制表符来补偿单词的不同长度:
const hello = 'Hello';
const bye = 'Goodbye';
const str = `
${hello}\t World
${bye}\t World
`;
console.log(str);
document.getElementById('demo').innerText = str;
<pre id="demo"></pre>
使用模板文字时,我注意到 table 格式存在问题。
当做这样的事情时:
var hello = 'Hello',
bye = 'Goodbye';
console.log(`
${hello} World
${bye} World
`);
因为 {bye} 部分比 'Goodbye' 少四个字母,字符串打印为:
Hello World
Goodbye World
这对于数组或对象的插值变得更加复杂。
我想知道是否有人找到了解决此类问题的方法。在插值期间可以保留字符串的间隔 table 格式。
假设现在模板标签使用字符串和数组。数组由单词之间的空格连接。
var hello = 'Hello',
bye = 'Goodbye',
phrase = ['I', 'like'];
console.log(someTag`
${hello} World
${bye} World
Some things I like:
${phrase} sunsets.
${['I', 'like']} candy.
`);
以防万一您无法告诉数组方括号、引号、美元、花括号等在插值之前计入字符串的长度(视觉上)。插值后单词之间的空格计入字符串长度。缩进受额外字符丢失和标记处理期间添加字符的影响。
这个问题有一个公认的答案,但我希望看到更多的讨论。这个问题可以有多个答案。
您可以使用制表符来补偿单词的不同长度:
const hello = 'Hello';
const bye = 'Goodbye';
const str = `
${hello}\t World
${bye}\t World
`;
console.log(str);
document.getElementById('demo').innerText = str;
<pre id="demo"></pre>