美文网首页
自动化引入模块

自动化引入模块

作者: 一个健康马 | 来源:发表于2020-08-10 13:46 被阅读0次

    在开发中大型项目时,会将一个大功能拆分成一个个小功能,除了能便于模块的复用,也让模块条理清晰,后期项目更好维护。
    像 api 文件一般按功能划分模块,在组合时可以使用 require.context 一次引入文件夹所有的模块文件,而不需要逐个模块文件去引入。每当新增模块文件时,就只需要关注逻辑的编写和模块暴露,require.context 会帮助我们自动引入。
    需要注意 require.context 并不是天生的,而是由 webpack 提供。在构建时,webpack 在代码中解析它。

    let importAll = require.context('./modules', false, /\.js$/)
    
    class Api extends Request{
        constructor(){
            super()
            //importAll.keys()为模块路径数组
            importAll.keys().map(path =>{
                //兼容处理:.default获取ES6规范暴露的内容; 后者获取commonJS规范暴露的内容
                let api = importAll(path).default || importAll(path)
                Object.keys(api).forEach(key => this[key] = api[key])
            })
        }
    }
    
    export default new Api()
    
    

    require.context 参数:
    文件夹路径
    是否递归查找子文件夹下的模块
    模块匹配规则,一般匹配文件后缀名
    只要是需要批量引入的场景,都可以使用这种方法。包括一些公用的全局组件,只需往文件夹内新增组件即可使用,不需要再去注册。如果还没用上的小伙伴,一定要了解下,简单实用又能提高效率。

    原文链接:https://mp.weixin.qq.com/s/McsEsb7rGVy6IOTfWM0gRg

    相关文章

      网友评论

          本文标题:自动化引入模块

          本文链接:https://www.haomeiwen.com/subject/bsqjdktx.html