一 vue-router的安装

二 vue-router的基本使用

三 命名路由

四 动态路由的匹配和路由组件的复用

一 vue-router的安装

NPM

npm install vue-router

如果在一个模块化工程中使用它,必须要通过 Vue.use() 明确地安装路由功能:

// 在router/index.js中
import Vue from 'vue'
import VueRouter from 'vue-router' Vue.use(VueRouter) // 之后在main.js中
import router from './router'
 

二 vue-router的基本使用

// router/index.js                  与直接生成的此文件有些不一样

// 1. 导入
import Vue from 'vue'
import VueRouter from 'vue-router'
import Home from '../views/Home.vue'
import About from '../views/About.vue'
// 2.模块化机制 使用
Vue.use(VueRouter) // 3. 创建路由器对象
export default new VueRouter ({
routes: [ {
path: '/',
name: 'home',
component: Home
},
{
path: '/about',
name: 'about',
component: About
}
]
})
// main.js 
import Vue from 'vue'
import App from './App.vue'
import router from './router' Vue.config.productionTip = false // 4 在main.js中挂载 router
new Vue({
router,
render: h => h(App)
}).$mount('#app')
// App.vue 
<template>
<div id="app">
<div id="nav">
<!--router-link相当于a标签 to相当于href-->
<router-link to="/">Home</router-link> |
<router-link to="/about">About</router-link> </div>
<!--router-view 相当于路由组件的出口-->
<router-view/>
</div>
</template>

三 命名路由

index.js
// 1. 导入
import Vue from 'vue'
import VueRouter from 'vue-router'
import Home from '../views/Home.vue'
import About from '../views/About.vue'
// 2.模块化机制 使用
Vue.use(VueRouter) // 3. 创建路由器对象
export default new VueRouter({
routes: [ {
path: '/',
name: 'home',
component: Home                index.js 写个 name
},
{
path: '/about',
name: 'about',
component: About
}
]
})
// App.vue
<template>
<div id="app">
<div id="nav">
<!--<router-link to="/">Home</router-link> |-->
<router-link :to="{name:'home'}">首页</router-link>
| // 对比两句话
<!--<router-link to="/about">About</router-link>-->
<router-link :to="{name:'about'}">About</router-link> </div>
<!--router-view 相当于路由组件的出口-->
<router-view/>
</div>
</template>

四 动态路由的匹配和路由组件的复用

动态路由的匹配

需求:

http://localhost:8080/user/1
http://localhost:8080/user/2
// 都是同样的页面 要新建一个User.vue的文件
1. 先配置路由  index.js
// 1. 导入
import Vue from 'vue'
import VueRouter from 'vue-router'
import Home from '../views/Home.vue'
import About from '../views/About.vue'
import User from '../views/User.vue' // 2.模块化机制 使用
Vue.use(VueRouter) // 3. 创建路由器对象
export default new VueRouter({
routes: [ {
path: '/',
name: 'home',
component: Home
},
{
path: '/about',
name: 'about',
component: About
},
{
// 1. 匹配路由 【:id】是哪个id的用户 :id
path: '/user/:id',
name: 'user',
component: User
}
]
})
2 App.vue
<template>
<div id="app">
<div id="nav">
<!--router-link相当于a标签 to相当于href-->
<!--<router-link to="/">Home</router-link> |-->
<router-link :to="{name:'home'}">首页</router-link>|
|
<!--<router-link to="/about">About</router-link>-->
<router-link :to="{name:'about'}">About</router-link>|
<router-link :to="{name:'user', params:{id:1}}">用户1</router-link>|
<router-link :to="{name:'user', params:{id:2}}">用户2</router-link>|
</div>
<!--router-view 相当于路由组件的出口-->
<router-view/>
</div>
</template>
3 新建一个User.vue的文件
<template>
<div class="user">
<h1>用户{{$route.params.id}}页面</h1>
</div>
</template>

路由组件的复用

<script>
export default {
// 当路由参数变化时 /user/1 切换到 /user/2 原来的组件实例会被复用
// 因为两个路由渲染了同个组件,复用高效
created() {
console.log('a',this.$route.params.id)
// 这个时候就只能打印一个id 要想点那个id打印那个id 我们要用watch监听 },
// watch: {
// // 监听 从哪个id变化成那个id
// $route: (to, from) => {
// console.log(to.params.id)
// console.log(from)
// // 监听 从哪个id变化成那个id 拿到id之后我们就可以发起ajax 请求后端接口数据 数据驱动视图
// }
// }
beforeRouteUpdate(to,from,next){
console.log(to.params.id)
// console.log(from)
// 一定要调用next 不然就阻塞(就是点不动了)
next();
} }
</script>

最新文章

  1. Android Activity的加载的模式
  2. FireFox、chrome通过插件使用IE内核,IE Tab v2
  3. 用JvisualVM监视远程tomcat
  4. pod出现include of non-modular header inside framework module 错误
  5. No grammar constraints (DTD or XML Schema) referenced in the document.
  6. GUID获取16位19位22位的唯一字符串
  7. swust oj 981
  8. laravel -查询近7月走势图案例
  9. 《AlwaysRun!》第一次作业:团队亮相
  10. mysql中的prepare介绍和应用
  11. C#使用MemoryStream类读写内存
  12. MOOC Linux内核之旅小结【转】
  13. BZOJ3522[Poi2014]Hotel——树形DP
  14. SSH配置文件详解
  15. 灵书妙探第一季/全集Castle迅雷下载
  16. 在Linux中查看正在运行哪些process,杀掉一批名字相同的process
  17. 浅谈Matcher和pattern的使用
  18. test20181018 B君的第一题
  19. javascript常用验证大全
  20. 插件-监控页面加载之loading

热门文章

  1. Prometheus组件
  2. 关于Lab3中对于正则表达式的应用
  3. [Verilog] indexed part-select +:
  4. MySQL序列解决方案
  5. ZC706+FMCOMMS5应用笔记
  6. String和Date 互相转换
  7. springboot2.1mysql驱动类弃用
  8. 单片机ADC检测4-20mA电路,以及计算方法
  9. Day7 - D - The Euler function HDU - 2824
  10. ip 在网络传输中是如何传递的