我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Vue.use()的作用及原理解析

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Vue.use()的作用及原理解析

前言

最近帮忙面试前端的时候,就随口一问,发现很多2年以上的vue开发者说不出vue.use()为什么用,什么时候用,原理是什么
所以我整理一下网上的资源,写一篇毕竟容易理解的文章

在Vue中引入使用第三方库通常我们都会采用import的形式引入进来,但是有的组件在引入之后又做了Vue.use()操作,有的组件引入进来又进行了Vue.prototype.$something = something,那么它们之间有什么联系呢?

先说一下Vue.prototype,在Vue项目中通常我们引入axios来进行请求接口数据,通过npm安装之后我们只需在我们的文件中import axios from "axios"就可以使用,有时候我们会加上一句Vue.prototype.$axios = axios,prototype我们应该是再熟悉不过了

Vue.prototype.axios,通过我们会在全局注册这个方法,然后在周后的文件中都可以通过$axios直接来使用axios

Vue.use是什么?

官方对 Vue.use() 方法的说明:通过全局方法 Vue.use() 使用插件,Vue.use 会自动阻止多次注册相同插件,它需要在你调用 new Vue() 启动应用之前完成,Vue.use() 方法至少传入一个参数,该参数类型必须是 Object 或 Function,如果是 Object 那么这个 Object 需要定义一个 install 方法,如果是 Function 那么这个函数就被当做 install 方法。在 Vue.use() 执行时 install 会默认执行,当 install 执行时第一个参数就是 Vue,其他参数是 Vue.use() 执行时传入的其他参数。就是说使用它之后调用的是该组件的install 方法。

Vue.use() 的源码中的逻辑

export function initUse (Vue: GlobalAPI) {
 Vue.use = function (plugin: Function | Object) {
  const installedPlugins = (this._installedPlugins || (this._installedPlugins = []))
  if (installedPlugins.indexOf(plugin) > -1) {
   return this
  }
  const args = toArray(arguments, 1)
  args.unshift(this)
  if (typeof plugin.install === 'function') {
   plugin.install.apply(plugin, args)
  } else if (typeof plugin === 'function') {
   plugin.apply(null, args)
  }
  installedPlugins.push(plugin)
  return this
 }
}

在源码中首先限制了它传入的值的类型只能是Function或者Object,然后判断了该插件是不是已经注册过,防止重复注册,然后调用了该插件的install方法,源码中也有介绍到Vue.use()可以接受多个参数的,除第一个参数之后的参数我们都是以参数的形式传入到当前组件中。

Vue.use()什么时候使用?

它在使用时实际是调用了该插件的install方法,所以引入的当前插件如果含有install方法我们就需要使用Vue.use(),例如在Vue中引用Element如下:

import Vue from 'vue'
import Element from 'element-ui'
Vue.use(Element)

因为在Element源码中会暴露除install方法,所以才需要用Vue.use()引入。

我们也可以在自己的vue项目中自己定义一个install方法,然后通过Vue.use()方法来引入测试一下:

const plugin = {
  install() {
    alert("我是install内的代码")
  },
}
import Vue from "vue"
Vue.use(plugin) // 页面显示"我是install内的代码"

当我们打开页面就会弹出“我是install内的代码”提示。

到此这篇关于Vue.use()的作用及原理解析的文章就介绍到这了,更多相关Vue.use()作用内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Vue.use()的作用及原理解析

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Pinia介绍及工作原理解析

这篇文章主要为大家介绍了Pinia介绍及工作原理解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
2023-03-06

详解SpringBootStarter作用及原理

大家都知道基于SpringBoot开发项目可以简化Spring应用的搭建以及开发过程,提高程序员开发效率,这是由于其“约定大约配置”的策略及其自动装配的特点,Starter就是自动装配的具体实现,本文详细介绍了SpringBootStarter作用及原理,欢迎大家来阅读学习
2023-05-17

JavaScript闭包原理及作用的示例分析

小编给大家分享一下JavaScript闭包原理及作用的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!简介说明本文介绍JavaScript的闭包的作用、用途及其原理。闭包的定义闭包是指内部函数总是可以访问其所在的外部
2023-06-22

Spring注解@Scope原理及用法解析

Spring注解@Scope用于指定bean的作用域,即bean的生命周期。@Scope注解有以下几个常用的取值:1. singleton:单例模式,即每次获取该bean时都返回同一个实例。这是默认的作用域。2. prototype:原型模
2023-08-17

Linux NFS机制工作原理及实例解析

什么是NFS network file system 网络文件系统 通过网络存储和组织文件的一种方法或机制。 为什么要用NFS 前端所有的应用服务器接收到用户上传的图片、文件、视频,都会统一放到后端的存储上。 共享存储的好处:方便数据的查找
2022-06-03

解析DNS工作原理

  DNS是互连网核心协议之一,不管是上网浏览,还是编程开发,都需要了解一点它的知识。本文就来学习DNS工作原理,希望您读完本文也对它有所了解。  DNS(Domain Name System)是“域名系统”的英文缩写,是一种组织成域层次结构的计算机和网络服务命名系统,它用于TCP/IP,所提供
解析DNS工作原理
2024-04-18

go 原子操作的方式及实现原理全面深入解析

这篇文章主要为大家介绍了go 原子操作的方式及实现原理深入解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
2023-05-16

编程热搜

目录