require.context()

目的:vue中引入次数频繁的公共组件,在每一个新的组件都需要通过import引入,components 注册,通过webpack自身的api实现全局引入。

// main.js
import global from "./global.js";
Vue.use(global);
// global.js
export default {
    install(Vue) {
        const requireComponent = require.context("@c/common", false, /\.vue$/);
        requireComponent.keys().forEach(path=> {
            const config = requireComponent(path);
            const componentName = path.replace(/^\.\//, "").replace(/\.\w+$/, "");
            Vue.component(componentName, config.default || config);
        });
    }
}

需要注意:全局注册的componentName 是使用组件的名称。截取组件名时需要注意路径./a.vue

require.context(directory,useSubdirectories,regExp)

  • directory:表示检索的目录
  • useSubdirectories:表示是否检索子文件夹
  • regExp:匹配文件的正则表达式,一般是文件名
    例如: require.context("@/views/components",false,/\.vue$/)
    遍历@/views/components 目录文件夹下的所有以.vue结尾的vue文件,不遍历子目录;
    语句执行后得到指定文件夹下的指定类型文件的执行环境。require.context()函数执行完毕返回一个函数,且函数有3个属性;

resolve {Function} -接受一个参数request,request为test文件夹下面匹配文件的相对路径,返回这个匹配文件相对于整个工程的相对路径。 resolve is a function and returns the module id of the parsed request.

keys {Function} -返回匹配成功模块的名字组成的数组。keys is a function that returns an array of all possible requests that the context module can handle.

id {String} -执行环境的id,返回的是一个字符串,主要用在module.hot.acceptid is the module id of the context module. This may be useful for module.hot.accept.

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值