背景
Vue项目中会有很多自己封装的组件,如果每次使用的时候都需要手动引入,那还是很麻烦的。
解决方案
可以基于webpack的require.context
来实现自动加载注册的全局功能
创建一个GlobalComponents
文件夹,将要注册的全局组件都放在文件夹里,在index.js
中写入如下代码。在入口文件main.js
中引入即可。
1 2 3 4 5 6 7 8 9 10 11
| import Vue from 'vue'
function registerAllComponents(requireContext) { return requireContext.keys().forEach(comp => { const vueComp = requireContext(comp) const compName = vueComp.name ? vueComp.name.toLowerCase() : /\/([\w-]+)\.vue$/.exec(comp)[1] Vue.component(compName, vueComp.default) }) }
registerAllComponents(require.context('./', false, /\.vue$/))
|
1 2
| import './GlobalComponents'
|
注意
不要所有组件都全局注册,就注册经常使用体积不大的组件,最好全局组件有统一命名规范。