当前位置: 首页 > wzjs >正文

网站开发 慕课网站制作怎么学

网站开发 慕课,网站制作怎么学,南昌网站设计企业,如何识别网站建设在Vue应用中,通过路由可以实现不同页面之间的切换,同时也可以实现页面之间的传参和控制页面的显示与隐藏。但是我们在开发的过程中,会发现在路由配置中的路由配置和我们的项目结构高度重复,在我们修改页面文件结构时非常的麻烦与复…

        在Vue应用中,通过路由可以实现不同页面之间的切换,同时也可以实现页面之间的传参和控制页面的显示与隐藏。但是我们在开发的过程中,会发现在路由配置中的路由配置和我们的项目结构高度重复,在我们修改页面文件结构时非常的麻烦与复杂,这时候,如果可以动态的导入路由,就可以大大提示我们项目的可维护性。

        我们在开发中会经常听见一句话,约定大于配置,路由的动态导入也是这句话应用的一种,我们这里动态导入路由模仿了在uniapp进行小程序开发的页面配置文件,要求有以下几点:

  1. 所有的页面都必须配置到/src/pages文件夹下;
  2. 所有的页面文件层级必须是/src/pages/页面文件夹名称/;
  3. 所有的页面文件中必须有page.ts作为配置文件和index.vue作为页面入口文件;

结构展示如下:

page.ts文件展示:

//home的page.ts
export default {title: '首页',menuOrder: 1,childrens: [`../pages/homechildren`]
}
//homechildren的page.ts
export default {title: '首页的子组件',menuOrder: 1,isChild: true,
}
//login的page.ts
export default {title: '登录',menuOrder: 2
}

        此时我们要通过vite的函数import.meta.glob()和import()扫描pages文件夹动态生成路由,代码如下:

//路由配置文件
import { createRouter, createWebHistory, RouteRecordRaw } from 'vue-router'const pages = import.meta.glob('../pages/**/page.ts', {eager: true,import: 'default'
})const components = import.meta.glob('../pages/**/index.vue')const getChildRoutes = async (childrens: string[]) => {const res = [];for (const item of childrens) {const pageModule = await import(`${item}/page.ts`);const componentModule = await import(`${item}/index.vue`);const routePath = item.replace('../pages/', '').replace('/page.ts', '') || '/';const name = routePath.split('/').filter(Boolean).join('-') || 'index';res.push({path: routePath,name,component: componentModule.default,meta: pageModule.default});}return res;
};const routes = Object.entries(pages).filter(([path, meta]: [string, any]) => !meta.isChild).map(([path, meta]: [string, any]) => {const compPath = path.replace('page.ts', 'index.vue')path = path.replace('../pages', '').replace('/page.ts', '') || '/';const name = path.split('/').filter(Boolean).join('-') || 'index';return {path,name,component: components[compPath],meta: meta,children: !!meta.childrens ? getChildRoutes(meta.childrens) : []} as RouteRecordRaw
})const router = createRouter({history: createWebHistory(),routes: routes,
})//路由重定向
router.beforeEach((to, from, next) => {if (to.path === '/') {next('/home')} else if (!routes.some(route => route.path === to.path)) {next('/home')} else {next()}})export {router
}

 效果展示:

路由对象展示:

http://www.dtcms.com/wzjs/583303.html

相关文章:

  • 差异基因做聚类分析网站网站开发移动端网站
  • 佛山市公司网站建设平台wordpress 当前页面登录
  • php建站模板wordpress用腾讯云cdn
  • 不错的网站开发公司个人网站注册流程
  • python3做网站教程网站开发工程师招聘要求
  • 免费网站建设多少钱wordpress前台自动登录
  • 建网站卖东西推荐wordpress安装方式
  • 河南省建设工程招投标协会网站python语言基础知识
  • 本地备份wordpress企业网站建设 优化
  • 互联网行业的开发网站注册200万公司需要多少费用
  • 网站建设怎么设计更加吸引人网站宣传制作
  • 视频网站开发项目百度怎么推广自己的网站
  • 全屏网站代码网站建设目标初步目标
  • 济南做网站比较好的公司知道吗做商城网站服务器配置怎么选择
  • asp网站免费模板产品营销策略
  • 网站建设报告论文百度文库济南网站建设服务哪家好
  • 搜搜网站收录提交入口昆明市哪里有网站建设
  • 便宜做网站公司北京建设银行分行招聘网站
  • 电商设计参考网站央视新闻的新闻
  • 网站开发中 视频播放卡网络营销手段有哪些
  • 网站seo优化有哪些开发员给我用织梦做的网站
  • 柳市外贸网站建设wordpress增加js效果
  • 玉林网站建设培训开发一套程序多少钱
  • 做网站教程第一课网站做好了怎么做后台管理
  • 广州公司网站设计制作电子商务的营销模式有哪些
  • 如何给网站的关键词做排名网页代码模板
  • 英文营销网站 知乎做类似起点的网站
  • 如何搜索asp网站我想做百度推广
  • 猎头自己在哪个网站做单移动端产品
  • 小语种网站案例360搜索入口