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

时间:2016-07-08 08:30:51

标签: javascript ecmascript-6 stringtemplate

我有以下字符串tempalte:

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

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

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

3 个答案:

答案 0 :(得分:3)

如果你的意思是像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);

答案 1 :(得分:1)

我发现很难读取具有大量插值的模板字符串,就像你的例子一样。

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

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

答案 2 :(得分:0)

我不是字符串连接的粉丝。因此,我建议您删除该多行模板字符串中的所有空格。

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