【Vue报错】The target environment doesn‘t support dynamic import() syntax so it‘s not possible to use ex

如何在Vue组件中导入在线js代码

比如我们要导入一个在线js:https://unpkg.com/threejs-toys@0.0.8/build/threejs-toys.module.cdn.min.js,我们直接在组件的mounted模块中书写以下代码

    mounted() {
        const s = document.createElement('script');
            s.type = "module";
            s.scr = "https://unpkg.com/threejs-toys@0.0.8/build/threejs-toys.module.cdn.min.js"
            document.body.appendChild(s);
            //console.log(s)
    }

console输出s<script type="module" src="https://unpkg.com/threejs-toys@0.0.8/build/threejs-toys.module.cdn.min.js"></script>,我们可以在F12下看到<script>标签已经添加到网页中。
在这里插入图片描述

如果我们想往<script>标签中添加自定义的代码,可以增加s.innerHTML = "//TODO: your code",考虑到跳转路由后会销毁当前组件,但是网页中<script>标签不会清除。如果后续回到当前组件,<script>又会挂载一次,导致重复<script>,所以在销毁组件时要同时清除<script>标签

<template>
</template>

<script>
export default {
    
    methods: {
        
    },
    mounted() {
        const s = document.createElement('script');
        s.type = 'module';
        s.id = 'jfyy';
        s.innerHTML = "var a = 0\nvar b = 0"
        document.body.appendChild(s);
        console.log(s)
    },
    destroyed() {
        var s = document.getElementById("jfyy")
        s.remove()
    }
}
</script>

<style scoped>
</style>

没加destroyed时在路由间反复跳转会造成冗余

没加destroyed时,在路由间反复跳转会造成冗余

在这里插入图片描述

加上destroyed的运行结果
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值