0

我在我的开发中使用 eslint 和 airbnb 风格指南。我收到 eslint 错误建议使用模板文字而不是字符串连接(首选模板)。

它将此行标记为错误

':<br><br><pre style="color:red">' + softTab + err.stack.replace(/\n/g, '<br>' + softTab) + '</pre>' : '';

这是我的代码

const renderError = err => {
  const softTab = '&#32;&#32;&#32;&#32;';
  const errTrace = process.env.NODE_ENV !== 'production' ?
    ':<br><br><pre style="color:red">' + softTab + err.stack.replace(/\n/g, '<br>' + softTab) + '</pre>' : '';
  return renderFullPage(`Server Error${errTrace}`, {});
};

我的问题是使用三元运算符应用模板文字的推荐方法是什么?我将它应用于函数返回,但取决于我在此行上应用模板文字的位置会导致错误。理想情况下,我尝试了整条线,但尝试传递${softTab}err.stack.replace(/\n/g, '<br>' + softTab)任何建议或解决方案都会遇到问题。谢谢!

4

3 回答 3

2

在 ES6 中,您可以使用模板文字代替字符串连接。为此,您使用反引号 (`)(重音符号)字符而不是双引号或单引号。模板文字可以包含占位符。这些由美元符号和花括号 (${expression}) 表示。所以你的情况:

`:<br><br><pre style="color:red">${ softTab }${ err.stack.replace(/\n/g, `<br>${softTab}`) }</pre>`

如需进一步阅读: https ://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals

于 2016-03-29T18:20:28.890 回答
1

这与三元运算符并没有太大关系。您应该只用模板文字替换字符串连接(或者至少,该样式指南说您应该这样做):

`:<br><br><pre style="color:red">${ softTab }${ err.stack.replace(/\n/g, `<br>${softTab}`) }</pre>'

也就是说,您可能不想在这里使用三元组:

function renderError(err) {
  const softTab = '&#32;&#32;&#32;&#32;';
  let message = 'Server Error';
  if (process.env.NODE_ENV !== 'production') {
    message += ':<br><br><pre style="color:red">';
    message += softTab + err.stack.replace(/\n/g, '<br>' + softTab);
    message += '</pre>';
  }
  return renderFullPage(message, {});
}

或者,也许,使用 CSS 而不是<br>标签和“软”标签:

function renderError(err) {
  let message = 'Server Error';
  if (process.env.NODE_ENV !== 'production')
    message += `:<pre style="margin-top:2em;padding-left:3em;color:red;">${err.stack}</pre>`;
  return renderFullPage(message, {});
}
于 2016-03-29T18:18:11.513 回答
0

这是我提出的套件 airbrb 样式指南的解决方案。

const renderError = err => {
  const softTab = '&#32;&#32;&#32;&#32;';
  const errTrace = process.env.NODE_ENV !== 'production' ?
    `:<br><br><pre style="color:red">${softTab}${err.stack.replace(/\n/g, `<br>${softTab}`)}</pre>` : '';
  return renderFullPage(`Server Error${errTrace}`, {});
};
于 2016-03-29T18:37:59.960 回答