• 浅说一下 import.meta.glob()


    import.meta.glob() 是一个 ES 模块的特殊属性,用于动态导入多个模块,

    import.meta.glob() 方法接受一个模式字符串作为参数,并返回一个Promise,该Promise 析为一个对象,该对象包含匹配该模式的所有模块的键值对

    模式字符串可以包含通配符 *,用于匹配多个模块。
    例如,import.meta.glob('./modules/*.js') 可以匹配当前目录下以 .js 结尾的所有模块。

    使用 import.meta.glob() 可以方便地批量导入模块,而不需要手动一个一个地导入。
    这在一些需要动态加载模块的场景下非常有用,例如在构建工具中自动加载插件、动态加载路由等。

    需要注意的是,
    import.meta.glob() 是 ES 模块的特性,
    目前仅在一些现代浏览器和支持 ES 模块的 Node.js 版本中可用,
    在旧的浏览器或 Node.js 版本中,可能需要使用其他方式来实现类似的功能,


    这个模式字符串 ./modules/**/!(result).ts 是什么意思?
    ./modules/:表示要匹配的文件路径的起始部分,
    **/:表示可以匹配任意多层子目录,
    !(result):表示排除匹配到的文件名为result的文件,
    .ts:表示文件扩展名为.ts

    因此,这个模式字符串可以匹配到modules文件夹下的所有以.ts结尾且文件名不为result的文件


    在这里,使用import.meta.glob(),导入指定模式的固定路由模块,代码如下:

    
    // 导入非result相关路由
    const fixedModules = import.meta.glob('./modules/**/!(result).ts', { eager: true })
    // 导入result相关路由
    const resultModules = import.meta.glob('./modules/**/result.ts', { eager: true })
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    import.meta是一个在 JavaScript 模块中可以访问的特殊对象,它提供了有关当前模块的元数据信息,

    import.meta.glob():动态导入的特殊函数,接收一个模式字符串作为参数,并返回一个异步的对象
    该对象包含,匹配模式的模块路径、对应的模块内容。

    import.meta.glob('./modules/**/!(result).ts', { eager: true })这句代码作用如下,
    导入./modules目录下,所有子目录中不是result.ts的模块,并同样使用{ eager: true }参数表示立即加载这些模块

  • 相关阅读:
    NVM安装使用
    期刊会议排名、信息检索网站推荐以及IEEE Latex模板下载
    c++中的宏#define用途
    1、网页结构
    uniapp踩坑之项目:隐藏显示密码功能
    做接口测试都测什么?有哪些通用测试点?
    Spring的循环依赖
    最终版本-在 CentOS 8 中添加永久路由
    电容笔好还是触屏笔好?便宜又好用的电容笔推荐
    基于SSM的车库智能管理平台设计与实现
  • 原文地址:https://blog.csdn.net/pig_ning/article/details/133856944