Convertir una cadena en una cadena de plantilla

Resuelto KOLANICH asked hace 9 años • 23 respuestas

¿Es posible crear una cadena de plantilla como una cadena habitual?

let a = "b:${b}";

y luego convertirlo en una cadena de plantilla,

let b = 10;
console.log(a.template()); // b:10

sin evaly new Functionotros medios de generación de código dinámico?

KOLANICH avatar Mar 21 '15 18:03 KOLANICH
Aceptado

En mi proyecto he creado algo como esto con ES6:

String.prototype.interpolate = function(params) {
  const names = Object.keys(params);
  const vals = Object.values(params);
  return new Function(...names, `return \`${this}\`;`)(...vals);
}

const template = 'Example text: ${text}';
const result = template.interpolate({
  text: 'Foo Boo'
});
console.log(result);
Expandir fragmento

Mateusz Moska avatar Dec 07 '2016 11:12 Mateusz Moska

Como la cadena de su plantilla debe hacer referencia a la bvariable dinámicamente (en tiempo de ejecución), la respuesta es: NO, es imposible hacerlo sin la generación de código dinámico.

Pero evales bastante simple:

let tpl = eval('`'+a+'`');
alexpods avatar Mar 21 '2015 12:03 alexpods