vue中执行字符串脚本

文章讲述了如何在前端页面上通过在线脚本编辑器动态创建并执行JavaScript函数,特别是使用`newFunction`处理参数和同步/异步操作,以及在Vue组件中的应用实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前端页面上通过在线脚本编辑器写前端脚本,然后执行这个脚本,第一次处理这种问题,最后通过构造函数new Function解决

new Function可以传入参数,最后一个参数一定要是函数体,先通过params1,params2占位,调用函数时传入具体参数

var fun = new Function('params1,params2', this.textJs)
fun('小明', '3岁')

下面附上代码,写了个简单示例,示例中通过文本框输入脚本,然后执行

如果需要在脚本执行完之后做一些操作,而脚本中如果有接口请求等异步操作时,可以通过返回一个Promise函数来处理,这里通过定时器来模拟异步操作

<template>
  <div style="padding:50px;width:500px">
    <a-textarea
      v-model="textJs"
      placeholder="请输入脚本"
    >
    </a-textarea>
    <a-button @click="test">点击执行</a-button>
    <a-button @click="test1">点击执行(异步)</a-button>
    <div style="margin: 20px">
      执行结果:{{result}}
    </div>
  </div>

</template>

<script>
export default {
  name: 'index',
  components: {},
  data () {
    return {
      textJs: '',
      result: ''
    }
  },
  methods: {
    test () {
      var fun = new Function('params1,params2', this.textJs)
      this.result = fun('小明', '3岁')
    },
    test1 () {
      var fun = new Function('params1,params2', this.textJs)
      fun('小明', '3岁').then(res => {
        this.result = res
      })
    }
  }
}
</script>

如果Vue项目中的Base64字符串过长,可能会导致篇幅过长或页面加载缓慢的问题。为了解决这个问题,可以尝试以下方法: 1. 使用图片链接:不直接将图片转为Base64字符串,而是将图片上传至服务器并获取图片链接,然后将链接插入到Vue项目中。这样可以减小页面大小和加载时间。 2. 压缩图片:使用图片压缩工具,将图片的质量进行适当压缩,以减小图片的大小。可以使用一些开源的图片压缩库或在线图片压缩工具来实现。 3. 按需加载:将页面中的图片进行按需加载,当用户需要查看或使用图片时再进行加载。可以使用Vue的懒加载插件来实现图片的延迟加载,从而提高页面加载速度。 4. 分割内容:如果页面中包含大量的Base64图片,可以将内容进行分割,将图片部分放在不同的组件中,只在需要显示的时候再进行加载。这样可以提高页面的渲染速度。 综上所述,通过使用图片链接、压缩图片、按需加载和分割内容等方法,可以有效解决Vue项目中Base64字符串过长的问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [vue项目base64字符串转图片的实现代码](https://download.csdn.net/download/weixin_38646902/12955514)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [解决vue-quill-editor上传内容由于图片是base64的导致字符太长的问题](https://download.csdn.net/download/weixin_38720653/12953725)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [ruoyi-vue-pro yudao 项目报表设计器 积木报表模块启用及相关SQL脚本](https://download.csdn.net/download/zengwenbo225566/88234865)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值