路由器和路由(八)

现在很多网页应用都是SPA(单页应用,只有一个真实页面)

点击路由链接不对后台发请求,只更新显示不同的路由组件

路由器管理路由,路由本质是映射关系(键值对)。后台路由的k-v是path-处理请求的回调函数,前端的k-v是path-路由组件(其实就是组件)

一、准备工作

npm install vue-router --save

src下建一个router文件夹,下有main.js,在这里对外暴露一个路由对象

src下建一个pages或views文件夹,专门放路由组件(非路由组件在components)

二、配置路由器

在router的main.js中

import Vue from 'vue' //因为是vue所以要先引用vue

import VueRouter from 'vue-router'

Vue.use(VueRouter)

//内部定义并注册了2个组件标签(router-link/router-view),

//给组件对象添加了2个属性:

 //1. $router: 路由器  2. $route: 当前路由

export default new VueRouter({})

三、配置路由

在router的main.js中

import 路由组件(路由组件写好放views/pages文件夹中),在VueRouter中配置选项

routes: [

{ // 一般路由

path: '/about',

component: About,

children:[ //嵌套路由

{ path: 'news', component: News }, 

{paht:'',reditect:'/about/news'}

]

},

{ // 自动跳转路由,初始化界面

path: '/',

redirect: '/about'

}

]

四、注册路由器

在src下的main中

import router from './router'

new Vue({

router:router

})

五、 使用路由组件标签

1. <router-link>: 用来生成路由链接

<router-link to="/xxx">Go to XXX</router-link>

<router-link to="/home/news">News</router-link>(嵌套路由)

2. <router-view>: 用来显示当前路由组件界面

<router-view></router-view>

六、缓存路由组件对象

默认情况下, 被切换的路由组件对象会死亡释放, 再次回来时是重新创建的

<keep-alive>

<router-view></router-view>

</keep-alive>

不让它死亡

七、路由组件传递数据的方式

 方式 1: 路由路径携带参数(param/query)

param:

1) 配置路由

children: [

{

path: 'mdetail/:id',

component: MessageDetail

}

]

2) 路由路径

<router-link :to="`/home/message/detail/'${message.id}`">{{message.title}}</router-link>

波浪号同键的`号

3) 路由组件中读取请求参数

this.$route.params.id


query:

1) 配置路由

children: [

{

path: 'detail',

component: MessageDetail

}

]

2) 路由路径

<router-link :to="'/home/message/mdetail?id='+m.id">{{m.title}}</router-link>

3) 路由组件中读取请求参数

this.$route.query.id

方式 2: <router-view>属性携带数据

<router-view :msg="msg"></router-view>

然后在组件里还是用props接

八、编程式路由导航

1) this.$router.push(path): 相当于点击路由链接(可以回退)

2) this.$router.replace(path): 用新路由替换当前路由(不可以正确回退到上一个界面,是到上上个)

3) this.$router.back(): 请求(返回)上一个记录路由

4) this.$router.go(-1): 请求(返回)上一个记录路由

5) this.$router.go(1): 请求下一个记录路由

<div>

<ul>

<li v-for="m in messages" :key="m.id">

<router-link :to="`/home/message/detail/${m.id}`">{{m.title}}</router-link>

<button @click="pushShow(m.id)">push查看</button>

<button @click="replaceShow(m.id)">replace查看</button>

</li>

</ul>

<button @click="$router.back()">回退</button>

<hr>

<router-view></router-view>

</div>

九、tip

当路由被选中时,会被加上router-link-active样式

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • vue路由的使用 vue-router是Vue.js官方的路由插件,它和vue.js是深度集成的,适合用于构建单页...
    赵客缦胡缨v吴钩霜雪明阅读 946评论 0 17
  • SPA单页应用 传统的项目大多使用多页面结构,需要切换内容的时候我们往往会进行单个html文件的跳转,这个时候受网...
    视觉派Pie阅读 11,943评论 1 55
  • 一、前端路由和后端路由 1.1 路由 路由就是通过互联的网络把信息从源地址传输到目的地址的活动。在Web的路由中,...
    怪兽难吃素阅读 1,692评论 0 7
  • 4.1. 常用 Mint UI: a.主页: https://mint-ui.github.io/#!/zh-cn...
    晓枷锁阅读 80评论 0 0
  • 在上中学的时候,当时郭敬明和韩寒在我们学生中突然就很火,我买一了一本《一座城池》,记忆中就是看不明白,好像主人公言...
    琳小喵阅读 190评论 0 0