vue.use()干了什么

Vue.use()方法主要用于安装Vue插件,它可以执行插件对象的install方法或直接运行函数。当传入的是对象时,install方法会被调用,常用于注册全局组件和实例方法;若是函数,则直接执行。例如,在ElementUI中,Vue.use()用于注册组件和实例方法。通过这种方式,开发者可以方便地扩展Vue的功能。

vue.use()执行完干了什么,一文给你搞懂

   当初死记硬背的时候就知道他是执行了install,我当时理解为和npm install 一样现去下载一下,就是不明白为啥会这样运行,然后去翻阅一下资料才发现,理解的驴唇不对马嘴,下面是正解

如果use的是一个js对象,将执行对象内的install方法
如果use的是一个js的function,直接执行function

作用:可以再vue原型上挂载一些实例,注册全局组件

例子1、注册全局组件并在对象上挂载数值

import HelloWorld from '@/components/HelloWorld.vue'
export default {
  /**vue执行这里的install时候自动传入两个参数第一个是vue实例,第二个是配置项option */
  install: function (Vue,option) {
    // 这里的Vue就是你调用install方法时传递过来的
    // 可以在Vue原型中加一些东西
    Vue.prototype.$num = 123
    // 注册全局组件
    Vue.component(HelloWorld.name, HelloWorld)
  }
}

2、mian.js中调用

import components from '@/assets/components.js'
/**这里自动执行js文件的install方法 */
Vue.use(components)

ElementUI 就是这样实现的

const components = [ Pagination, Dialog, Autocomplete/* 此处由于篇幅省略若干个组件 */];
const install = function(Vue, opts = {}) {
  locale.use(opts.locale);
  locale.i18n(opts.i18n);
  // 注册全局组件
  components.forEach(component => {
    Vue.component(component.name, component);
  });
  Vue.use(InfiniteScroll);
  Vue.use(Loading.directive);
  // 添加实例方法
  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;
};
/* istanbul ignore if */
if (typeof window !== 'undefined' && window.Vue) {
  install(window.Vue);
}
export default {
  version: '2.13.0',
  locale: locale.use,
  i18n: locale.i18n,
  install,
  CollapseTransition,
  Loading,
  Pagination,
  Dialog,
  Autocomplete,
  // ...other components
};

当然在ElementUI 中也可以单独使用每个组件,所以ElementUI 在每个组件都有一个单独install暴露,这样使用vue.use即可按需引用

  • 插件传入的如果是一个对象,则执行其install方法,如果是一个函数,则执行它自身,并bind this为null,然后传入额外的参数
  • if (typeof plugin.install === 'function') {
      plugin.install.apply(plugin, args);
    } else if (typeof plugin === 'function') {
      plugin.apply(null, args);
    }
    

    如果插件没有被注册过,那么注册成功之后会给插件添加一个installed的属性,其值为true。Vue.use方法内部会检测插件的installed属性,从而避免重复注册插件《vue-router》
    在这里插入图片描述

      Vue.use其实并不神秘,内部还是我们平时使用的这些东西,仅仅只是给他们套上了一层高端的外衣而已。我们在开发中,也可以尝试使用这种方式,不仅简单,而且有逼格

Vue.js 中,`use` 方法主要用于安装插件。它是 Vue 构造器的一个静态方法,允许开发者将插件集成到 Vue 应用中。`use` 方法的典型用途包括注册全局组件、指令、混入(mixins)以及添加全局方法或属性。 ### 使用方式 `Vue.use(plugin)` 是调用该方法的标准形式,其中 `plugin` 是一个插件对象或函数。如果插件是一个对象,它必须提供一个 `install` 方法。如果插件是一个函数,它将被直接调用。 ```javascript // 插件定义 const MyPlugin = { install(Vue, options) { // 添加全局方法或属性 Vue.prototype.$myMethod = function () { // 逻辑实现 }; // 注册全局组件 Vue.component('my-component', { template: '<div>My Component</div>' }); // 添加全局指令 Vue.directive('my-directive', { bind(el, binding, vnode) { // 指令逻辑 } }); } }; // 使用插件 Vue.use(MyPlugin); ``` ### 文档与示例 `use` 方法的官方文档可以在 Vue.js 的插件开发指南中找到。它提供了详细的说明,包括如何定义插件、如何避免重复安装插件等[^1]。 `use` 方法的一个常见用例是安装 Vue Router 或 Vuex 等官方库。例如,使用 Vue Router: ```javascript import Vue from 'vue'; import VueRouter from 'vue-router'; // 安装 Vue Router 插件 Vue.use(VueRouter); // 创建路由实例 const router = new VueRouter({ routes: [ { path: '/home', component: Home } ] }); // 创建 Vue 实例 new Vue({ router, render: h => h(App) }).$mount('#app'); ``` 在上述示例中,`Vue.use(VueRouter)` 用于安装 Vue Router 插件,该插件通过 `install` 方法注册全局组件和方法[^1]。 ### 注意事项 - `Vue.use()` 会自动阻止多次注册相同的插件。 - 插件应该在创建 Vue 实例之前调用,以确保插件在应用中的全局可用性。 - 插件可以接受可选的参数,例如配置选项。 通过 `Vue.use()`,开发者可以轻松地扩展 Vue 应用的功能,同时保持代码的模块化和可维护性。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值