执行含有【模板字符串】html代码

1、如果需要引用模板字符串本身,在需要时执行,可以像下面这样写。
// 写法一
let str = 'return ' + '`Hello ${name}!`';
let func = new Function('name', str);
func('Jack') // "Hello Jack!"

// 写法二
let str = '(name) => `Hello ${name}!`';
let func = eval.call(null, str);
func('Jack') // "Hello Jack!"

2、项目中应用

变量configHtml中存储的是通过配置生成的html文本

<img id='img' alt='' width='100%' height='100%' src='http://139.9.126.196/group1/M00/00/00/wKgK1V9YIfKASIkNABBBq1nFOEs481.png'>

<div style='position:absolute;top:44.5px;left:69px;border:1px solid white;border-radius:5px;padding: 5px 10px'><pre style='margin:0;background:transparent;color:white;font-size:20px'>二级RO原水产率
 ${num} us/cm
二级RO产率
 ${num2}</pre></div>
            
<div style='position:absolute;top:23.5px;left:750px;border:1px solid #4cf01c;border-radius:5px;padding: 5px 10px'><pre style='margin:0;background:transparent;color:white;font-size:'>  产水运行
EDI  产水电阻率
${num3} MO</pre></div>

模板字符串的核心应用代码,这里因为不确定变量的个数,所以采用 …param传递参数

let str = 'return '+'`'+configHtml+'`';
// let getHtml = new Function( 'num', 'num2', 'num3', str );
let getHtml = new Function( ...paramNameList, str );    // paramNameList=['num', 'num2', 'num3']

// configHtml = getHtml(123, num2, num3);
configHtml = getHtml(...paramList);                    // paramList=[ 123, num2, num3]



3、简单的实现上述功能的完整代码
const num = 123;
const num2 = (Math.random()*10000).toFixed(2);
const num3 = (Math.random()*10000).toFixed(3);
let configHtml = `
<img id='img' alt='' width='100%' height='100%' src='http://139.9.126.196/group1/M00/00/00/wKgK1V9YIfKASIkNABBBq1nFOEs481.png'>

<div style='position:absolute;top:44.5px;left:69px;border:1px solid white;border-radius:5px;padding: 5px 10px'><pre style='margin:0;background:transparent;color:white;font-size:20px'>二级RO原水产率
 ${num} us/cm
二级RO产率
 ${num2}</pre></div>
            
<div style='position:absolute;top:23.5px;left:750px;border:1px solid #4cf01c;border-radius:5px;padding: 5px 10px'><pre style='margin:0;background:transparent;color:white;font-size:'>  产水运行
EDI  产水电阻率
${num3} MO</pre></div>
`;

let str = 'return '+'`'+configHtml+'`';
let paramNameList=['num', 'num2', 'num3'];
// let getHtml = new Function( 'num', 'num2', 'num3', str );
let getHtml = new Function( ...paramNameList, str );   // paramNameList=['num', 'num2', 'num3']

let paramList=[ num, num2, num3];
// configHtml = getHtml(123, num2, num3);
configHtml = getHtml(...paramList);    // paramList=[ 123, num2, num3]
console.log("configHtml=",configHtml )

浏览器控制台运行结果截图:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值