浅说一下 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 })

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

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

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

  • 5
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值