require自动化构建

当全局统一注册多个组件,你需要一次引入并注册。就像这样:

import bannerBox from '@/components/banner.vue'
import goodsOrder from '@/components/goods-order.vue'
import selectImg from '@/components/select-img.vue'
import navBar from '@/components/nav-bar.vue'

Vue.component('banner-box',bannerBox);
Vue.component('goods-order',goodsOrder);
Vue.component('select-img',selectImg);
Vue.component('nav-bar',navBar);

看上去是不是不舒服,而且现在还只是四个,如果10个呢,100个呢,每次写一个组件需要在这里加两行代码,难受。这时候就用到了自动化,几行代码全部解决,如下:

import Vue from 'vue'
const modulesContext = require.context('', false, /\.vue$/)
modulesContext.keys().forEach(module=>{
    const REG=/^\.\/(.*)\.vue/ig,
        MO = modulesContext(module);
    Vue.component(module.replace(REG,'$1'),MO.default||MO)
})

解释一下,使用require的方法context(),获取目录结构,其中传三个参数:1. 路径(我这里是是当前目录,所以传了空),2. 是否读取子目录,3. 正则(规定匹配什么样的文件。),modulesContext 上面有几个方法,具体可以读API、我这里用到了key(),这个方法会返回一个数组集,就是(路径+文件名)。如下:

./banner.vue
./goods-order.vue
./select-img.vue
./nav-bar.vue

而require.context('./index.js')可以直接返回文件的export。即modulesContext(module);
这里用正则过滤掉(./)和(.vue),作为组件名。
实现组件自动化注册。

——END——

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容