簡體   English   中英

es6 javascript推薦的方法來使用三元運算符應用模板文字?

[英]es6 javascript recommend way to apply template literal with ternary operator?

我在使用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)遇到問題,任何建議或解決方案都很好。 謝謝!

在ES6中,可以使用模板文字而不是字符串連接。 為此,請使用反引號(`)(grave-accent)字符而不是雙引號或單引號。 模板文字可以包含占位符。 這些由美元符號和大括號($ {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

這實際上與三元運算符無關。 您應該只用模板文字替換字符串連接(或至少,該樣式指南說您應該這樣做):

`:<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, {});
}

這是我想出的套件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}`, {});
};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM