笔记-前端工程化引入文件

vue动态引入组件

// 引入所有需要的动态组件
const requireComponent = require.context(
  "@/components/comContent", //组件所在目录的相对路径
  true, //是否查询其子目录
  /\w+\.vue$/ //匹配基础组件文件名的正则表达式
);
var comObj = { draggable };
requireComponent.keys().forEach((fileName) => {
  // 获取文件名
  var names = fileName
    .split("/")
    .pop()
    .replace(/\.\w+$/, "");
  // 获取组件配置
  const componentConfig = requireComponent(fileName);
  // 若该组件是通过"export default"导出的,优先使用".default",否则退回到使用模块的根
  comObj[names] = componentConfig.default || componentConfig;
});

// vue注册components
export default {
	components: comObj,
}

动态引入api

let api = {};
// 查询当前目录及子目录下的js
let files = require.context('./', true, /\.js$/)
files.keys().forEach(key => {
    if (key === './index.js') return;
    // 只保留文件名,需要避免文件名相同
    api[key.replace(/(\.\/|\w{0,}\/|\.js)/g, '')] = files(key).default
})
export default api

require.context()的使用

/*
这是webpack的一个api,可以使用此方法来创建自己的(模块)上下文,这个方法有 3 个参数:
	directory {String} -读取文件的路径
	useSubdirectories {Boolean} -是否遍历文件的子目录
	regExp {RegExp} -匹配文件的正则
*/
require.context(directory, useSubdirectories = false, regExp = /^\.\//)
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值