vue---router路由分发

1、回顾 2、课程 2.1 评分 2.2 设计产品的详情 2.2.1 改造路由文件 router.js 2.2.2 改造App.vue 2.2.3 router.js中添加一个新的路由 /detail 2.2.4 构建详情页面布局 2.3 列表进入详情 2.3.1 声明式跳转 --- 标签形式 2.3.2 编程式跳转 --- js形式 2.4 使用嵌套路由实现登录与未登录状态 2.5 别名 + 路由的模式 2.6 路由懒加载 2.7 404页面的配置

1、回顾

2、课程

2.1 评分

f2d9963bee9c32bc69b3c89ba11950a8.png

f46de51c91b5963e6754db15372a0fa8.png

c3d75845ac2db042d8499bde50e32494.png

点击列表页面进入产品的详情页面,需要考虑的是 详情页面有自己的头部,自己的内容以及自己的底部

2.2 设计产品的详情

设计如下

1c1a161f9f7c8f56e6f5fc2eaa9995fa.png

vue中可以使用 **命名视图2766e40d7edd06481907685917af13ef.png
** 解决这类问题

<router-view></router-view>

<router-view></router-view> <router-view name="footer"></router-view>

2.2.1 改造路由文件 router.js

27e900a9c4805266c7d66e5914efc35b.png

2.2.2 改造App.vue

2766e40d7edd06481907685917af13ef.png

2.2.3 router.js中添加一个新的路由 /detail

1、 先构建一个views/Detail.vue

70ef2cdc931fa0d4fa2f5b5ec7813d14.png

2、 修改 router.js

eb0225accf27486943bfd48a21178559.png

3、浏览器访问 http://localhost:8080/#/detail 可看到详情页面

2.2.4 构建详情页面布局

7afc50c67ac64cd1004a2d7d05f2eafc.png

在App.vue中添加如下的样式

d065b940ae3bcb53a9d1360d61b010fa.png

2.3 列表进入详情

vue中页面的跳转有两种形式: 声明式跳转编程式跳转

2.3.1 声明式跳转 --- 标签形式

<router-link to="/kind"></router-link>
本案例中,需要从列表跳转到详情,依据的是产品的 id 属性,遇到这种路由的声明式跳转需要传递参数,并且是变量的话,就需要用到命名路由(默认已经实现,router.js中的每个路由都有一个name属性)

1、修改router.js中关于详情的路由
7269e55438e68a2fec95300902a4fd38.png

2、Prolist.vue中跳转的设置
51c2972c884480703179c5c34fe773ea.png

浏览器中测试,可以跳转

3、详情页面获取数据
1e6fbff8eff3965aca97421fd5f582e6.png

2.3.2 编程式跳转 --- js形式

this.$router.push('/kind') // string

this.$router.push({path: '/kind'}) // Object ---- 不能使用 /detail/1243

this.$router.push({name: 'kind', params: {id: id}}) // Object ---- 能使用 /detail/1243

2b25594ad3f0855231a2f967642b8770.png

如果想用path形式,使用方法如下
4a15d122ed624378964d053671a7a1e2.png

2.4 使用嵌套路由实现登录与未登录状态

先创建 components/user/NoLogin.vue、 components/user/Login.vue
6b34c248479efc35732183ed474e4197.png

User.vue组件中告诉这两个组件在哪里显示
<router-view></router-view>
cf18559a28c67a46dddf801da46c9a90.png

router.js中配置嵌套的路由规则
a2147afa4708b504fe3c75e9c140c1f0.png
84a579c360d47f5692d8d56c60dbb6e3.png

浏览器分别输入 http://localhost:8080/#/user/login 和 http://localhost:8080/#/user/nologin

?? 当每次进入个人中心页面时,需要有一个判断条件,如果是已经登陆了,就跳转到/user/login,反之跳转到 /user/nologin

458676a6f0a70c1131823c91d9d4283e.png

使用 重定向 解决问题 ---- 先要把User.vue中的 mounted 的js注释掉
e13e62ce0249b6d725a2e5d5adf47f24.png

2.5 别名 + 路由的模式

别名
28fdd4e020bad1af6f21c058dc6e2f65.png

路由的模式

默认是hash值 带有 #
04b0bd6907248c05c6075eb4c1ccb8dd.png

去掉#
6bc20742320e63e42693b58b0d864a81.png

61a743b044d0a67d00581e954560c820.png

模式为history,以前需要后端支持,现在默认支持
现在的脚手架是 @vue/cli 以前的 vue-cli

cnpm / npm i vue-cli -g
vue init webpack myapp
cd myapp
cnpm /npm i
cnpm run dev

2.6 路由懒加载

84e3363cd061095d82b9ee72cde2d31c.png
db56ca5ea03843bdb2c674f6010b3d0b.png

2.7 404页面的配置

src/components/NotFoundComponent.vue
修改src/router.js
d70c0e7b7c4f7f45faf85294674e5f61.png

mint-ui

---------------------------------------------------------------------------------------------文章来自吴大勋(大勋说)---------------------------------------------------------------------------------------------

posted @ 2020-04-20 23:52  haccer  阅读(611)  评论(0)    收藏  举报