Как я могу использовать цвета в строках шаблона ES6?

В ES5 и ниже я мог использовать цвета ANSI в строках JS, таких как

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

С шаблонными строками ES6 я получаю ошибку:

SyntaxError: Octal literals are not allowed in template strings.

я пытался \u{31m} но это тоже не сработало.

1 ответ

Решение

Согласно стандарту восьмеричные экранирования не обрабатываются в "строгом режиме". В стандарте нет обоснования, но, вероятно, повторяющееся использование термина "наследие" в сочетании с "восьмеричным" является попыткой убедить читателя в том, что единственная цель этого стандарта - для веб-браузеров, использующих UTF-8.

Ваше испытание с \u{31m} было не в порядке: фигурные скобки находятся вокруг шестнадцатеричных цифр. То, что вы, вероятно, имели в виду, выглядело бы так:

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

который будет таким же, как

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

"\u{1b}" или же "\u001b" является escape-символом (см. ECMA-35 и ECMA-48) и не предназначен для печати. Другие символы в строке могут быть напечатаны (и не должны быть экранированы).

Дальнейшее чтение:

\033[31м -> \x1b[31м

это сработало для меня

Другие вопросы по тегам