首页 > 其他分享 >vue3+vite注册动态路由的实践

vue3+vite注册动态路由的实践

时间:2024-09-02 17:52:31浏览次数:6  
标签:vue console log .. views vite vue3 path 路由

// route/index.js

import { createRouter, createWebHistory } from 'vue-router'
import HomeView from '../views/HomeView.vue'
//  const comp = () => import ('../views/AboutView.vue' )
// console.log('comp :>> ', await comp()?.default)
 const rote = [
   {
     path: '/',
     name: 'home',
     component: HomeView
   },
   {
     path: '/about',
     name: 'about',
     component: () => import('../views/AboutView.vue')
   }
 ]
 console.log('rote :>> ', rote);
const router = createRouter({
  history: createWebHistory(import.meta.env.BASE_URL),
  routes: rote
})
const page = import.meta.glob('../views/**/*.vue', { eager: true })
const cru = Object.entries(page)
const loadRoute = (list) => {
  list.forEach((item) => {
    const path = item.site
    const pathUrl = `/${path}`
    console.log('path :>> ', path);
    cru.forEach( async cruItem => {
      if (cruItem[0] === path) {
        
        item.component = await cruItem[1]?.default
        console.log('cruItem[1] :>> ', cruItem[1]);
        console.log('11111 :>> ', 11111);
        console.log('path :>> ', path);
        console.log('11111 :>> ', 11111)

      }
    })
    if (page[pathUrl]) {
      // console.log('1111111 :>> ', 1111111)
      // console.log('page[pathUrl] :>> ', page[pathUrl])
      // console.log('1111111 :>> ', 1111111)
      /* @vite-ignore */
      // item.component = () => import( page[pathUrl]  )
      item.comp2 = 2222222
    }
    router.addRoute(item)
    if (item.children) {
      loadRoute(item.children)
    }
  })
}
console.log('page :>> ', page);
const asyncRoute = [
  {
    path: '/layout',
    name: 'layout',
    site: '../views/Layout.vue',
    redirect: '/demo1',
    component: () => import('../views/Layout.vue'),
    children: [
      {
        path: '/demo1',
        name: 'demo1',
        site: '../views/Demo1.vue',
        component: () => import('../views/Demo2.vue')
      },
      {
        path: '/test1',
        name: 'test1',
        site: '../views/test/test1.vue',
        component: () => import('../views/text/test1.vue')
      },
      {
        path: '/test2',
        name: 'test2',
        site: '../views/test/test2.vue',
        component: () => import('../views/test/test2.vue')
      }
    ]
  }
] 
 
  
router.beforeEach((to, from, next) => {
  if (!router.hasRoute('layout')) { 
    loadRoute(asyncRoute)
    // console.log('asyncRoute :>> ', asyncRoute);
    router.replace({...to,replace:true})
  }
  console.log('router.getRoutes() :>> ', router.getRoutes())
  next()
})
 
export default router

标签:vue,console,log,..,views,vite,vue3,path,路由
From: https://www.cnblogs.com/hjk1124/p/18393179

相关文章

  • Vue3 ref 和 reactive 的区别
    Vue3ref和reactive的区别文章目录Vue3ref和reactive的深度解析一、ref和reactive是什么二、vue3中如何使用ref和reactive三、ref和reactive包含哪些属性或方法API四、扩展与高级技巧五、优点与缺点六、对应“八股文”或面试常问问题七、总结与展望Vue3ref和......
  • vue实现页面顶部路由标签跳转
    在页面使用<!--活跃菜单--> <divclass="panel-group"ref="scrollPane"> <router-linkref="tag":to="menu.path"v-for="(menu,idx)inactiveRoutes" style="display:......
  • SQL 查询未显示在 Node.js 的特定路由中
    如果你在Node.js中的特定路由中执行SQL查询时没有显示结果,可能有以下几个原因:数据库连接问题:确保你已正确连接到数据库,并且连接参数(如主机、端口、用户名、密码等)正确无误。查询错误:检查你的SQL查询语句是否正确。确保表名、列名和条件等都正确拼写,并且符合数据库的语法规则......
  • vue 批量自动引入并注册组件或路由
    有时候有大量的组件.vue后缀的,或.js,或.ts文件,需要一个个的手动引入很麻烦,那么你可以尝试这样创建一个index.js本项目使用vue3.x,vue2.x也可以照样用;这里在components里面创建了一个idnex.js文件require.context可以读取文件,第一个参数是指当前文件夹,第二个参......
  • 使用 Supabase 保护 Next.js 路由
    要使用Supabase保护Next.js路由,你可以按照以下步骤进行操作:1.安装所需的依赖:在你的Next.js项目中,安装`@supabase/supabase-js`和`next-auth`库。2.配置Supabase:在你的项目中创建一个`.env.local`文件,并添加你的Supabase项目的URL和API密钥。3.创建认证页......
  • zdppy+vue3+onlyoffice文档管理系统实战 20240901 上课笔记 基于验证码登录功能基本完
    遗留的问题1、点击切换验证码2、1分钟后自动切换验证码点击切换验证码实现步骤:1、点击事件2、调用验证码接口3、更新验证码的值点击事件给图片添加点击事件:<img:src="'data:image/png;base64,'+captchaImg"style="width:100%;height:50px;margin-top:10......
  • vue3中常见单位及响应式单位rpx
    1.常用单位1.1px此时画了一个盒子模型,宽度和高度都是200px此时效果就是这样的1.2vw现在更改成了40vw,看看效果是怎么样的vw也就是在整个页面中的占比量,40vw就是占整个页面的40%使用%这个也是同样的效果,都是在页面中的占比量最直观的区别就是切换页面大小,就可以......
  • Vue面试常见知识总结2——spa、vue按需加载、mvc与mvvm、vue的生命周期、Vue2与Vue3区
    SPASPA(SinglePageApplication,单页面应用)是一种Web应用程序架构,其核心特点是在用户与应用程序交互时,不重新加载整个页面,而是通过异步加载页面的局部内容或使用JavaScript动态更新页面。以下是对SPA的详细解析,包括其优点和缺点:SPA的优点更好的用户体验:SPA无需重新加载......
  • 【软考】路由器
    目录1.说明2.基本功能与特性2.1网络互连2.2数据处理2.3网络管理3.工作原理4.应用场景5.类型与接口1.说明1.路由器(Router)是连接两个或多个网络的硬件设备,它在网络间起着网关的作用,是读取每一个数据包中的地址然后决定如何传送的专用智能性网络设备。2.3......
  • Vue期末考试速成复习指南附编程题(js开发基础+路由+Pinia)
    前文:本文参考书籍《Vue.js前端开发实战(第二版)》--黑马程序员/编著重点在于本科期末速成和0基础入门目录:一.初识Vue1.包管理工具:npmyarn2.创建Vue项目二.js开发基础1.什么是单文件组件?2.单文件组件基本结构3.切换页面显示组件3.数据绑定与输出4.Vue引入Html页面5.......