Vue Router | 青训营
一、简介
- 是什么:构建SPA的路由管理器
- 为什么要用:
- 底层原理:
- 利用History API或haschange事件这样的浏览器API来管理应用当前应该渲染的视图
二、使用vue router(vue router4)
- 安装:npm install **vue-router@4
- 创建路由实例(main.js里):使用createRouter()
- createRouter()
- history:createWebHistory()
- routes:路由配置对象{};
- 所含选项
- path:跳转路径
- component/components:{组件名}
- props:设置为true时,route.params将被设置为组件的props
- redirect:路由重定向
- 注:createRouter,createWebHistory都是引自'vue-router',不是引自'vue'
- 将路由实例注册到应用里:应用实例名.use(路由实例名)(main.js里)
- 注册路由组件
- 注册位置(如果全部写在main.js,main.js会很庞大)
- 注册方法
- components:{组件名: defineAsyncComponent(() => import('组件路径'))}
- 这种注册方式可以减少初次加载应用的时间,组件只有在访问到它时才会加载(按需加载)
- 使用路由组件
- router-link标签:
- 属性
- to属性:代表要渲染哪个组件的内容
- replace属性:取代当前条目,不会向history栈添加内容
- 特点
- 经解析后变成a标签(所以能实现跳转渲染的效果,但不用重新加载整个页面)
- 被点击后,相当于调用router.push(...)(身上为to属性而不是replace属性时)
- router-view标签:渲染跳转路径对应的组件内容
- 嵌套路由
- 本质:组件内部嵌套另一个组件
- 实现:
-每个路由配置对象添加children属性,代表当前组件里作为路由组件的子组件(按路由组件配置)
- 同时展示多个视图
- 实现方式:使用命名视图
- 实现步骤:
- router-view上添加name属性,值作为渲染视图的命名
- 路由配置对象里component换成components,添加想展现的多个视图组件
- 导航守卫
- 是什么
- 执行时间
- 类型
- 全局守卫
- beforeEach:每次路由切换前执行
- afterEach:每次路由切换后执行
- 路由独享守卫
三、历史记录模式
- hash模式(使用createWebHashHistory)
- history模式(使用createWebHistory)
- 通过HTML5提供的浏览器历史记录API来管理URL路由
- 注:此时URL里不含'#',更简洁美观,但需要服务器支持