[英]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 = '    ';
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 = '    ';
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 = '    ';
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.