У меня есть HTML-шаблоны электронной почты, хранящиеся в базе данных MySQL. Большинство из них включают переменные JavaScript. Я попытался сохранить их, используя литералы шаблонов (например: ${this.auth.user.name}
), но это вернет не переменную, а точную строку. Я предполагаю, что моя проблема в том, что строка заключена в двойные или одинарные кавычки, а не в обратные кавычки.
Итак, мой JavaScript выглядит следующим образом, где template
— это массив объектов, запрошенных из моего MySQL-шоу здесь.
var email_template: this.template[0].body;
The actual output is Hello ${this.auth.name}!
Я ожидаю выхода Hello Jack!
У вас есть идеи, в чем может быть проблема?
Заранее спасибо, Тибор
Попробуйте сделать new Function
вот так:
const name = "Jack";
const string = "Hello ${name}";
const actualString = new Function("return `" + string + "`").call(string);
console.info(actualString);
Если вы извлекаете что-то из БД, это не литерал шаблона. Пожалуйста, не используйте
new Function
илиeval
, иначе вы открываете огромную дыру в безопасности вашего приложения, если только вы сначала не проанализируете и не подтвердите шаблон полностью.