首页IT科技vue踩坑填坑(一):引入模块组件(Vue组件中如何引入外部的js文件)

vue踩坑填坑(一):引入模块组件(Vue组件中如何引入外部的js文件)

时间2025-08-04 14:34:06分类IT科技浏览5847
导读:https://zhuanlan.zhihu.com/p/379504188...

https://zhuanlan.zhihu.com/p/379504188

背景

在Vue中                ,通常我们引入一个js插件都是使用npm 方式下载然后import使用的                。但是我现在本地有了js文件或者是一个远程js文件链接                        ,我不想使用npm install xxx 的方式        ,有什么办法吗?

方式一

简单粗暴            ,直接在Vue项目的index.html 中使用全局的方式引入                        ,比如: <title>测评</title> <link type="text/css" href="//at.alicdn.com/t/font_43459_d124thd3lgu.css" rel="stylesheet"> {{ie9 /resources/js/history.min.js}}

// 暴力引入 缺点:不使用该js插件的组件也会加载            ,而我只想在某个Vue组件中使用该js插件                        。

方式二

如果是下载到本地的静态文件        ,可以使用import 的方式导入        。

import { xxx } from ‘…/js/xxx.js’ //注意路径

缺点:下载的本地静态文件才可以                        ,远程js文件不可以            。

方式三

在Vue组件加载完后                ,手动操作DOM插入js插件                        。

export default {

mounted() {

let script = document.createElement(‘script’);

script.type = ‘text/javascript’;

script.src = ‘你的js文件地址’;

document.body.appendChild(script);

},

}

该方式直接操作DOM    ,只在当前组件插入js插件            。

方式四

使用render方法        。

export default {

components: {

‘xxx-js’: {

render(createElement) {

return createElement(

‘script’,

{

attrs: {

type: ‘text/javascript’,

src: ‘你的js文件地址’,

},

},

);

},

},

},

}

// 使用 在页面中调用

使用的时候                        ,使用 在页面中调用                        。

方式五

高阶玩法                。将方式三包装成一个js插件                    ,使用 Promise,js加载成功                    ,调用resolve                        ,js加载失败    ,调用reject    。

function loadJs(src) {

return new Promise((resolve,reject)=>{

let script = document.createElement(‘script’);

script.type = “text/javascript                ”;

script.src= src;

document.body.appendChild(script); script.onload = ()=>{ resolve(); } script.onerror = ()=>{ reject(); }

})

}

export default loadJs

使用的时候:

import loadJs from ‘./loadJs’

export default {

mounted(){

loadJs(‘http://api.map.baidu.com/xxx.js’).then(()=>{

// 加载成功                ,进行后续操作

})

}

}

方式六

更高阶方式                        。可以动态替换要加载的js文件                    。

包装一个importJs.js 插件。

// 导入外部js

import Vue from ‘vue’

Vue.component(‘remote-script’, {

render: function (createElement) {

var self = this;

return createElement(‘script’, {

attrs: {

type: ‘text/javascript’,

src: this.src

},

on: {

load: function (event) {

self.KaTeX parse error: Expected EOF, got } at position 30: …vent); }̲, error…

emit(‘error’, event);

},

readystatechange: function (event) {

if (this.readyState == ‘complete’) {

self.$emit(‘load’, event);

}

}

}

});

},

props: {

src: {

type: String,

required: true

}

}

});

使用方式:

// 引入

import ‘common/importJs.js’

// html使用的地方

(完)

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
图片换背景图怎么换(美图秀秀怎么换背景) 大数据风控解决方案(【K哥爬虫普法】大数据风控第一案:从魔蝎科技案件判决,看爬虫技术刑事边界)