Vue.use个人理解

2023-05-16

首先在注册全局API或者全局组件的时候,需要在注册install方法(当然也可以不注册),接下来我们看一下为什么要使用这个方法, 接下来跟着我一起看一下Vue.use的源码

// 首先我们注册一下方法或者组件  
import table from "./src/index.vue";
table.install = function(Vue) { // 在这里注册了install方法
  Vue.component(table.name, table );
};
export default table;

// 然后需要在main.js里面注册table组件
import table from "@/src/index.vue";
import Vue from "vue";
Vue.use(table) // 是不是都是这样引入的,那接下来我们看一下use的内部构造
import { toArray } from '../util/index'

export function initUse (Vue: GlobalAPI) {
  Vue.use = function (plugin: Function | Object) {
    const installedPlugins = (this._installedPlugins || (this._installedPlugins = []))
    if (installedPlugins.indexOf(plugin) > -1) {
      return this
    }

    // additional parameters
    const args = toArray(arguments, 1)
    args.unshift(this)
    if (typeof plugin.install === 'function') { // 可以看到这一步 做了一个install的判断
      plugin.install.apply(plugin, args)
    } else if (typeof plugin === 'function') {
      plugin.apply(null, args)
    }
    installedPlugins.push(plugin)
    return this
  }
}

// 这是use用到的一个方法
export function toArray (list: any, start?: number): Array<any> {
  start = start || 0
  let i = list.length - start
  const ret: Array<any> = new Array(i)
  while (i--) {
    ret[i] = list[i + start]
  }
  return ret
}

明白了吗,installedPlugins 里面包含了use所有的引入,那我们消化一下,总结一下use方法的使用流程
首先在Vue实例生成的过程中,将会遍历Vue.use上挂载的所有组件或者包或者函数,然后将挂载的东西按顺序放到 installedPlugins 数组里面,所以 Vue生成的时候是靠 installedPlugins 数组进行的xx挂载

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Vue.use个人理解 的相关文章

  • 使用IPV6+DDNS连接内网主机

    0 前言 IPV6已经普及多年 xff0c 但是作为互联网用户好像并没有在实用性上有更多感受 xff0c 或者说IPV6并没有让普通用户感觉到改变 我作为网络从业者其实也没有过多关注 在工作中普遍遇到的还是基于IPV4的网络 xff0c 比

随机推荐

  • HFish蜜罐的介绍和简单测试(二)

    目录 1 HFish使用说明 1 1 部署模型 1 2 添加 删除节点 默认节点 新增节点 删除节点 1 3 添加 删除蜜罐 直接修改蜜罐服务 创建模板 xff0c 应用到多节点 1 4 查看攻击 2 卸载 2 1 卸载Linux管理端 2
  • HFish蜜罐的介绍和简单测试(三)

    目录 0 HFish平台管理 0 1 报告管理 0 2 系统配置 1 蜜铒配置 1 1 什么是诱饵 1 2 蜜铒使用场景 1 3 蜜标使用场景 诱饵定制 分发接口 告警信息 在学习蜜罐时 xff0c HFish是个不错的选择 首先是免费使用
  • 网工神器:PNETLab模拟器踩坑过程

    目录 0 前言 1 PNETLab介绍 2 下载安装 2 1 下载 2 2 导入 2 3 启动 2 4 注册和登录 3 汉化 4 镜像 5 下载实验 6 控制台 5 1 HTML控制台 5 2 默认控制台 7 总结 0 前言 由于工作需要
  • 无线攻击笔记

    第11章 无线攻击 任务50 xff1a 无线渗透 exe 802 11只涵盖了下面黄字部分的2层 xff0c 802 2定义了LLC层 802 11 下面的协议组 xff0c F是正式标准 xff0c 大写 xff0c abcde小写是在
  • Jumpserver入门介绍

    大多数的安全设备都接触过 xff0c 只有堡垒机没有深入了解 xff0c 所以一直想了解一下堡垒机的安装和使用 市面上好多商业化的物理设备堡垒机 xff0c 目前没有接触 xff0c 幸好有有开源的堡垒机 Jumpserver 今天安装测试
  • Centos 7.6 源码编译安装 MariaDB 10.5.9

    文章目录 准备工作创建用户和组创建数据库相关目录删除数据库相关文件 安装相关包安装依赖库安装编译包 编译安装 96 MariaDB 96 配置 96 MariaDB 96 本文主要记录如何在 CentOS 7 6 中编译安装 MariaDB
  • 如何打开LK打印信息

    diff git a apps proc bootable bootloader lk include debug h b apps proc bootable bootloader lk include debug h index 59e
  • Activity的onConfigurationChanged函数调用时序

    Activity的onConfigurationChanged函数调用时序 时序图如下 xff1a 注1 xff1a 向当前系统中所有处于激活状态的进程发送 CONFIGURATION CHANGED 消息 当该消息被 Applicatio
  • Button点击事件的三种实现方式

    Button控件表示按钮 xff0c 它继承自TextView控件 xff0c 既可以显示文本 xff0c 又可以显示图片 xff0c 同时也允许用户通过点击来执行操作 xff0c 当Button控件被点击时 xff0c 被按下与弹起的背景
  • 【校招】面试_华为_通用软件工程师_二面

    1 面试信息 面试形式 xff1a 视频面试 面试时间 xff1a 2020 03 25 11 30 00 AM 面试时长 xff1a 40分钟 面试职位 xff1a 软件技术开发部 通用软件工程师 xff08 无线网络产品线 通用软件开发
  • 杂项(2)-Ubuntu故障修复(1)-记一次Ubuntu GNOME3图形界面与tty均崩溃的修复

    本节目录 问题描述系统环境问题复现操作过程恢复tty的正常使用 xff08 玄学操作部分 xff09 基本操作原则笔者实际操作 xff08 仅供参考 xff09 修复图形界面 总结 问题描述 网络上有很多关ubuntu于图形界面 xff08
  • Linux kernel development

    这几天一直在读经典的linux入门书 Linux kernel development 第三版即LKD xff0c 这是我第一次读英文版的技术书 xff0c 颇有些高兴 之所以读 xff0c 一是因为学过操作系统的理论知识 xff0c 想看
  • Windows + Ubuntu双系统开机选择界面美化

    美化开机界面 1 下载主题2 进行安装 1 下载主题 GRUB主题网址 xff1a https www opendesktop org s Gnome browse cat 61 109 amp ord 61 latest 点击左侧GRUB
  • 程序员的成长之路

    1 初识编程 清楚的记得2008年上大学 xff0c 当时学的第一门编程语言是汇编语言 xff0c 第一堂课上 xff0c 老师就说这个学科的挂科率是最高的 xff0c 大家做好心理准备 xff0c 后来证明 xff0c 这并不是下马威 x
  • 数组每隔X项就插入一个新的元素

    算法为 span class token number 1 span 43 x index var arr span class token operator 61 span span class token punctuation spa
  • git提交到本地仓库了,但是分支却推送不上去怎么回退到提交之前的状态

    span class token comment 他可以使你把本地仓库的代码回到带储存区 span git reset span class token operator span soft HEAD span class token op
  • git刷新远程分支 并且不影响本地仓库

    span class token comment 他可以使你拉取最新的git分支并且不影响你的本地仓库 span git fetch
  • 向linux kernel中添加cmdline的四种方式

    1 在dts中的bootargs中添加 2 在BoardConfig中添加 3 在uboot中添加 4 在android的Makefile中添加 在linux启动时候 xff0c 串口log中会打印cmdline 0 000000 c0 0
  • vue项目 高德/腾讯地图的地图实例中没有对应的API方法如何进行添加

    直接讲原因和解决方案 原因 xff1a 高德地图的实例JS里的API太多一般不会全部给你 xff0c 所以通常是根据用户的需求进行API配置 解决方法 xff1a 在public index html文件夹中 会有引入高德地图实例的scri
  • Vue.use个人理解

    首先在注册全局API或者全局组件的时候 xff0c 需要在注册install方法 xff08 当然也可以不注册 xff09 xff0c 接下来我们看一下为什么要使用这个方法 xff0c 接下来跟着我一起看一下Vue use的源码 首先我们注