声明式导航

@Route
导航分类
声明式导航:使用 <router-link> 通过指定 路由属性 RouterLinkProps 实现;详细信息,请参考 路由思维导图
编程式导航:使用 vue-router 的组合函数 useRouter() 实现
<a>
<a>:Html 原生标签;页面会重新加载/刷新
观察页面加载情况:浏览器刷新按钮、浏览器开发者视图 → 网络
<router-link>
用来渲染一个链接的组件,该链接在被点击时会触发导航
全局组件;不需要在组件模板中导入;参见 main.js
不会刷新页面 - doesn't need to be reloaded from the server
RouterLinkProps
item desc
to 当点击该链接时应该进入的路由地址
使用 to 属性代替 href 属性
replace 默认是 push 模式,浏览器可以回退
使用 replace 属性可以防止浏览器回退
activeClass 链接在匹配当前路由时被应用到 class
exactActiveClass 链接在严格匹配当前路由时被应用到 class
多用于嵌套路由中
1. 使用普通路由 - 字符串方法
<router-link to = "/home" >home</router-link>
<router-link to = "/team" >team</router-link>
<router-link to = "/about" replace >about</router-link>
2. 使用嵌套路由 - 指定完整路由
<router-link to = "/work/html" >html</router-link>
<router-link to = "/work/css3" >css3</router-link>
<router-link to = "/work/js" >js</router-link>
3. 使用 动态路由
4. 使用 查询路由
<router-view>
用于显示用户当前所处路由的组件
全局组件;不需要在组件模板中导入;参见 main.js
路由目标占位符
借助系统组件 <router-view> 显示与 URL 对应的组件|路由出口 - where to render the current route component
有 <router-link> 路由,则必须有 <router-view> 路由出口
还可以像缓存组件那样,缓存 <router-view>,见后例
1. 单 <router-view>
对于单页应用 SPA,需要根据路由动态切换视图,必须有一个
应用更为常见
2. 多 <router-view>
允许你在同一个页面同时展示多个组件,每个组件对应不同的视图区域,提高了单页应用的复用性和可维护性
路由配置由 component 该为 components
{
  path: '/',
  name: 'home',
  components: {
    default: () => import('../views/Home.vue'),
    aside: () => import('../components/Aside.vue'),
    header: () => import('../components/Header.vue'),
    main: () => import('../components/Main.vue'),
  }
}
多个 <router-view> 使用 name 属性区分,避免嵌套路由
<router-view name="aside"></router-view>
<router-view name="header"></router-view>
<router-view name="main"></router-view>
Summary & Homework
Summary
<router-link>

.to

.replace

.activeClass

.exactActiveClass

<router-view>
Homework
[] 路由设计
创建项目,使用路由
参照下图或自行设计路由:/、/menu、/mall、/vip、/mine
为每个路由命名
创建对应的组件 HomeView.vue、MenuView.vue、MallView.vue、VipView.vue、MineView.vue
使用 <a> 创建导航,查看页面刷新情况和网络加载情况
<a href="/">home</a>
<a href="/menu">menu</a>
<a href="/mall>mall</a>
<a href="/vip"&vipout</a>
<a href="/mine"&mineout</a>
使用 <router-link>创建导航,分别使用静态导入和动态导入,查看页面刷新情况和网络加载情况
为主页 HomeView.vue 指定路由 /home 重定向路由到 /
增加异常路由处理
为菜单视图 MenuView.vue 的商品 product.vue 添加到详情页视图 DetailsView.vue的路由 /details/:id - 使用商品 id 创建动态路由映射每个商品