vue3.0路由自动导入的方法实例
发表于:2022-08-19 作者:安全数据网编辑
编辑最后更新 2022年08月19日,这篇文章主要介绍"vue3.0路由自动导入的方法实例",在日常操作中,相信很多人在vue3.0路由自动导入的方法实例问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"vue
这篇文章主要介绍"vue3.0路由自动导入的方法实例",在日常操作中,相信很多人在vue3.0路由自动导入的方法实例问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"vue3.0路由自动导入的方法实例"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
为什么要使用Vue
Vue是一款友好的、多用途且高性能的JavaScript框架,使用vue可以创建可维护性和可测试性更强的代码库,Vue允许可以将一个网页分割成可复用的组件,每个组件都包含属于自己的HTML、CSS、JavaScript,以用来渲染网页中相应的地方,所以越来越多的前端开发者使用vue。
一、前提
我们使用的是require.context方法导入,在vite创建的项目内使用会报错"require not found",所以必须用webpack创建项目。或者有大能可以说说vite怎么解决这个问题。
二、规则
我们使用的规则是,搜索src/views/路径下的所有目录和子目录,搜索文件名叫做"index.vue"的文件,使用上级目录的名字作为组件名,进行注册。结构如下:
和公共组件注册一样,我们只注册index.vue组件,其他名称的组件不进行注册。
三、导入
// src/router/index.tsimport {createRouter, createWebHashHistory, createWebHistory, RouteRecordRaw} from 'vue-router'import store from "@/store";import daxie from "@/util/upper"; // 引入一个方法,将字符串的首字母进行大写,我习惯将pathname首字母大写// 路由自动化注册const routerList:any = []const requireComponent = require.context('@/views', true, /index.vue$/) // 找到views路径下的所有文件const dynamic_route = requireComponent.keys().filter(fileName => { return true})// 现在文件数组是乱序的,我们首先进行排序,父级路由在前面,如果是子级路由在前面,结果父级理由还没有创建,就会报错// console.log(dynamic_route,"排序前")dynamic_route.sort(function (a,b):number{ const jieguoa:any = a.split("").filter((item:string)=>{ return "/" == item }) const jieguob:any = b.split("").filter((item:string)=>{ return "/" == item }) if(jieguoa.lengthjieguob.length){return 1} return 0})// console.log(dynamic_route,"排序后")dynamic_route.forEach(fileName => { const path = fileName.replace(".", "") const namelist = fileName.replace(".", "").replace("index.vue", "").split("/").filter((i:any) => { return i }) // 测试配置 const componentConfig = requireComponent(fileName) // 组件可以随意添加任何属性,目前添加一个canshu属性,是一个数组,里面存放着需要的动态参数 // console.log(componentConfig.default,"组件配置2") // 每一层都需要手动指定,只做三层吧 if(namelist.length == 1){ routerList.push({ path:"/"+ namelist[namelist.length - 1], name: daxie(namelist[namelist.length-1]), component:()=>import(`../views${path}`), children:[], }) }else if(namelist.length == 2){ routerList.forEach((item:any)=>{ if(item.name == daxie(namelist[0])){ // 判断组件是否需要参数 const canshu = componentConfig.default.canshu || [] if(canshu){ for (let i=0;i import(`../views${path}`), children:[], }) }else{ item.children.push({ path: namelist[namelist.length-1], name: daxie(namelist[namelist.length-1]), component:()=>import(`../views${path}`), children:[], }) } } }) }else if(namelist.length == 3){ routerList.forEach((item:any)=>{ if(item.name == daxie(namelist[0])){ item.children.forEach((yuansu:any)=>{ if(yuansu.name == daxie(namelist[1])){ // 判断是不是需要参数 const canshu = componentConfig.default.canshu || [] if(canshu){ for (let i=0;i import(`../views${path}`), }) }else { yuansu.children.push({ path: namelist[namelist.length - 1], name: daxie(namelist[namelist.length-1]), component:()=>import(`../views${path}`), }) } } }) } }) }})const routes: Array = [ { path: '/', name: 'Home', component: ()=>import("@/views/shouye/shouye.vue") }, { path: '/about', name: 'About', component: () => import(/* webpackChunkName: "about" */ '../views/About.vue') }, ...routerList, { path: '/404', name: '404', component: () => import('@/views/404.vue') }, { path: '/:pathMatch(.*)', redirect: '/404' },]// 注意顺序,根据最新的路由匹配规则,404页面必须在最后,console.log(routes,"查看路由表内容")const router = createRouter({ history: createWebHistory(), // history: createWebHashHistory(), routes})export default router
这样,只需要根据规则创建组件,就会被自动注册到路由里面。免去手动注册的繁琐操作。
总结
到此,关于"vue3.0路由自动导入的方法实例"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!
c语言网络技术和编程语言总结
c语言对应的三级考试网络技术
网站服务器后台如何加防护密码
c语言软件开发步骤
c语言中网络技术知识点
服务器对权限提升的防护措施
怎么在阿里云租服务器
黑苹果能做web服务器吗
c语言和网络技术哪个好考
云服务器2核4G是什么性能
显示无法连到服务器咋办
网络安全法第79条所有条款
ssd存储服务器
软件开发企业如何归集成本
域名服务器多少钱一个
扫描服务器搭建
数据库同步支付接口
饥荒专属服务器多少钱
php怎么输出数据库纯数字
计算机网络技术接本
你那个服务器322元
学习网络安全技术用哪几本书
数据库应用题
学校网络安全活动信息
戴尔服务器保修电话
南京瀚奇网络技术有限公司
上海数据中心服务器订购
数据库id整型主键怎么表示
没有更多服务器
西南交大有网络安全
软件开发专业对大学生的要求
软件开发企业如何归集成本
杭州网络安全比赛
王者荣耀可以取消注册的服务器吗
江西信息化软件开发零售价格
360安全卫士有服务器
福建电信网络技术支撑
csgo选择服务器代码
山东省天气预报软件开发
易有网络技术有限公司