正常情况下,项目里不会用eval函数,但是万一要调用一个全局的js库,就需要用eval做些骚操作,这个时候编译会提示: is strongly discouraged as it poses security risks and may cause issues with minification.
警告是可以忽略,刚开始我也没当回事,有风险就有风险,可控,我知道自己写的是啥。但是,今天我改代码的时候出了问题。就是dev时候正常,但是打包以后,不按照预期执行,编译出来的代码就不是我要的逻辑。
问题的关键是:使用eval的函数不能是全局函数(需要包装在一个对象里),然后这个函数内容要简单,不要里面定义各种变量,然后被eval调用,免得被编译时候优化掉
简单的代码实例问题
上一段简单的代码:
<template>
<div>
<button @click="btn">测试</button>
</div>
</template>
<script setup lang="ts">
function myfun(param:number){
let ret = 0
eval("ret = param 1")
return ret;
}
function btn() {
let ret = myfun(1);
console.log(ret);
}
</script>
dev运行在浏览器点击