Vue中注册组件的几种方法

306 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第4天,点击查看活动详情

今天我们来介绍一下Vue中注册组件的几种方式,总有一款是你喜欢的!

Vue.use()注册组件插件

这里将全局组件当作插件了

Vue.use() 是用来使用插件的,那么传入的 Router 和 Vuex 就是这里指的插件,而这个插件本质上又是一个 install 方法。至于 install 方法内部实现了什么逻辑就由插件自身的业务决定了

组件注册☞局部注册

//导入组件
import Hamburger from '@/components/Hamburger'export default {
  components: {
    // 注册组件
    'Hamburger':Hamburger   ///可简写Hamburger
  }
}

组件注册☞全局注册

//导入组件
import Hamburger from '@/components/Hamburger'Vue.component('组件名',组件对象) //注册组件

组件注册☞Vue.use()依次全局注册

(以插件的形式注册,也就是将组件变成插件)

install就是为了使用vue.use(),将组件当作插件使用

import PageTools from './PageTools'
import UploadExcel from './UploadExcel'export default {
  // 插件的初始化, 插件给你提供的全局的功能, 都可以在这里配置
  install(Vue) {
    // 进行组件的全局注册
    Vue.component('PageTools', PageTools) // 注册工具栏组件
    Vue.component('UploadExcel', UploadExcel) // 注册导入excel组件
  }
}

image.png

1、components/index.js里写

image.png

2、在main.js里写

image.png

组件注册☞Vue.use()批量全局注册

(以插件的形式注册,也就是将组件变成插件)

install就是为了使用vue.use(),将组件当作插件使用

所有组件批量注册:使用组件时,无需导入注册,可标签直接使用

注意:但是每个组件必须写name

批量注册使用 require.context()方法

components/index.js里写

// 方法二:批量注册全局组件 webpack提供的
export default {
  install(Vue) {
    // require.context('文件路径', '是否深层次查找', '正则')
    const requireComponent = require.context('./', true, /.vue$/) // 全局注册当前文件夹下.vue文件
    // requireComponent.keys() 获取到的是数组,所有组件路径
    requireComponent.keys().forEach(item => {
      // 获取每一个组件对象
      const moduleObj = requireComponent(item).default
      // 全局注册
      Vue.component(moduleObj.name, moduleObj)
    })
  }
}
​
​

在main.js里写:

image.png