今天看自己项目代码,打开引入插件包的main.js,留意到引入包或者文件有两种方式:

import Vue from 'vue'
import echarts from 'echarts'
import global from './global.js'     //我自己创建的全局变量函数文件
Vue.prototype.$echarts=echarts;
Vue.use(global)

于是就对上述两种方式引入产生了疑问,这两种方式引入有什么区别吗?
通过资料查询,了解到:

1、不是为了vue写的插件(插件内要处理)不支持Vue.use()加载方式
2、非vue官方库不支持new Vue()方式
3、每一个vue组件都是Vue的实例,所以组件内this可以拿到Vue.prototype上添加的属性和方法。

其实我们知道Vue.prototype是在原型上定义,使其在每个Vue中的实例中可用,那么Vue.use()流程是怎么走的?我们可以通过源代码了解其过程:
创建自定义全局函数global.js


// 全局函数
exports.install = function (Vue, options) {Vue.prototype.alertResult = function (options){//全局函数1var result;switch(options){case 'success':result='操作成功';break; case 'operate fail':result='操作失败';break;   case 'invalid data':result='数据格式错误';break;           case 'request time out':result='请求超时';break;        }return result;};};

通过上述引入方式,我们进行引入注册,这样子我们就可以在其他页面使用该全局方法如 this.alertResult (‘success’)
那么,我们可以通过源代码分析,了解Vue.use()实现过程:

export function initUse (Vue: GlobalAPI) {/*https://cn.vuejs.org/v2/api/#Vue-use*/Vue.use = function (plugin: Function | Object) {/* istanbul ignore if *//*标识位检测该插件是否已经被安装*/if (plugin.installed) {return}// additional parametersconst args = toArray(arguments, 1)/*a*/args.unshift(this)if (typeof plugin.install === 'function') {/*install执行插件安装*/plugin.install.apply(plugin, args)} else if (typeof plugin === 'function') {plugin.apply(null, args)}plugin.installed = truereturn this}
}

这就是vue.use和vue.prototype的区别,希望能够帮助大家进一步理解
参考:https://www.jianshu.com/p/2d8d62355684

vue.use和vue.prototype的区别相关推荐

  1. Vue.use()和Vue.prototype详解

    Vue.use()作用 官方文档中提到,Vue.use()可以用来注册全局的插件.使用Vue.use()后可以使得插件能够在项目的任意位置上使用. 那么什么时候使用Vue.use()呢?其实官方文档中 ...

  2. vue方法调用失败后多次调用_浅析Vue中 computed / watch / methods的区别

    思考:请说下Vue中computed 和 watch 的区别( 面试题 ) 构造选项 computed / watch / methods computed ● computed 起初构想 在Vue的 ...

  3. [vue] 组件和插件有什么区别?

    [vue] 组件和插件有什么区别? 组件 (Component) 是用来构成你的 App 的业务模块,它的目标是 App.vue.插件 (Plugin) 是用来增强你的技术栈的功能模块,它的目标是 V ...

  4. 微信小程序和vue双向绑定哪里不一样_浅析Vue 和微信小程序的区别、比较

    写了vue项目和小程序,发现二者有许多相同之处,在此想总结一下二者的共同点和区别. 一.生命周期 先贴两张图: vue生命周期 小程序生命周期 相比之下,小程序的钩子函数要简单得多. vue的钩子函数 ...

  5. vue计算属性与监听器的区别

    vue计算属性与监听器的区别 计算属性(computed) 监听器(watch) 监听data中没有的值 监听data中有的值 使用时触发 使用不会触发 值有变化就触发 值有变化就触发 没有settt ...

  6. Vue3项目生成并下载二维码,关于vue-qr.vue与qrcode.vue插件之间的区别

    1.vue-qr.vue与qrcode.vue大致区别 vue-qr.vue:体积较大,大概4M左右,可以给二维码添加中心logo,生成二维码为img标签,可下载 qrcode.vue:体积较小,不能 ...

  7. 小程序生命周期与vue生命周期的关系、区别

    生命周期 目录 生命周期 1.什么是生命周期? 2.生命周期的分类 3.什么是生命周期函数 5.应用的生命周期函数 6.页面的生命周期函数 数据响应 ✅作者简介: 我是痴心阿文,你们的学友哥,今天给大 ...

  8. vue.extend与vue.component的区别和联系

    一味的闷头开发,却对基础概念缺乏理解,是个大坑... 查阅官网后现对自己的理解记录一下,用于日后复习巩固 Vue.extend({}) 简述:使用vue.extend返回一个子类构造函数,也就是预设部 ...

  9. vue-router路由、mixin混入、vue-resource、axios、计算属性watch、moment.js、vuex、vue-cli、数据双向绑定、搭建vue环境、vue实例、配置启动项

    路由vue-router介绍: // 1.前端路由核心:锚点值的改变,根据不同的锚点值,渲染指定dom位置的不同数据.// 2.vue中,模板数据不是通过ajax请求的,而是调用函数获取到模板内容// ...

最新文章

  1. 网页制作插入新的元素,并且为插入的元素添加事件
  2. 智慧城市建设的关键技术研究
  3. CentOS 5升级Python版本(2.42.7)
  4. 第一章:渗透测试之信息搜集
  5. 华为机试HJ35:蛇形矩阵
  6. 2020 年百度之星·程序设计大赛 - 初赛一 Drink
  7. atitit.MyEclipse10 中增加svn插件故障排除
  8. EEMD算法原理及应用
  9. 1258 近义词句子
  10. 股票放量一定就是好事么,为什么从爆大量的高位开始下跌?
  11. Window10 IoT家庭物联网网关系统设计
  12. 开发中的各种时间格式转换(二)
  13. 通过Bellman算子理解动态规划
  14. 喜讯 雨笋教育优秀学员荣获望城区网络安全攻防演练二等奖
  15. 戴尔刀片服务器盘柜型号,戴尔PowerEdge 4220 42U 机架式盘柜
  16. 活久见,Windows系统源码竟然真的泄露了!
  17. matlab试判断稳定性,MATLABsimulink稳定性分析时域分析
  18. 常见英语面试问题及答案
  19. Java 9 被无情抛弃,Java 8 直接升级到 Java 10!!
  20. 实地审核和系统审核_实地审核及调查

热门文章

  1. 主流深度相机选型(双目相机)
  2. 苹果手机数据线充不了电_手机充不满电?教你四个办法解决!
  3. jetson agx orin换源
  4. 2018年重塑科技行业的15个趋势之(11-15)
  5. 阿里云文件存储NAS和对象存储OSS区别对比如何选择?
  6. ROS2与turtlebot4仿真入门教程-turtlebot4多点导航
  7. 新视野大学英语(第2版)答案
  8. 0xc00000f怎么解决 0xc00000f错误代码解决方法[多图]
  9. 【Git CMD】Git常用命令总结
  10. HTML5标签无障碍体验