vue学习(十二)vue全家桶 Vue-router&Vuex
一 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的更多相关文章
- 已配置好的vue全家桶项目router,vuex,api,axios,vue-ls,async/await,less下载即使用
github 地址: https://github.com/liangfengbo/vue-cli-project 点击进入 vue-cli-project 已构建配置好的vuejs全家桶项目,统一管 ...
- vue学习(十二) 指令v-if v-show 控制页面标签的显示与隐藏
//html <div id="app"> <input type="button" value="toggle" @cl ...
- vue全家桶(Vue+Vue-router+Vuex+axios)(Vue+webpack项目实战系列之二)
Vue有多优秀搭配全家桶做项目有多好之类的咱就不谈了,直奔主题. 一.Vue 系列一已经用vue-cli搭建了Vue项目,此处就不赘述了. 二.Vue-router Vue的路由,先献上文档(http ...
- (转)SpringMVC学习(十二)——SpringMVC中的拦截器
http://blog.csdn.net/yerenyuan_pku/article/details/72567761 SpringMVC的处理器拦截器类似于Servlet开发中的过滤器Filter, ...
- 【实战】Vue全家桶(vue + axios + vue-router + vuex)搭建移动端H5项目
使用Vue全家桶开发移动端页面. 本博文默认已安装node.js. github链接 一.准备工作 安装vue npm install vue 安装脚手架vue-cli npm install -g ...
- 一个简单的假vue全家桶(vue+vue-router+require)
首先说明我觉得这是一个比较好理解的vue全家桶(虽然是假的),模块化也是用require来做的,而且如果后期有必要压缩我也会用gulp来做 1.依赖个个本地模块,require只是用来载入page,这 ...
- vue第十二单元(vue中过渡效果的实现)
第十二单元(vue中过渡效果的实现) #课程目标 熟练掌握transition组件的用法 熟练使用transition组件做过渡特效 熟练使用transition组件做动画特效 了解使用transit ...
- vue学习【二】vue结合axios动态引用echarts
大家好,我是一叶,本篇是vue学习的第二篇,本篇将要讲述vue结合axios动态引用echarts. 在vue中,异步刷新使用的是axios,类似于大家常用的ajax,其实axios已经是vue的第二 ...
- Vue(十二)vue实例的属性和方法
vue实例的属性和方法 1. 属性 vm.$el vm.$data vm.$options vm.$refs <!DOCTYPE html> <html lang="en& ...
- Vue学习(二):class与style绑定
<!DOCTYPE html> <html lang="en" xmlns:v-bind="http://www.w3.org/1999/xhtml&q ...
随机推荐
- 简述javascript的解析与执行
我们知道浏览器中javascript程序的执行是基于变量与函数的.那么浏览器是如何保存数据,又是如何执行的呢?今天我们一起来探究一下! 0.写在前 最新的 ECMAScript 标准定义了 8 种数据 ...
- C语言书籍入门---第三章
=======变量和数据类型========= 说 明:字符型 短整型 整型 长整型 单精度浮点型 双精度浮点型 无类型 数据类型:char short int long float d ...
- 第2节 storm路由器项目开发:8 - 9、集群监控软件ganglia的安装和使用
Ganglia监控Hadoop集群的安装部署 详情请参见 http://boendev.iteye.com/blog/1750615 一. 安装环境 CentOS6.5x86_64 安装gmetad的 ...
- Linux命令:date命令
date命令作用:显示和设置系统的日期和时间 一.设置系统日期时间 格式:date [MMDDhhmm[[CC]YY][.ss]] 举例:将当前系统时间改为 2020年10月1日12点10分 # da ...
- 使用IDEA,Eclispe搭建Spring Boot项目
如何创建一个Spring Boot项目?这里使用maven来进行依赖管理,根据常用的IDE,可以使用IDEA.Eclipse.或者访问官方网站搭建. 项目搭建环境准备 JDK:1.8 MAVEN:3. ...
- bzoj 2111: [ZJOI2010]Perm 排列计数
神题... 扒自某神犇题解: http://blog.csdn.net/aarongzk/article/details/50655471 #include<bits/stdc++.h> ...
- JDBC--获取数据库连接
1.JDBC(Java Database Connectivity)是一个独立于特定数据库管理系统.统一的sQL数据库存取和操作的公共接口. 2.Java中的几种数据库存取技术: --1)JDBC直接 ...
- Day2-D-Oil Deposits-POJ-1562
The GeoSurvComp geologic survey company is responsible for detecting underground oil deposits. GeoSu ...
- SSH框架结构分析
分类: 工作问题2012-03-29 18:10 1511人阅读 评论(0) 收藏 举报 框架sshhibernatespringstrutsdao 最近在弄j2ee,发现还是学到了很多东西,心情ha ...
- MQTT v5 (MQTT 5.0) 新特性介绍
https://blog.csdn.net/mrpre/article/details/87267400 背景 MQTT v3.1.1 作为一个经典的版本,一般能够满足大部分需求:为了避免落后,我们也 ...