es6 javascript推荐使用三元运算符应用模板文字的方法?
我正在开发airbnb style guide时使用eslint。我发现eslint错误,建议使用模板文本而不是字符串连接(首选模板) 它用错误标记此行es6 javascript推荐使用三元运算符应用模板文字的方法?,javascript,ecmascript-6,ternary-operator,template-literals,Javascript,Ecmascript 6,Ternary Operator,Template Literals,我正在开发airbnb style guide时使用eslint。我发现eslint错误,建议使用模板文本而不是字符串连接(首选模板) 它用错误标记此行 ':'+softTab+err.stack.replace(/\n/g,'+softTab)+'' 这是我的密码 const renderError = err => { const softTab = '    '; const errTrace = process
':
'+softTab+err.stack.replace(/\n/g,
'+softTab)+''代码>
这是我的密码
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}`, {});
};
const renderError=err=>{
const softTab=' ; ; ; ; ;';
const errTrace=process.env.NODE_env!=“生产”?
“:
”+softTab+err.stack.replace(/\n/g,“
”+softTab)+'':”;
返回renderFullPage(`Server Error${errTrace}`,{});
};
我的问题是,使用三元运算符应用模板文字的推荐方法是什么?我在函数return上应用了它,但根据我在这一行上应用模板文字的位置,会导致错误。理想情况下,我尝试了整行操作,但在尝试将${softTab}
传递到err.stack.replace(/\n/g,“
”+softTab)
时遇到了一个问题。任何建议或解决方案都会很好。谢谢 这与三元运算符没有多大关系。您应该将字符串凹面替换为(或者至少,样式指南中说您应该这样做):
`:
${softTab}${err.stack.replace(/\n/g,`
${softTab})}
也就是说,您可能根本不想在这里使用三元:
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, {});
}
函数呈现错误(err){
const softTab=' ; ; ; ; ;';
让消息='服务器错误';
if(process.env.NODE_env!=“生产”){
消息+=':
;
message+=softTab+err.stack.replace(/\n/g,“
”+softTab);
消息+='';
}
返回renderFullPage(消息,{});
}
或者,使用CSS而不是
标记和“软”选项卡:
函数呈现错误(err){
让消息='服务器错误';
if(process.env.NODE_env!=“生产”)
消息+=`:${err.stack}`;
返回renderFullPage(消息,{});
}
这与三元运算符没有太大关系。您应该将字符串凹面替换为(或者至少,样式指南中说您应该这样做):
`:
${softTab}${err.stack.replace(/\n/g,`
${softTab})}
也就是说,您可能根本不想在这里使用三元:
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, {});
}
函数呈现错误(err){
const softTab=' ; ; ; ; ;';
让消息='服务器错误';
if(process.env.NODE_env!=“生产”){
消息+=':
;
message+=softTab+err.stack.replace(/\n/g,“
”+softTab);
消息+='';
}
返回renderFullPage(消息,{});
}
或者,使用CSS而不是
标记和“软”选项卡:
函数呈现错误(err){
让消息='服务器错误';
if(process.env.NODE_env!=“生产”)
消息+=`:${err.stack}`;
返回renderFullPage(消息,{});
}
在ES6中,可以使用模板文本而不是字符串连接。要做到这一点,请使用反勾(`)(严重重音)字符,而不是双引号或单引号。模板文本可以包含占位符。它们由美元符号和大括号(${expression})表示。所以你的情况是:
`:<br><br><pre style="color:red">${ softTab }${ err.stack.replace(/\n/g, `<br>${softTab}`) }</pre>`
`:
${softTab}${err.stack.replace(/\n/g,`
${softTab})}`
有关这方面的进一步阅读:
在ES6中,可以使用模板文本而不是字符串连接。要做到这一点,请使用反勾(`)(严重重音)字符,而不是双引号或单引号。模板文本可以包含占位符。它们由美元符号和大括号(${expression})表示。所以你的情况是:
`:<br><br><pre style="color:red">${ softTab }${ err.stack.replace(/\n/g, `<br>${softTab}`) }</pre>`
`:
${softTab}${err.stack.replace(/\n/g,`
${softTab})}`
有关这方面的进一步阅读:
这是我提出的一个解决方案,用于安装AirBarb style guide
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}`, {});
};
const renderError=err=>{
const softTab=' ; ; ; ; ;';
const errTrace=process.env.NODE_env!=“生产”?
`:
${softTab}${err.stack.replace(/\n/g,`
${softTab}')}`:'';
返回renderFullPage(`Server Error${errTrace}`,{});
};
以下是我为套件AirBarb style guide提出的解决方案
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}`, {});
};
const renderError=err=>{
const softTab=' ; ; ; ; ;';
const errTrace=process.env.NODE_env!=“生产”?
`:
${softTab}${err.stack.replace(/\n/g,`
${softTab}')}`:'';
返回renderFullPage(`Server Error${errTrace}`,{});
};
我想知道,既然你已经有了
,为什么还需要
?好主意!不知道为什么,我猜是因为换行?完全拆下
开关?是的。我甚至会避免使用“softTab”,只给
元素一个左填充:4ex代码>:-)我想知道,既然你已经有了
,为什么还需要
?好主意!不知道为什么,我猜是因为换行?完全拆下
开关?是的。我甚至会避免使用“softTab”,只给
元素一个左填充:4ex
:-)这会引发有关间距的错误…能够应用:
${softTab}${err.stack.replace(/\n/g,
${softTab})}
您的意思是eslint配置不喜欢填充替换表达式的空格吗?好的,选择一个更好的。这会引发关于间距的错误…能够应用:
${softTab}${err.stack.replace(/\n/g,
${softTab})}
你是说eslint配置不喜欢填充替换表达式的空格吗?好吧,选择一个更好的。