如何在 ES6 模板字符串中使用颜色?

nik*_*oss 5 javascript terminal ansi-escape node.js

在 ES5 及以下版本中,我可以在 JS 字符串中使用 ANSI 颜色,例如

"\033[31m Hello World\033[0m"

使用 ES6 模板字符串时,我收到错误:

SyntaxError: Octal literals are not allowed in template strings.
Run Code Online (Sandbox Code Playgroud)

我已经尝试过\u{31m},但也没有成功。

Tho*_*key 5

根据标准,八进制转义在“严格模式”下不被处理。标准中没有给出任何理由,但重复使用术语“传统”与“八进制”可能是试图说服读者,该标准的唯一目的是使用 UTF-8 的 Web 浏览器。

您的试验\u{31m}偏离了目标:花括号位于十六进制数字周围。你的意思可能是这样的:

"\u{1b}[31m Hello World\u{1b}[0m"
Run Code Online (Sandbox Code Playgroud)

这将是相同的

"\u001b[31m Hello World\u001b[0m"
Run Code Online (Sandbox Code Playgroud)

or是转义字符(请参阅 ECMA "\u{1b}"- "\u001b"35 和 ECMA-48),并且不可打印。字符串中的其他字符是可打印的(并且不必转义)。

进一步阅读:

  • 作为最短的答案,我建议将“\033”替换为“\u{1b}”,这正是上面所解释的。 (2认同)

小智 2

\033[31m --> \x1b[31m

这对我有用