В шаблонных литералах es6 как можно обернуть длинный шаблонный литерал в многострочный, не создавая новую строку в строке?
Например, если вы делаете это:
const text = `a very long string that just continues
and continues and continues`
Затем он создаст символ новой строки для строки, интерпретируя его как новую строку. Как можно обернуть длинный литерал шаблона в несколько строк без создания новой строки?
javascript
ecmascript-6
template-literals
Ville Miekk-oja
источник
источник
Ответы:
Если вы введете продолжение строки (
\
) в точке новой строки в литерале, это не создаст новую строку на выходе:источник
1.1k Airbnb library
and continues...
он должен начинаться с 0-й позиции на новой строке, нарушая правило отступа.Это старый. Но это подошло. Если вы оставите какие-либо пробелы в редакторе, он поместит их туда.
просто сделай нормальный + символ
источник
Вы можете просто съесть разрывы строк внутри литерала шаблона.
источник
prettier
в вашей IDE настроен симпатичный форматер (например ).prettier
оборачивает это обратно в одну строку.РЕДАКТИРОВАТЬ : я сделал крошечный модуль NPM с этой утилитой. Он работает в Интернете и в Node, и я настоятельно рекомендую использовать его поверх кода, приведенного в ответе ниже, поскольку он гораздо более надежен. Он также позволяет сохранять новые строки в результате, если вы вручную вводите их как
\n
, и предоставляет функции для случаев, когда вы уже используете шаблонные литеральные теги для чего-то еще: https://github.com/iansan5653/compress-tagЯ знаю, что опаздываю, чтобы ответить здесь, но принятый ответ по-прежнему имеет недостаток, заключающийся в том, что после разрыва строки не разрешается делать отступы, а это означает, что вы все равно не можете написать очень красивый код, просто выходя из перевода строки.
Вместо этого, почему бы не использовать теговую функцию литерала шаблона ?
Затем вы можете просто пометить любой шаблонный литерал, в котором вы хотите иметь разрывы строк:
Это имеет тот недостаток, что может иметь непредвиденное поведение, если будущий разработчик не привык к синтаксису тегированного шаблона или если вы не используете описательное имя функции, но на данный момент это кажется самым чистым решением.
источник
Другим вариантом является использование
Array.join
, например, так:источник
Используйте старое и новое. Шаблонные литералы хороши, но если вы хотите избежать длинных литералов, чтобы иметь компактные строки кода, объедините их, и ESLint не вызовет суеты.
источник
Подобно ответу Дуга, это принимается моим конфигом TSLint и остается неизменным моим автоформатером IntelliJ:
источник
Решение, предложенное @CodingIntrigue, не работает для меня на узле 7. Что ж, оно работает, если я не использую продолжение строки в первой строке, иначе не получается.
Возможно, это не лучшее решение, но оно работает без проблем:
источник