Com o surgimento do node.js, as seqüências de várias linhas estão se tornando mais necessárias no JavaScript.
- Existe uma maneira especial de fazer isso no Node.JS, mesmo que não funcione nos navegadores?
- Existem planos ou pelo menos uma solicitação de recurso para fazer isso que eu possa suportar?
Eu já sei que você pode usar \n\
no final de cada linha, não é isso que eu quero.
print( '<div>')
para imprimir meu HTML. Ele não possui guias nem retornos que são "legais", mas seria mais fácil usar uma<<EOF..EOF
sequência de caracteres Perl ou um arquivo JSP no estilo Java. De qualquer forma, eu preciso ser capaz de inserir variáveis na string de várias linhas quando se trata. Vou ficar sem por agora.\n
implementações, então ... isso é muito bom apenas para navegadores.Respostas:
nó v4 e versões atuais do nó
No ES6 (e, portanto, nas versões do Nó superiores à v4), um novo tipo intrínseco "literal de modelo" foi adicionado ao Javascript (indicado por back-ticks "` "), que também pode ser usado para construir sequências de várias linhas, como em :
que avalia como:
'this is a\nsingle string'
.Observe que a nova linha no final da primeira linha é incluída na sequência resultante.
Literais de modelo foram adicionados para permitir que os programadores construíssem cadeias onde valores ou códigos poderiam ser injetados diretamente em uma literal de cadeia sem ter que usar
util.format
ou outros modelos de modelo, como em:que imprimirá "o resultado de 10 mais 10 é 20." para o console.
Versões mais antigas do nó
A versão mais antiga do nó pode usar um caractere "continuação de linha", permitindo que você escreva seqüências de várias linhas, como:
que avalia a:
'this is a single string'
.Observe que a nova linha no final da primeira linha não está incluída na sequência resultante.
fonte
Cadeias de linhas múltiplas são uma parte atual do JavaScript (desde o ES6) e são suportadas no node.js v4.0.0 e mais recente.
fonte
O que exatamente você está procurando quando se refere a cadeias de linhas múltiplas.
Você está procurando algo como:
O que seria impresso como "Some String Here"?
Nesse caso, lembre-se de que o Javascript acima é válido, mas isso não é:
Qual é a diferença? Um espaço após o
\
. Divirta-se depurando isso.fonte
Dê uma olhada no mstring módulo para Node.js.
nota: o módulo (em 13/12/11) não permite espaços em branco antes do fechamento
***/
, portanto, você precisará invadir você mesmo.fonte
Como um aparte do que as pessoas estão postando aqui, ouvi dizer que a concatenação pode ser muito mais rápida do que participar de vms javascript modernos. Significado:
Será mais lento que:
Em certos casos. http://jsperf.com/string-concat-versus-array-join/3
Como outro aparte, acho esse um dos recursos mais atraentes do Coffeescript . Sim, sim, eu sei, odiadores vão odiar.
É especialmente bom para trechos de html. Eu não estou dizendo que é uma razão para usá-lo, mas eu gostaria que ele pousasse em ecma land :-(.
Josh
fonte
.coffee
para.js
, os números de linha são desordenados. Não experimentei o CoffeeScript, mas quando experimentei o Groovy, achei bastante difícil depurar sem obter os.java
arquivos gerados .Dê uma olhada no CoffeeScript: http://coffeescript.org
Ele suporta strings de várias linhas, interpolação, compreensão de array e muitas outras coisas interessantes.
fonte
Se você usar o io.js., ele terá suporte para cadeias de linhas múltiplas como estão no ECMAScript 6.
Consulte "Novos métodos de string" em http://davidwalsh.name/es6-io para obter detalhes e "strings de modelo" em http://kangax.github.io/compat-table/es6/ para rastrear a compatibilidade.
fonte
Além da resposta aceita:
que avalia como: 'esta é uma string \ n Única'.
Se você deseja usar a interpolação de string, mas sem uma nova linha, basta adicionar barra invertida como na string normal:
=> 'esta é uma única string'.
Lembre-se de que o espaço em branco manual é necessário:
=> 'esta é uma string única'
fonte
O Javascipt de baunilha não suporta cadeias de linhas múltiplas. Atualmente, os pré-processadores de idiomas estão se tornando viáveis.
O CoffeeScript, o mais popular deles, possui esse recurso, mas não é mínimo, é uma nova linguagem. O compilador traceur do Google adiciona novos recursos ao idioma como um superconjunto, mas não acho que as seqüências de várias linhas sejam um dos recursos adicionados.
Eu estou olhando para fazer um superconjunto mínimo de javascript que suporta seqüências de linhas múltiplas e alguns outros recursos. Comecei esse pequeno idioma um pouco antes de escrever o compilador inicial para o coffeescript. Eu pretendo terminar este verão.
Se os pré-compiladores não forem uma opção, também há a tag de script hack, na qual você armazena seus dados de várias linhas em uma tag de script no html, mas atribui a ele um tipo personalizado para que não seja avaliado. Depois, usando javascript, você pode extrair o conteúdo da tag de script.
Além disso, se você colocar um \ no final de qualquer linha no código-fonte, isso fará com que a nova linha seja ignorada como se não estivesse lá. Se você quiser a nova linha, precisará terminar a linha com "\ n \".
fonte