广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >解析Vue.use()是干什么的
  • 346
分享到

解析Vue.use()是干什么的

2024-04-02 19:04:59 346人浏览 八月长安
摘要

目录1. Vue.use是什么,了解一下!?1.1 main.js中的Vue.use()1.2 简单解释一下这里的import的逻辑,1.3 Vue.use()代码2. 看一下 vu

start

  • 前几天使用了一个别人封装的电子签名组件:vueEsign。
  • 在初始化的时候有这么一行代码:Vue.use(vueEsign)
  • 之前使用element-ui,也需要使用Vue.use()
  • 这行代码到底是什么?学习一下。

本文所有演示内容,vue.js版本为2.6.14

1. Vue.use是什么,了解一下!?

1.1 main.js中的Vue.use()

import Vue from 'vue'
import App from './App.vue'
import router from './router'


import vueEsign from 'vue-esign'
Vue.use(vueEsign)

Vue.config.productionTip = false

new Vue({
  router,
  render: h => h(App)
}).$mount('#app')

1.2 简单解释一下这里的import的逻辑,

  • 如果from后面是路径,直接沿路径去寻找对应文件。
  • 如果from后面是一个名称,那就引入是第三方模块,会去node_modules中寻找对应名称的文件夹。

node_modulespackage.JSONmain属性

1.3 Vue.use()代码

找到对应文件

对应代码

  function initUse (Vue) {

  // 1. Vue.use是一个函数
  Vue.use = function (plugin) {

    // 2. 定义一个数组 如果this._installedPlugin不存在,会执行`this._installedPlugins = []
    var installedPlugins = (this._installedPlugins || (this._installedPlugins = []));

    // 3. 判断是否已经注册了,已经注册了直接return
    if (installedPlugins.indexOf(plugin) > -1) {
      return this
    }
    
    
    // 4.获取其他参数  例如: Vue.use(plugin,a,b,c) 中的 a b c
    var args = toArray(arguments, 1);

    // 5.参数第一项,加一个Vue实例进去
    args.unshift(this);

    // 6. plugin 有 install 这个方法
    if (typeof plugin.install === 'function') {
      // 7. 执行一下install,再把参数传递进去  (可以看插件的install方法,接受第一个参数,就是Vue实例)
      plugin.install.apply(plugin, args);
    } else if (typeof plugin === 'function') {
      // 8. 如果plugin 本身就是函数 直接执行
      plugin.apply(null, args);
    }

    // 9. 来一个数组存储已经注册的插件
    installedPlugins.push(plugin);
    
    return this
  };
}

2. 看一下 vueEsign 插件的install是什么?

node_modules\vue-esign\src\idnex.js
// 1. 引入一个vue组件,实际上就是一个对象
import vueEsign from './index.vue'

// 2.对象install属性是一个方法,它接受一个参数 Vue
vueEsign.install = function (Vue) {

  // 3. 判断是否已经安装了这个插件(这里this指向为vueEsign,在Vue.use中用apply改写的)
  if (this.installed) {
    return
  }
  this.installed = true

  // 4. 在Vue上注册一下组件
  Vue.component('vueEsign', vueEsign)
}
export default vueEsign

3.看一下 element-ui的install是什么?

node_modules\element-ui\src\index.js
// 1. 它也是一个函数
const install = function(Vue, opts = {}) {
  // 2.读取了部分其他本地化配置
  locale.use(opts.locale);
  locale.i18n(opts.i18n);

  // 3.components就是element-ui的组件组成的数组,遍历一下,在Vue上注册了这些组件。  
  // (!!可以发现这里和另一个插件有相同点,都是在install的第一个参数Vue上注册组件,)
  components.forEach(component => {
    Vue.component(component.name, component);
  });
  
  // 4. 这里的 Vue.use 原理是一样的(可以对照截图,它这里后续是在Vue上注册了指令)
  Vue.use(InfiniteScroll);
  Vue.use(Loading.directive);

  // 5.下面都是在Vue原型上挂载属性或方法
  Vue.prototype.$ELEMENT = {
    size: opts.size || '',
    zIndex: opts.zIndex || 2000
  };

  Vue.prototype.$loading = Loading.service;
  Vue.prototype.$msgbox = MessageBox;
  Vue.prototype.$alert = MessageBox.alert;
  Vue.prototype.$confirm = MessageBox.confirm;
  Vue.prototype.$prompt = MessageBox.prompt;
  Vue.prototype.$notify = Notification;
  Vue.prototype.$message = Message;

};

4. Vue.use() 总结

  1. 首先 Vue.use 本身是一个函数;
  2. Vue.use这个函数做了这些操作:
  • 判断插件是否注册;
  • 如果插件自带insatll属性,执行它,同时传递一个Vue构造函数作为第一个参数,以及use中的其他参数;
  • 如果插件本身就是函数,执行它,同时传递一个Vue构造函数作为第一个参数,以及use中的其他参数
  • 记录这个插件已经注册;

3.暂时遇到的插件本身都是一个对象,然后install中都会拿到传递来的Vue构造函数进行一些绑定操作。例如绑定组件,例如在原型上添加方法。

5.为什么有的库就不需要使用Vue.use

例如常见的aixos引入

import axiOS from 'axios'
Vue.prototype.$axios=axios

axios本身是不依赖Vue去运行的,axios本身就可以在浏览器端或者node端都能进行Http请求。

这里挂载到Vue原型的$axios属性上,只是为了方便使用。

end

  • 感觉就是 组件 需要和 Vue构造函数 进行交互的时候,才需要Vue.use()。
  • 本质就是传递一个 Vue构造函数 给插件使用,仅此而已。

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

--结束END--

本文标题: 解析Vue.use()是干什么的

本文链接: https://www.lsjlt.com/news/150888.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
  • 解析Vue.use()是干什么的
    目录1. Vue.use是什么,了解一下!1.1 main.js中的Vue.use()1.2 简单解释一下这里的import的逻辑,1.3 Vue.use()代码2. 看一下 vue...
    99+
    2022-11-13
  • Vue.use的作用是什么
    本篇内容介绍了“Vue.use的作用是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在使用 Eleme...
    99+
    2022-10-19
  • Vue.use()的作用及原理解析
    目录前言Vue.use是什么?Vue.use() 的源码中的逻辑Vue.use()什么时候使用?前言 最近帮忙面试前端的时候,就随口一问,发现很多2年以上的vue开发者说不出vue....
    99+
    2022-11-13
  • Vue.use()的用法和install的用法解析
    目录Vue.use()和install用法介绍为什么这样做?Vue.use为什么要使用install疑问从源码分析vue官网是这样说的Vue.use()和install用法 介绍 在...
    99+
    2022-11-13
  • java是干什么的
    Java是一门面向对象编程语言,它是静态面向对象编程语言的代表,具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程,可用于编写桌面应用程...
    99+
    2022-10-16
  • javascript是干什么的
    本篇内容介绍了“javascript是干什么的”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
    99+
    2022-10-19
  • phpcms是干什么的
    phpcms是建立和管理动态网站的,基于PHP的开源内容管理系统。它为用户提供了一套完整的解决方案,方便管理网站的内容、用户和权限,拥有丰富的模板系统和扩展功能,使得网站具有更好的外观和功能,还具有良好的性能和安全性。本教程操作系统:Win...
    99+
    2023-07-13
  • discuz是干什么的
    discuz是一个功能强大、灵活可定制的论坛软件,适用于各种规模和类型的在线社区,为用户提供了一个互相交流、分享知识和经验的平台,同时也为管理员提了一种管理和维护社区的工具。无论是个人博客、学术研讨会、商业论坛还是兴趣社区,discuz都可...
    99+
    2023-08-16
  • Vue.use()在new Vue()之前使用的原因是什么
    这篇文章将为大家详细讲解有关Vue.use()在new Vue()之前使用的原因是什么,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。使用Vue前端框架开发有些时间了,官方...
    99+
    2022-10-19
  • mongodb是干什么用的
    MongoDB是一种开源的、面向文档的NoSQL数据库管理系统,用于存储和管理大规模、高性能的非结构化数据。它可以用于处理各种类型的...
    99+
    2023-09-12
    mongodb
  • nplayer是干什么用的
    nPlayer是一款跨平台的媒体播放器,主要用于播放各种格式的音频和视频文件。无论是在移动设备上还是在桌面电脑上,nPlayer都提供了出色的性能和功能,让用户能够享受到高质量的音视频体验。nPlayer是一款跨平台的媒体播放器,主要用于播...
    99+
    2023-07-28
  • dedecms是干什么用的
    Dedecms是一款开源的内容管理系统,其主要用途和功能是:1、 提供了一个易于使用的后台管理界面,可以轻松地创建、编辑和发布各种类型的内容;2、允许用户自定义网站的外观和布局;3、支持多语言网站;4、设置不同用户角色和权限,以限制对网站内...
    99+
    2023-08-03
  • es6的class是干什么的
    本教程操作环境:windows7系统、ECMAScript 6版、Dell G3电脑。基础es6引入了Class(类)这个概念,class关键字用于快速地定义“类”。新的class写法让对象原型的写法更加清晰、更像面向对象编程的语法,也更加...
    99+
    2022-11-22
    javascript ES6
  • jQuery Mobile是干什么用的
    jQuery Mobile 是一个开源的移动端 Web 开发框架,它基于 jQuery 和 jQuery UI 构建,旨在帮助开发者...
    99+
    2023-09-13
    jQuery Mobile
  • 码云Gitee是干什么的
    作为一个开发者,我们经常需要一个安全可信赖的代码托管平台。在国内, GitLab 和 GitHub 的使用越来越受到限制,因此就有了国内的替代品,比如 Gitee(码云)。那么,码云 Gitee 究竟是干什么的呢?本文就为大家详细介绍。一、...
    99+
    2023-10-22
  • html主要是干什么的
    小编给大家分享一下html主要是干什么的,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!html是用来描述网页的一种语言,其全称为超文本标记语言,是一种标记语言;它包括一系列标签,通过这些标签可以将网络上的文档格式统一,使分...
    99+
    2023-06-14
  • gitee官网是干什么的
    Gitee是一家国内开源的代码托管平台,类似于国外的GitHub。它提供了免费的Git代码仓库、私有仓库、存储空间、WebIDE、代码审查、讨论区、集成测试等功能。Gitee的创立,得益于源于开源的大背景。国内很多开源项目在GitHub上进...
    99+
    2023-10-22
  • python爬虫是干什么的
    python爬虫是指对指定url中获取对我们有用的数据信息,通过代码实现数据的大量获取,只要你能通过浏览器访问的数据都可以通过爬虫获取。实例:爬取图片并下载,先准备好以下几点。pip install requestspip install ...
    99+
    2022-10-12
  • 服务器是干什么的
    服务器也称伺服器,指一个管理资源并为用户提供服务的计算机设备,它具备承担服务并且保障服务的能力,可以用来搭建网站程序、存储数据、放置程序、游戏运作等。...
    99+
    2022-10-22
  • 有柿app是干什么的
    有柿app是一款针对健康和健身领域的手机应用程序。其优势有:1、提供了一套全面的健康跟踪工具;2、提供了一款饮食记录功能,方便用户追踪自己的饮食习惯;3、应用程序将提供有关如何进行正确的锻炼以及如何制定适合自己的计划的建议;4、提供了一个社...
    99+
    2023-07-28
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作