Nos literais de modelo es6, como agrupar um literal de modelo longo em várias linhas sem criar uma nova linha na string?
Por exemplo, se você fizer isso:
const text = `a very long string that just continues
and continues and continues`
Em seguida, ele criará um novo símbolo de linha para a sequência, como interpretando-a para ter uma nova linha. Como agrupar o modelo longo literal em várias linhas sem criar a nova linha?
javascript
ecmascript-6
template-literals
Ville Miekk-oja
fonte
fonte
Respostas:
Se você introduzir uma continuação de linha (
\
) no ponto da nova linha no literal, ela não criará uma nova linha na saída:fonte
1.1k Airbnb library
and continues...
precisa começar da 0ª posição na nova linha, quebrando a regra do recuo.Este é antigo. Mas surgiu. Se você deixar algum espaço no editor, ele será colocado lá.
basta fazer o símbolo + normal
fonte
Você pode simplesmente comer as quebras de linha dentro do literal do seu modelo.
fonte
prettier
) bonito configurado no seu IDE.prettier
agrupa isso de volta à linha única.Edição : Eu fiz um pequeno módulo NPM com este utilitário. Ele funciona na web e no Node e eu recomendo o código na minha resposta abaixo, pois é muito mais robusto. Também permite preservar novas linhas no resultado se você as inserir manualmente como
\n
e fornece funções para quando você já usa tags literais de modelo para outra coisa: https://github.com/iansan5653/compress-tagSei que estou atrasado para responder aqui, mas a resposta aceita ainda tem a desvantagem de não permitir recuos após a quebra de linha, o que significa que você ainda não pode escrever um código muito bonito apenas escapando de novas linhas.
Em vez disso, por que não usar uma função literal de modelo marcado ?
Em seguida, você pode simplesmente marcar qualquer literal de modelo no qual deseja quebras de linha:
Isso tem a desvantagem de ter um comportamento inesperado se um desenvolvedor futuro não estiver acostumado à sintaxe do modelo marcado ou se você não usar um nome de função descritivo, mas parecer a solução mais limpa no momento.
fonte
Outra opção é usar
Array.join
, assim:fonte
Use o antigo e o novo. Os literais de modelo são ótimos, mas se você quiser evitar longos literais para ter linhas compactas de código, concatená-los e o ESLint não causará problemas.
fonte
Semelhante à resposta de Doug, isso é aceito pela minha configuração do TSLint e permanece intocado pelo meu formatador automático IntelliJ:
fonte
A solução proposta por @CodingIntrigue não está funcionando para mim no nó 7. Bem, funciona se eu não usar uma continuação de linha na primeira linha, caso contrário, falhará.
Esta provavelmente não é a melhor solução, mas funciona sem problemas:
fonte