Necesito algo como heredoc en JavaScript. ¿Tienes alguna idea para esto? Necesito la funcionalidad de varios navegadores.
Encontré esto:
heredoc = '\
<div>\
<ul>\
<li><a href="#zzz">zzz</a></li>\
</ul>\
</div>';
Creo que funcionará para mí. :)
javascript
heredoc
VeroLom
fuente
fuente
Respuestas:
Pruebe ES6 String Template , puede hacer algo como
Puede utilizar esta gran función hoy con 6to5 o TypeScript
fuente
No, lamentablemente JavaScript no admite nada como heredoc.
fuente
Qué tal esto:
Simplemente reemplace "/ * AQUÍ" y "AQUÍ * /" con la palabra de su elección.
fuente
*/
en su documento aquí.Sobre la base de la respuesta de Zv_oDD, creé una función similar para una reutilización más fácil.
Advertencia: esta es una característica no estándar de muchos intérpretes de JS y probablemente se eliminará en algún momento, pero como estoy creando un script para usar solo en Chrome, ¡lo estoy usando! ¡ Nunca confíe en esto para los sitios web orientados al cliente!
Utilizar:
Devoluciones:
Notas:
Ediciones:
2/2/2014 - cambiado para no meterse con el prototipo de Función y usar el nombre heredoc en su lugar.
26/05/2017: espacio en blanco actualizado para reflejar los estándares de codificación modernos.
fuente
Dependiendo del tipo de motor JS / JS que esté ejecutando (SpiderMonkey, AS3), simplemente puede escribir XML en línea, en el que puede colocar texto en varias líneas, como heredoc:
fuente
ES6 Template Strings tiene la función heredoc.
Puede declarar cadenas encerradas con tilde invertido (``) y se pueden expandir a través de varias líneas.
También puede incluir expresiones dentro de las cadenas de plantillas. Estos se indican mediante el signo de dólar y llaves (
${expression}
).De hecho, hay más características como Tagged Temple Strings y Raw Strings en él. Encuentre la documentación en
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/template_strings
fuente
Me siento mal por escribir una respuesta separada para simplemente una extensión de la respuesta de @NateFerrero , pero tampoco creo que editar su respuesta sea apropiado, así que vota a @NateFerrero si esta respuesta fue útil para ti.
tl; dr: para aquellos que deseen utilizar comentarios en bloque dentro de su heredoc ...
Principalmente necesitaba heredocs de Javascript para almacenar un bloque de CSS, por ejemplo
Sin embargo, como puede ver, me gusta comentar mi CSS y, desafortunadamente (como lo sugiere el resaltado de sintaxis), el primero
*/
finaliza el comentario general, rompiendo el heredoc.Para este propósito específico (CSS), mi solución fue agregar
a la cadena dentro de @NateFerrero's
heredoc
; en forma completa:y utilícelo agregando un espacio entre
*
y/
para los comentarios del bloque "interno", así:El
replace
simplemente encuentra/* ... * /
y elimina el espacio para hacer/* ... */
, preservando así la heredoc hasta que fue llamado.Por supuesto, puede eliminar los comentarios usando
También puede admitir
//
comentarios si los agrega a la cadena:Además, puede hacer algo diferente al espacio único entre
*
y/
, como-
:si solo actualiza la expresión regular de manera adecuada:
¿O tal vez le gustaría una cantidad arbitraria de espacios en blanco en lugar de un solo espacio?
fuente
Puede utilizar CoffeeScript , un lenguaje que se compila en JavaScript. El código se compila uno a uno en el JS equivalente y no hay interpretación en tiempo de ejecución.
Y por supuesto, tiene heredocs :)
fuente
ES5 y versiones anteriores
ES6 y versiones posteriores
resultado
fuente
Puede usar Sweet.js Macros para agregarlo así, como lo creó Tim Disney en esta publicación
Tenga en cuenta que este enfoque usa comillas invertidas como delimitadores de cadena en su lugar:
fuente
Como han dicho otros, las cadenas de plantillas de ES6 le brindan la mayor parte de lo que proporcionan los heredocs tradicionales.
Si desea ir un paso más allá y usar una cadena de plantilla etiquetada,
theredoc
hay una buena función de utilidad que le permite hacer esto:fuente
Si tiene html y jQuery a mano y la cadena es HTML válido, esto puede ser útil:
Si el texto tiene comentarios "<! - ->" en el medio, también funciona, pero una parte del texto puede ser visible. Aquí está el violín: https://jsfiddle.net/hr6ar152/1/
fuente
ejemplo
con caché: - crea una función de plantilla simple y guarda la función: (la segunda vez funciona rápido)
fuente
Estoy publicando esta versión porque evita el uso de expresiones regulares para algo tan trivial.
En mi humilde opinión, la expresión regular es una ofuscación que se creó como una broma entre los desarrolladores de perl. el resto de la comunidad los tomó en serio y ahora pagamos el precio, décadas después. no use expresiones regulares, excepto por compatibilidad con versiones anteriores del código heredado. No hay excusa en estos días para escribir código que no sea inmediatamente legible y comprensible para humanos. regex viola este principio en todos los niveles.
También agregué una forma de agregar el resultado a la página actual, no es que se haya solicitado.
fuente