一 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>

vue学习(十二)vue全家桶 Vue-router&Vuex的更多相关文章

  1. 已配置好的vue全家桶项目router,vuex,api,axios,vue-ls,async/await,less下载即使用

    github 地址: https://github.com/liangfengbo/vue-cli-project 点击进入 vue-cli-project 已构建配置好的vuejs全家桶项目,统一管 ...

  2. vue学习(十二) 指令v-if v-show 控制页面标签的显示与隐藏

    //html <div id="app"> <input type="button" value="toggle" @cl ...

  3. vue全家桶(Vue+Vue-router+Vuex+axios)(Vue+webpack项目实战系列之二)

    Vue有多优秀搭配全家桶做项目有多好之类的咱就不谈了,直奔主题. 一.Vue 系列一已经用vue-cli搭建了Vue项目,此处就不赘述了. 二.Vue-router Vue的路由,先献上文档(http ...

  4. (转)SpringMVC学习(十二)——SpringMVC中的拦截器

    http://blog.csdn.net/yerenyuan_pku/article/details/72567761 SpringMVC的处理器拦截器类似于Servlet开发中的过滤器Filter, ...

  5. 【实战】Vue全家桶(vue + axios + vue-router + vuex)搭建移动端H5项目

    使用Vue全家桶开发移动端页面. 本博文默认已安装node.js. github链接 一.准备工作 安装vue npm install vue 安装脚手架vue-cli npm install -g ...

  6. 一个简单的假vue全家桶(vue+vue-router+require)

    首先说明我觉得这是一个比较好理解的vue全家桶(虽然是假的),模块化也是用require来做的,而且如果后期有必要压缩我也会用gulp来做 1.依赖个个本地模块,require只是用来载入page,这 ...

  7. vue第十二单元(vue中过渡效果的实现)

    第十二单元(vue中过渡效果的实现) #课程目标 熟练掌握transition组件的用法 熟练使用transition组件做过渡特效 熟练使用transition组件做动画特效 了解使用transit ...

  8. vue学习【二】vue结合axios动态引用echarts

    大家好,我是一叶,本篇是vue学习的第二篇,本篇将要讲述vue结合axios动态引用echarts. 在vue中,异步刷新使用的是axios,类似于大家常用的ajax,其实axios已经是vue的第二 ...

  9. Vue(十二)vue实例的属性和方法

    vue实例的属性和方法 1. 属性 vm.$el vm.$data vm.$options vm.$refs <!DOCTYPE html> <html lang="en& ...

  10. Vue学习(二):class与style绑定

    <!DOCTYPE html> <html lang="en" xmlns:v-bind="http://www.w3.org/1999/xhtml&q ...

随机推荐

  1. Vue 集成easyUI

    原 Vue 集成easyUI https://blog.csdn.net/m0_37948170/article/details/84960320   参考vue官网用cli创建了Vue项目之后: n ...

  2. PAT B1020 月饼

    #include<iostream> #include<algorithm> using namespace std; struct mooncake { double sto ...

  3. [经验] 项目中 session 过期后弹出的登录窗口无法登录怎么办

    背景: 当session过期后, 按照 系统的设计,  会自动跳转到登录页面, 重新进行登录操作 问题: 由于进入主页后, 其他页面都是嵌入式的模板页, 所以这时的登录页面也是内嵌在index模板下的 ...

  4. mabatis--查询缓存

    1.mybatis提供查询缓存,用于减轻数据库压力,提高数据库性能. 2.mybatis提供一级缓存.二级缓存: 3.一级缓存是SqlSession级别的缓存.在SqlSession对象中,存在一个数 ...

  5. (转)Dom4j中的中文编码问题

    一.“中文问题没商量”之Dom4j中的编码问题  本文主要讲述的是Dom4j在把Document保存到文件过程中出现的一个中文问题,本文跟<80前>一文一样,以Spring项目无关,请“春 ...

  6. Vue3中的Proxy作用在哪里?

    目录 前言 Vue没有Proxy会怎么样? proxy开始 前言 在讲解Proxy之前,我们有些前置知识点是必要掌握的: Object相关静态函数 Reflect相关静态函数 简单说明知识盲点 名称 ...

  7. 编程题目:求幂 (python)

    数值的整数次方 效率0(lgn) 这个求幂函数无论 基数 或 次方 为 正数或者为负数都是成立的.只是他们都为整数罢了. 注意了哦,这个代码必须要用python3才能运行正确,因为python3的 整 ...

  8. 功耗极低非接触 13.56mhz读卡芯片:SI522

    众所周知13.56mhz是高频,一般用于防伪,做到成品非常薄.在智能门锁以及RFID读卡器是非常多人采用的,不管是在读卡距离.读卡灵敏度都是非常好的.现在智能门锁的竞争性很大,大多厂商及方案商都慢慢往 ...

  9. imput placeholder 移动端不居中问题

    input{ height: 100%; } input::-webkit-input-placeholder { display: flex; align-items: center; line-h ...

  10. html的适配

    html值得一说的应该就是适配 !!适配是与手机同时存在的 写好一个页面在手机端打开,会发现这个页面显示很小,那是因为设备的视口宽度viewport不等于设备宽度device-width,而页面是根据 ...