РЕДАКТИРОВАТЬ : я сделал крошечный модуль 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.`;
Это имеет тот недостаток, что может иметь непредвиденное поведение, если будущий разработчик не привык к синтаксису тегированного шаблона или если вы не используете описательное имя функции, но на данный момент это кажется самым чистым решением.