vue3编程-import.meta.glob实现动态路由(菜单)
创始人
2024-12-01 00:35:34
0

import.meta.glob 是vite提供的批量懒加载组件的方法

本地开发环境:

const modules = import.meta.glob('../views/**/*.vue') 

 

这段代码返回的modules是一个Map:

key是vue文件的相对路径,值是一个函数,将函数打印出来,如下:

() => import("/src/views/xxxxx.vue?t=1721728770051")

 本质上是一个按需加载的函数。

打包构建后: 

  vite本地构建使用的是esbuild,本地服务之所以能够识别.vue文件,是因为本地服务做了支撑。本地服务将.vue文件转换为了.js文件:

本地服务器返回了javascript代码,这个也容易实现,服务器判断如果是.vue结尾的,对源码进行编译响应为js即可。

 然而,打包构建vite使用的是rollup。生产服务器不会支持对.vue文件的处理。

打包构建后的代码,modules的key是不变的。但是值函数却变了,里面导入的是构建后的.js文件。

应用:

       在实现动态菜单的时候,需要从后端获取路由数据,然后因为涉及到按需加载:

/**    * 动态导入组件    * @param url    * @returns    */   function dynamicImport(url:string){     return ()=>import(url)   }     /**    * route的初始化处理    * @params routers - ajax请求返回的结果    */   async function routeInit(routers:RouteType[]){     routers.forEach(route =>{         if(route.component === 'ConsoleLayout'){           route.component = ConsoleLayout         }else{           route.component = dynamicImport(route.component as string)         }         if(route.children && route.children.length >0 ){           routeInit(route.children)         }       })       return routers   }

component需要按需加载,因此需要将route.component的值变为()=>import()的形式。然而,功能实现后才发现,构建后会存在.vue的问题。

因此,解决办法就是import.meta.glob。

const modules = import.meta.glob('../views/**/*.vue')   function loadView(url: string) {   return modules[`../views/${url}.vue`] }  route.component = loadView(name as string)  

这样就能够实现兼容本地和打包构建后的动态菜单的功能,而原理就是上面分析的。

相关内容

热门资讯

详细了解!玉海楼辅助器(辅助)... 详细了解!玉海楼辅助器(辅助)永乐跑胡子都是真的是有辅助挂(哔哩哔哩)1、许多玩家不知道玉海楼辅助器...
揭露了解!福建宁德麻将辅助软件... 揭露了解!福建宁德麻将辅助软件(辅助)安喜好像是有辅助插件(哔哩哔哩)福建宁德麻将辅助软件是不是有人...
关于了解!新永和源代码(辅助)... 关于了解!新永和源代码(辅助)芒杏儿小盒总是有挂辅助app(哔哩哔哩)1、新永和源代码免费辅助多个强...
推荐了解!新西楚有挂吗(辅助)... 推荐了解!新西楚有挂吗(辅助)云月晋善麻将好像是真的辅助器(哔哩哔哩)暗藏猫腻,小编详细说明新西楚有...
普及了解!大唐撸麻雀辅助(辅助... 普及了解!大唐撸麻雀辅助(辅助)红十棋牌其实存在有辅助脚本(哔哩哔哩)1、任何大唐撸麻雀辅助透视是真...
专业了解!微乐小程序脚本辅助(... 专业了解!微乐小程序脚本辅助(辅助)同城上饶确实真的有辅助安装(哔哩哔哩)1、微乐小程序脚本辅助破解...
解谜了解!邯郸胡乐辅助脚本下载... 解谜了解!邯郸胡乐辅助脚本下载(辅助)东阳四副牌原来是有辅助挂(哔哩哔哩)暗藏猫腻,小编详细说明邯郸...
了解了解!心悦透视辅助器免费(... 了解了解!心悦透视辅助器免费(辅助)云端总是真的是有辅助软件(哔哩哔哩)1、心悦透视辅助器免费破解器...
辅助了解!四川微乐微信麻将小程... 辅助了解!四川微乐微信麻将小程序辅助(辅助)纸蛙竞技麻将一直有挂辅助器(哔哩哔哩)一、四川微乐微信麻...
解密了解!雀神广东麻将提高胜率... 解密了解!雀神广东麻将提高胜率(辅助)中至新余真是真的是有辅助软件(哔哩哔哩)1、完成雀神广东麻将提...