Con el surgimiento de node.js, las cadenas de varias líneas se están volviendo más necesarias en JavaScript.
- ¿Hay alguna forma especial de hacer esto en Node.JS, incluso si no funciona en los navegadores?
- ¿Hay algún plan o al menos una solicitud de función para hacer esto que pueda apoyar?
Ya sé que puedes usar \n\
al final de cada línea, eso no es lo que quiero.
print( '<div>')
para imprimir mi HTML. No tiene pestañas ni retornos, lo cual es "ordenado", pero sería más fácil usar una<<EOF..EOF
cadena de estilo Perl o un archivo JSP de estilo Java. De todos modos, necesito poder ingresar variables en la cadena de varias líneas cuando se trata. Lo haré sin por ahora.\n
implementaciones, así que ... eso está bastante bien solo a los navegadores.Respuestas:
nodo v4 y versiones actuales del nodo
A partir de ES6 (y, por lo tanto, de las versiones de Node mayores que v4), se agregó un nuevo tipo intrínseco de "plantilla literal" a Javascript (denotado por las marcas de retroceso "` ") que también se puede usar para construir cadenas de varias líneas, como en :
que evalúa a:
'this is a\nsingle string'
.Tenga en cuenta que la nueva línea al final de la primera línea se incluye en la cadena resultante.
Los literales de plantilla se agregaron para permitir a los programadores construir cadenas donde los valores o el código podrían inyectarse directamente en un literal de cadena sin tener que usar
util.format
u otros templaters, como en:que imprimirá "el resultado de 10 más 10 es 20." a la consola
Versiones anteriores de nodo
La versión anterior del nodo puede usar un carácter de "continuación de línea" que le permite escribir cadenas de varias líneas como:
que evalúa a:
'this is a single string'
.Tenga en cuenta que la nueva línea al final de la primera línea no se incluye en la cadena resultante.
fuente
Las cadenas multilínea son una parte actual de JavaScript (desde ES6) y son compatibles con node.js v4.0.0 y posteriores.
fuente
¿Qué buscas exactamente cuando te refieres a cadenas multilínea?
¿Estás buscando algo como:
¿Cuál se imprimiría como "Some String Here"?
Si es así, tenga en cuenta que lo anterior es Javascript válido, pero esto no es:
¿Cual es la diferencia? Un espacio después de la
\
. Diviértete depurando eso.fuente
Eche un vistazo al módulo mstring para node.js.
nota: el módulo (a partir del 13/12/2012) no permite espacios en blanco antes del cierre
***/
, por lo que deberá hackearlo usted mismo.fuente
Además de lo que la gente ha estado publicando aquí, he escuchado que la concatenación puede ser mucho más rápida que unirse a javascript vms modernos. Sentido:
Será más lento que:
En algunos casos. http://jsperf.com/string-concat-versus-array-join/3
Como otro lado, encuentro esta una de las características más atractivas en Coffeescript . Sí, sí, lo sé, los que odian odiarán.
Es especialmente bueno para fragmentos de HTML. No digo que sea una razón para usarlo, pero desearía que aterrizara en tierra ecma :-(.
Josh
fuente
.coffee
a.js
, los números de línea se mezclan. No probé CoffeeScript, pero cuando probé Groovy, me resultó bastante difícil depurar sin obtener los.java
archivos generados .Echa un vistazo a CoffeeScript: http://coffeescript.org
Admite cadenas de varias líneas, interpolación, comprensiones de matriz y muchas otras cosas buenas.
fuente
Si usa io.js, tiene soporte para cadenas de varias líneas como están en ECMAScript 6.
Consulte "Nuevos métodos de cadena" en http://davidwalsh.name/es6-io para obtener detalles y "cadenas de plantilla" en http://kangax.github.io/compat-table/es6/ para conocer la compatibilidad de seguimiento.
fuente
Además de la respuesta aceptada:
que se evalúa como: 'esta es una \ ncadena simple'.
Si desea utilizar la interpolación de cadenas pero sin una nueva línea, simplemente agregue la barra diagonal inversa como en la cadena normal:
=> 'esta es una sola cadena'.
Sin embargo, tenga en cuenta que el espacio en blanco manual es necesario:
=> 'esta es una cadena única'
fuente
Vanilla Javascipt no admite cadenas de varias líneas. Los preprocesadores de idiomas están resultando factibles en estos días.
CoffeeScript, el más popular de estos tiene esta característica, pero no es mínimo, es un nuevo lenguaje. El compilador traceur de Google agrega nuevas características al lenguaje como un superconjunto, pero no creo que las cadenas de líneas múltiples sean una de las características adicionales.
Estoy buscando crear un superconjunto mínimo de javascript que admita cadenas multilínea y un par de características más. Empecé este pequeño lenguaje hace un tiempo antes de escribir el compilador inicial para coffeescript. Planeo terminarlo este verano.
Si los precompiladores no son una opción, también existe el pirateo de la etiqueta de script donde almacena sus datos de varias líneas en una etiqueta de script en el html, pero le da un tipo personalizado para que no se evada. Luego, utilizando JavaScript, puede extraer el contenido de la etiqueta del script.
Además, si coloca un \ al final de cualquier línea en el código fuente, hará que la nueva línea se ignore como si no estuviera allí. Si desea la nueva línea, debe finalizar la línea con "\ n \".
fuente