asyncRouter.js 763 B

123456789101112131415161718192021222324252627282930
  1. const modules = import.meta.glob('../../view/**/*.vue')
  2. export const asyncRouterHandle = (asyncRouter) => {
  3. asyncRouter.map(item => {
  4. if (item.component) {
  5. item.component = dynamicImport(modules, item.component)
  6. console.log(item.component)
  7. } else {
  8. delete item['component']
  9. }
  10. if (item.children) {
  11. asyncRouterHandle(item.children)
  12. }
  13. })
  14. }
  15. function dynamicImport(
  16. dynamicViewsModules,
  17. component
  18. ) {
  19. const keys = Object.keys(dynamicViewsModules)
  20. const matchKeys = keys.filter((key) => {
  21. let k = key.replace('../../view', '')
  22. const lastIndex = k.lastIndexOf('.')
  23. k = k.substring(0, lastIndex)
  24. return k === component
  25. })
  26. const matchKey = matchKeys[0]
  27. return dynamicViewsModules[matchKey]
  28. }