【问题标题】:How can I use colors in ES6 template strings?如何在 ES6 模板字符串中使用颜色?
【发布时间】:2016-06-08 01:54:53
【问题描述】:

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

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

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

SyntaxError: Octal literals are not allowed in template strings.

我试过\u{31m},但也没用。

【问题讨论】:

    标签: javascript node.js terminal ansi-escape


    【解决方案1】:

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

    您对\u{31m} 的试用未达到目标:花括号围绕十六进制数字。你的意思可能是这样的:

    "\u{1b}[31m Hello World\u{1b}[0m"
    

    相同
    "\u001b[31m Hello World\u001b[0m"
    

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

    进一步阅读:

    【讨论】:

    • 作为最短的答案,我建议将“\033”替换为“\u{1b}”,这正是上面所解释的。
    【解决方案2】:

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

    它对我有用

    【讨论】:

      猜你喜欢
      • 2016-09-19
      • 2016-07-01
      • 2020-02-07
      • 2018-01-07
      • 1970-01-01
      • 2015-09-14
      • 2021-04-01
      • 2015-02-18
      相关资源
      最近更新 更多