将字符串模板分成两行而不附加新行或空格

Break the string template into two lines without appending new line or whitespaces

我有以下字符串模板:

const someUrl = `/${currentLocale}/somecategory/${category.get('slug')}/${post.get('iD')}/${post.get('slug')}`;

问题是这一行太长,我不得不打断它,但是在它的中间放置简单的输入 - 导致在生成的字符串中添加新行和额外的空格。

为了代码风格的目的,将字符串模板分成几行的最佳方法是什么?

如果你的意思是 python 中的反斜杠之类的东西,恐怕不,javascript 没有。

我建议使用 + 组合多个字符串段。更好看的缩进更容易,例如:

const someUrl = `/${currentLocale}/somecategory/${category.get('slug')}` +
                `/${post.get('iD')}/${post.get('slug')}`;

或者如果你使用的是节点,你也可以考虑 util.format:

const util = require('util');

var template = '/%s/somecategory/%s/%s/%s';
var args = [currentLocale, category.get('slug'),
            post.get('iD'), post.get('slug')];

const someUrl = util.format(template, ...args);

我不喜欢字符串连接。所以我建议您删除该多行模板字符串中的所有空格。

const someUrl = `
  /${currentLocale}/somecategory/
  ${category.get('slug')}/
  ${post.get('iD')}/
  ${post.get('slug')}
`.replace(/\s+/g, '');

我发现很难读取有很多插值的模板字符串,就像您的示例中那样。

另一种方法是创建每个部分的数组并使用 Array#join:

连接它们
const someUrl = '/' + [
    currentLocale,
    'somecategory',
    category.get('slug'),
    post.get('iD'),
    post.get('slug')
].join('/');