• 依赖管理(require.context)


    结合stackoverflow上的回答What is "require.context"?
    因为比较精通typescript一点,用ts描述基于require.contex的依赖管理:

    declare namespace Webpack {
        /**
         * 这是模块id,webpack会将所有的模块构建成一个逻辑上的图,
         * 我们知道图这种数据结构,需要一个id来标志每个部分
         * webpack通过modelueId来区分每个模块
         */
        type modelueId = string
    
        /**
         * 模块
         */
        type modelue = {
            default: any,       //默认模块
            [key: string]: any  //有名称的模块
        }
    
        /**
         * nodejs有require关键字,webpack在上面添加了自己的api: context
         */
        interface require {
            //这是webpack提供的API,会将指定目录下的得到的文件形成一个module,允许我们在runtime阶段动态引入目录下的文件
            //该module中的每个文件,以request标志,resquet是一个字符串
            //resquet是一个字符串,modelueId一样的作用,标志文件而已。
            //注意被标志的文件没有进入webpack构建的模块图中,仅仅是在内存中存着
            context: {
                (
                    directory: string,          //文件目录的路径,以使用该函数的js文件的相对路径为主,就像'../components/'
                    useSubdirectories?: true,   //是否递归,如果目录有子目录,继续解析子目录
                    regExp?: RegExp,            //模式匹配目录下的文件
                    mode?: 'sync' | ''          //模块导入模式
                )
                    : {
                        (request: string): modelue      //解析一个request,动态注册一个模块,并返回该模块
                        resolve: () => modelueId        //动态注册一个模块后调用该函数,得到该模块的id
                        id: modelueId                   //文件目录模块的id
                        keys: () => string[]            //目录下得到的所有的文件的request值
                    }
            }
        }
    
    
    }
    
  • 相关阅读:
    通过SSH隧道的本地转发实现Django连接远程数据库
    Mysql多数据库备份
    apollo 项目配置中心开源框架部署
    nginx 配置多个 https 域名访问
    beetl 模板语法
    异常:由 spring-session pom 引发
    异常:NoSuchFieldError: BEST_MATCHING_HANDLER_ATTRIBUTE
    【Redis__验证】手机验证和限制登录功能
    【Linux__环境】配置
    【Layui__上传】多图上传
  • 原文地址:https://www.cnblogs.com/panshaojun/p/14554762.html
Copyright © 2020-2023  润新知