ES6长字符串字面量

16

谷歌上充满了有关如何从ES6字符串字面量中获益的博客文章和答案,而几乎每篇深入解释此功能的博客文章都有一些关于如何实现多行字符串的细节:

let a = `foo
bar`;

但我找不到任何关于如何实现像下面这样的长单行字符串的详细信息:

let a = `This is a very long single line string which might be used to display assertion messages or some text. It has much more than 80 symbols so it would take more then one screen in your text editor to view it. Hello ${world}`

是否有任何提示或解决方法,还是应该坚持使用 es3 字符串?


1
你是在问如何格式化代码,使其仍然是单行,但可以在编辑器中显示多行吗?这与JS或ES6无关,这是一些编辑器可以做到的事情。 - Sergiu Paraschiv
@SergiuParaschiv 这是真的,但这仅仅是编辑器的责任吗? 对于Python,有PEP8样式指南,建议不要使用超过80个符号的行。 那么对于JavaScript,难道没有这样的指南吗? 如何在github上查看超过80行的代码呢? - canufeel
很遗憾,JavaScript 社区没有自己的 PEP8。有各种风格和数百个样式指南。在 GitHub 上,你肯定可以看到超过80行的代码,你只需要滚动一下。为什么你需要编写这么长的字符串呢?也许有解决方法。 - Gio Polvara
2个回答

28
你可以使用\来换行。换行符 (\n) 不会在字符串本身中出现。
let a = `This is a very long single line string which might be used \
to display assertion messages or some text. It has much more than \
80 symbols so it would take more then one screen in your text \
editor to view it. Hello ${world}`

请注意不要缩进字符串,否则缩进会在字符串中:

let a = `Hello\
         World`;

a === 'Hello         World' // true

3

补充一下Gpx的回答:你可以使用这个库来保留你的缩进。

import {oneLineTrim} from 'common-tags'

oneLineTrim`
  https://news.com/article
  ?utm_source=designernews.com
`)
// https://news.com/article?utm_source=designernews.com

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接