美文网首页
Vite从入门到精通(五)glob import

Vite从入门到精通(五)glob import

作者: 程序员三千_ | 来源:发表于2023-04-13 16:28 被阅读0次

    使用场景:例如我们的项目中的 api接口是分模块的,用户相关的API接口封装在 user.js里,权限相关的API接口封装在 auth.js里,系统相关的API接口封装在即 sys.js里,以后项目功能增加了,还会增加后续相关的各种模块的js,如果我们在一个页面中用到了很多模块的接口,一个个导入是不是非常麻烦,这时候vite提供的 glob import就派上用场了。

    1、例子

    例如我们的项目中有这些api的js


    这时候,我们如果想一次性全部引入这些js怎么办呢?答案就是我们刚刚说的glob import

    • 代码演示
    const globModules =import.meta.glob('./api/*.js')
    console.log(globModules)
    
    
    • 输出结果


    • 我们可以看到,输出了对应的js目录及其要import的语句的{key,value}的对象,我们可以直接通过Object.entries拿到相应的keyvalue
    Object.entries(globModules).forEach(
        ([k, v]) => {
            console.log(k + ':' + v)
        }
    )
    
    

    我们发现,这时候的value是一个函数,所以我们需要在打印的时候执行下这函数
    Object.entries(globModules).forEach(
        ([k, v]) => {
            v().then(m => {
                console.log(k + ':' + m.default)
            })
        }
    )
    

    2、引入文件格式筛选

    我们在上面使用glob的使用是这样的import.meta.glob('./api/*.js')
    import.meta.glob('./api/支持vite规定的格式筛选.js')

    • *.js:代表api目录下所有的.js文件,例如还可以用*.json*.ts,都是一个道理。
    • *-[0-9].js:代表api目录下所有以‘-’开头+ 1到9数字的.js文件,例如就是api目录下的test-1.js这个文件

    还要很多类似于正则的规则,大家可以去看fast-glob的官网,vite里其实就是集成了fast-glob这个插件。

    3、globEager的使用

    vite会直接帮助我们导入对应的js

    const globModules =import.meta.globEager('./api/*.js')
    
    console.log(globModules)
    

    我们可以看到,会打印出对应的js及其Module,然后我们在看vite编译后的代码



    可以看到vite会直接帮我们导入对应的Module,不需要我们自己去执行对应的函数了。

    4、总结

    glob import是vite自带的语法功能,如果你的项目中用的是其他构建工具,例如webpack,是不能使用包含glob import功能的代码的。所以大家要注意。

    相关文章

      网友评论

          本文标题:Vite从入门到精通(五)glob import

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