You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在JavaScript运行时设置模板字面量的模板与参数

运行时动态替换模板字符串变量的解决方案

从数据库获取的模板内容示例:

Hello ${customerName}: Welcome! to our site. This is dummy.Please reach us at ${websiteLink}

请求载荷中包含变量对应的值,直接使用模板字面量包裹模板字符串无法完成替换,以下是两种可行的实现方案:

方案一:正则表达式替换(推荐)

通过正则匹配模板中的${变量名}格式,从参数对象中提取对应值完成替换,安全无风险,不会触发ESLint报错。

代码实现:

const args = { customerName: "Ram", websiteLink: "https://www.google.com" };
const template = getMessageTemplateFromDb('customer');

const getMessageContent = (args, template) => {
  // 全局匹配所有${xxx}格式的变量,捕获变量名部分
  return template.replace(/\${(\w+)}/g, (match, key) => {
    // 从args中取对应值,变量不存在时保留原模板片段
    return args[key] ?? match;
  });
};

const messageContent = getMessageContent(args, template);

方案二:Function构造函数(需谨慎使用)

若模板和参数均为可信内容(无用户输入注入风险),可通过Function构造函数动态生成解析逻辑,但可能触发ESLint的no-new-func规则,需按需配置。

代码实现:

const args = { customerName: "Ram", websiteLink: "https://www.google.com" };
const template = getMessageTemplateFromDb('customer');

const getMessageContent = (args, template) => {
  const keys = Object.keys(args);
  const values = Object.values(args);
  // 动态创建函数,传入变量名并返回解析后的模板字符串
  return new Function(...keys, `return \`${template}\`;`)(...values);
};

const messageContent = getMessageContent(args, template);

内容的提问来源于stack exchange,提问作者Kgn-web

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 13:03:12