• 浅说一下 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 }参数表示立即加载这些模块

  • 相关阅读:
    matlab 点云最小二乘拟合平面(PCA法)
    LeetCode刷题:88. 合并两个有序数组
    LeetCode 1359. Count All Valid Pickup and Delivery Options【动态规划,组合数学】1722
    SpringBoot入门
    03-迭代器生成器
    LNMP架构下部署Discuz!社区论坛与Wordpress博客
    存储模型:大端和小端
    【43. 字符串相乘】
    css下边框渐变
    POST注入 | 盲注 | 宽字节注入
  • 原文地址:https://blog.csdn.net/pig_ning/article/details/133856944