VMx

vmx.im
啥都学一点的填坑人
  1. 首页
  2. vue
  3. 正文

require.context转成vite

2023年1月30日 705点热度 0人点赞 0条评论

require.context 是 webpack 的内置模块,在vite上是无法使用的。vite 上面对应是 import.meta.glob,匹配到的文件默认是懒加载的,通过动态导入实现,并会在构建时分离为独立的 chunk。大白话就是它为延迟加载。后续如要处理,可通过参数 { eager: true } 来指定,对应的是原 import.meta.globEager(此方法已经弃用)。

 const routeFiles = require.context('../router/main', true, /\.ts/)
  routeFiles.keys().forEach((key) => {
    const route = require('../router/main' + key.split('.')[1])
    allRoutes.push(route.default)
  })

==>转化为

 const routeFiles = import.meta.glob('../router/main/*/*/*.ts', {
    eager: true
  })
  for (const path in routeFiles) {
    allRoutes.push(routeFiles[path].default)
  }

实现功能是相同的
而网上很多是以下示例,懒加载,后续不需要处理可以搬用

 const directives = import.meta.glob('./*/index.js')
  for (let dire in directives) {
    const direKey = dire.match(/\.\/(.*?)\/index\.js/)[1]
    directives[dire]().then((res) => {
      const direValue = res.default
      app.directive(direKey, direValue)
    })
  }
Post Views: 619
标签: 暂无
最后更新:2023年1月30日

huifei

这个人很懒,什么都没留下

点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

COPYRIGHT © 2021 vmx.im. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang