在vue-cli3.0中利用webpack实现自动化注册组件

本文介绍如何在Vue项目中利用webpack的require.context()方法自动全局注册所有组件,避免重复import和注册,提高开发效率。

在vue-cli中使用自定义的组件时,每次都先import组件进来然后再注册一下才可以用。使用多个组件就要反复的import加注册,别的页面用到相同的组件同样也需要这样做。当然用Vue.component()在mian.js全局注册的话,是会少写一些import等代码。

但是用webpack提供的require.content()就可以不需要自己每次使用组件都要手动注册,因为webpack可以帮你自动的全局注册组件,调用时直接使用就行

步骤

  • 首先在组件目录下新建一个js文件(global.js)

  • 在vue-cli里可以使用webpack提供的require.content()获取文件的上下文
const requireComponent = require.context('.',false,/\.vue$/)
  • 用keys获取到保存文件名称的数组
requireComponent.keys() //输出 ["./Form.vue", "./kInput.vue", "./kItem.vue", "./test.vue"]

 

    requireComponent 这里面本身返回的是一个函数(上图),是通过keys()才能将文件名取出来 

  • 遍历数组并在全局注册组件

   requireComponent(组件名) 传入组建名称就能获取到这个组件里面的配置,例如data,methos,computed等

requireComponent.keys().forEach(filename => {
    //获取组件配置
    const componentConfig = requireComponent(filename);
    //截取出组件名称
    filename = filename.replace(/^\.\//,'').replace(/.vue$/,'')
    //全局注册组件
    Vue.component(componentName,componentConfig.default || componentConfig)
});
  • 最后在main.js中引入global.js即可
import Vue from 'vue'
import './components/global'

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值