EDIT : Я створив крихітний модуль NPM за допомогою цієї утиліти. Він працює в Інтернеті та в Node, і настійно рекомендую його над кодом у моїй відповіді нижче, оскільки це набагато надійніше. Він також дозволяє зберегти нові рядки в результаті, якщо ви вручну вводите їх як \n
, і надає функції, коли ви вже використовуєте теги прямого шаблону для чогось іншого: https://github.com/iansan5653/compress-tag
Я знаю, що тут спізнююсь відповісти, але у прийнятій відповіді все ж є недолік заборонити відступ після розриву рядка, а це означає, що ви все ще не можете написати дуже приємний вигляд коду, лише уникнувши нових рядків.
Натомість, чому б не використовувати функцію з тегом буквальної букви ?
function noWhiteSpace(strings, ...placeholders) {
// Build the string as normal, combining all the strings and placeholders:
let withSpace = strings.reduce((result, string, i) => (result + placeholders[i - 1] + string));
let withoutSpace = withSpace.replace(/\s\s+/g, ' ');
return withoutSpace;
}
Тоді ви можете просто позначити будь-який буквальний шаблон шаблону, у якому потрібно мати перерви рядків:
let myString = noWhiteSpace`This is a really long string, that needs to wrap over
several lines. With a normal template literal you can't do that, but you can
use a template literal tag to allow line breaks and indents.`;
Це має недолік, можливо, несподіваної поведінки, якщо майбутній розробник не звик до синтаксису тегів шаблону або якщо ви не використовуєте описову назву функції, але зараз це виглядає як найчистіше рішення.