Saltar al contenido

Crear cadenas de varias líneas en JavaScript

septiembre 23, 2021
apple touch icon@2

usted pueden tienen cadenas de varias líneas en JavaScript puro.

Este método se basa en la serialización de funciones, que es definido para ser dependiente de la implementación. Funciona en la mayoría de los navegadores (ver más abajo), pero no hay garantía de que siga funcionando en el futuro, así que no confíe en él.

Usando la siguiente función:

function hereDoc(f) {
  return f.toString().
      replace(/^[^/]+/*!?/, '').
      replace(/*/[^/]+$/, '');
}

Puede tener aquí documentos como este:

var tennysonQuote = hereDoc(function() {/*!
  Theirs not to make reply,
  Theirs not to reason why,
  Theirs but to do and die
*/});

El método ha sido probado con éxito en los siguientes navegadores (no mencionado = no probado):

  • IE 4 – 10
  • Opera 9.50 – 12 (no en 9-)
  • Safari 4-6 (no en 3-)
  • Cromo 1-45
  • Firefox 17 – 21 (no en 16-)
  • Rekonq 0.7.0 – 0.8.0
  • No es compatible con Konqueror 4.7.4

Sin embargo, ten cuidado con tu minificador. Tiende a eliminar comentarios. Para el Compresor YUI, un comentario que comienza con /*! (como el que usé) se conservará.

Creo que un verdadero la solución sería usar CoffeeScript.

ACTUALIZACIÓN DE ES6: Puede usar comillas invertidas en lugar de crear una función con un comentario y ejecutar toString en el comentario. La expresión regular debería actualizarse solo para eliminar espacios. También podría tener un método de prototipo de cadena para hacer esto:

let foo = `
  bar loves cake
  baz loves beer
  beer loves people
`.removeIndentation()

Alguien debería escribir este método de cadena .removeIndentation …;)

close