Javascript Node.js中的Heredoc用法

Javascript Node.js中的Heredoc用法,javascript,node.js,Javascript,Node.js,我有以下Node.js代码和输出: var help = `Usage: foo [options] v<interpolate here> Options: -h, --help Show some help ` process.stdout.write(help) var packageDotJson = require('./package.json'); process.stdout.write(packageDotJson.version + "\n")

我有以下Node.js代码和输出:

var help = `Usage: foo [options]

v<interpolate here>

Options:
  -h, --help      Show some help
`
process.stdout.write(help)

var packageDotJson = require('./package.json');
process.stdout.write(packageDotJson.version + "\n")

// Usage: foo [options]
//
// v<interpolate here>
//
// Options:
// -h, --help      Show some help
// 1.2.0
但我宁愿写:

if (true) {
  var help = `foo bar baz
  cats and dogs
  `
}
  var help = `
  Usage: foo [options]
  ...
我怎样才能创建一个不尊重第一个换行符的heredoc?例如,现在我必须写:

if (true) {
  var help = `foo bar baz
cats and dogs
`
}
  var help = `Usage: foo [options]
  ...
但我宁愿写:

if (true) {
  var help = `foo bar baz
  cats and dogs
  `
}
  var help = `
  Usage: foo [options]
  ...
最后,heredoc文档在哪里?

Heredocs 在节点中,一般并没有遗传,特别是弯曲的遗传,所以并没有关于它的文档

模板文本 ES6中有模板文本:

它们在Node 6.x+中可用-请参阅兼容性列表:

压痕 您可以使用一些技巧来保持缩进的效果,例如:

删除前4个字符:

let x = `
    abc
    def
`.split('\n').map(l => l.slice(4)).join('\n');
console.log(`"${x}"`);
删除前4个字符和空行:

let x = `
    abc
    def
`.split('\n').map(l => l.slice(4)).filter(l => l).join('\n');
console.log(`"${x}"`);
使用正则表达式替换删除行开头的所有空格:

let x = `
    abc
    def
`.replace(/^\s+/igm, '');
console.log(`"${x}"`);
插值 您可以使用
${expression}
在模板文本中插入任何JavaScript表达式,如下所示:

let x = `2 + 2 = ${2 + 2}`;
console.log(`"${x}"`);
它不仅适用于变量,当然,如果需要,表达式可以是单个变量