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 ...
随机推荐
- Random Process Modeling_1
1. Bertrand Triangle r=1; %circle radius x0=0; y0=0; %centre of circle %points for circle t=linspace ...
- 网络流的最大流入门(从普通算法到dinic优化)
网络流(network-flows)是一种类比水流的解决问题方法,与线性规划密切相关.网络流的理论和应用在不断发展.而我们今天要讲的就是网络流里的一种常见问题--最大流问题. 最大流问题(maximu ...
- 一种新的python局部调试手法
我们都知道,python里面可以用pdb来调试代码.但是pdb往往不大好用.有时候调试代码往往在多重条件里面,直接用pdb需要下条件断点,设定复杂的条件. 一个简单的办法就是这么干. __import ...
- ROS-5 : 自定义消息
自定义消息一般存储在功能包的msg文件夹下的.msg文件中,这些定义可告诉ROS这些数据的类型和名称,以便于在ROS 节点中使用.添加完这些自定义消息后,ROS会将其转为等效的C++节点,从而可在其他 ...
- 二十 Filter&自动登录功能
Filter过滤器 过滤器,其实就是对客户端发出来的请求进行过滤,浏览器发出,然后服务器用Servelt处理.在中间就可以过滤,起到的是拦截的作用. 不仅仅作用于客户端请求,而且过滤服务器响应 作用: ...
- 使用Vue 和 内网穿透:返回 invalid host header
原因:新版的webpack-dev-server出于安全考虑,默认检查hostname,如果它不是配置内的,将会中断访问. -------------------------------------- ...
- 201705 Ruby基础拾遗
Mixin override 异常处理 super 与super() 使用%()处理需要string interpolation但同时也需要" "(double quote)的状况 ...
- shiro#springboot
1. shiro的使用围绕着securityManager,权限需要从realm中来. securityManager可以设置realm或者realms,或者通过设置authenticator来设置r ...
- other#apache-commons
if you want to be a better javaer, you should spent time on apache commons.
- Ruoyi的确不错,不知后续能否坚持 允许商用
对于一个开源项目,作者的确很优秀: 在我们现在这个环境,能把一个开源项目做到这个规模,相当不容易:给作者点赞: 不过我也心里嘀咕,不知道后面哪天这个哥们突然发声明,不允许商用呢? 先偷偷留个证据,省的 ...