При использовании литералов шаблонов я заметил проблему с форматами таблиц.
Когда вы делаете что-то вроде этого:
var hello = 'Hello',
bye = 'Goodbye';
console.log(`
${hello} World
${bye} World
`);
Поскольку часть {bye} на четыре буквы меньше слова «До свидания», строка выводится как:
Hello World
Goodbye World
Это становится еще более сложным для интерполяции массивов или объектов.
Мне интересно, нашел ли кто-нибудь способ справиться с такой проблемой. Где форматирование таблицы с интервалами для строки может быть сохранено во время интерполяции.
Предположим, что теперь тег шаблона использует строки и массивы. Массивы объединяются пробелами между словами.
var hello = 'Hello',
bye = 'Goodbye',
phrase = ['I', 'like'];
console.log(someTag`
${hello} World
${bye} World
Some things I like:
${phrase} sunsets.
${['I', 'like']} candy.
`);
На всякий случай вы не можете сказать, что квадратные скобки массива, кавычки, доллар, фигурная скобка и т. д. учитываются в длину строки (визуально) перед интерполяцией. Пробелы между словами учитываются в длине строки после интерполяции. На отступы влияет потеря лишних символов и добавление символов во время обработки тега.
На этот вопрос есть принятый ответ, но я хотел бы увидеть больше обсуждения. У этой проблемы может быть более одного ответа.