ES6模板文字 - 从字符串中删除\n

san*_*a-p 1 javascript variables ecmascript-6

我正在将我的多行变量更改为Template Literals令人惊讶,但后来我注意到我所做的缩进被转换(缩小)到\n我在原始代码上做的缩进.我怎么能避免这种情况?

例如:

var $div = $(`<div class='proj' id='projects'>
                 <div class='bot-nav'>${txt}</div>
           </div>`);
Run Code Online (Sandbox Code Playgroud)

它被转换为:

var $div = $("<div class='proj' id='projects'>\n                 <div class='bot-nav'>"+txt+"</div>\n           </div>");
Run Code Online (Sandbox Code Playgroud)

我想要这个:

var $div = $("<div class='proj' id='projects'><div class='bot-nav'>"+txt+"</div></div>");
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点?

Lie*_*iel 6

虽然使用.replace(像其他答案中建议的那样)会起作用,但这并不是一种很酷的新方式;)

我认为您正在寻找的是ES2015中引入的文字标签功能(又名"标签模板").

这里有一堆:

https://github.com/declandewet/common-tags

你可能想要oneLine(或oneLineTrim):

oneLine`
  foo
  bar
  baz
`
// "foo bar baz"
Run Code Online (Sandbox Code Playgroud)

注意:oneLine显然,replace内部使用.


Sey*_*oya 6

let literal = `template     literal
               string so many holes`;

literal.replace(/\s+/g, ' ');
Run Code Online (Sandbox Code Playgroud)

这会将一个或多个空格替换为一个空格。