主要要通过url 中的 hash (#) ,来实现不同页面之间的切换,特点:http请求中不会包含hash相关的内容
引入:
npm install vue-router
import Vue from 'vue'
import VueRouter from 'vue-router'
Vue.use(VueRouter)
var login ={
template:'登录组件
'
}
var register ={
template:'注册组件
'
}
var routerObj = new VueRouter({
routes:[ //path 监听路由地址;component 展示对应的组件
//注意:component 属性值,必须是一个组件的模板对象,不能是组件的引用名称
{path:'/login',component:login}
{path:'/register',component:register}
]
})
var vm = new Vue({
el:'app',
data:{},
...
router:routerObj //将路由规则对象,注册到 vm 实例上
})
{path:’/’,redirect:’/login’} //页面加载后默认渲染login组件
var routerObj = new VueRouter({
routes:[...],
linkActiveClass:'myactive'
})
.v-enter,.v-leave-to{opacity:0;transform:translateX{140px;}}
.v-enter-active,v-leave-active{transition:all 0.5s ease;}
登录
注册
//vue-router 提供的元素,专门用来当占位符
var login ={
template:'登录组件---id为{
{$route.query.id}}
',
create:{
console.log(this.$route.query.id)
}
}
var register ={
template:'注册组件
'
}
var router = new VueRouter({
routes:[
{path:'/login',component:login}
{path:'/register',component:register}
]
})
var vm = new Vue({
el:'app',
data:{},
...
router // 属性名和属性值一样的时候,可以省略属性值(等价于 router:router)
{path:'/login:id/:name',component:login}
var login ={
template:'登录组件---id为{
{$route.params.id}}
',
create:{
console.log(this.$route.params.id)
}
}
//vue-router 提供的元素,专门用来当占位符
account组件
登录
注册
var account={
template:'#tmp1'
}
var login ={
template:'登录组件}
',
}
var register ={
template:'注册组件
'
}
var router = new VueRouter({
routes:[
{
path:'/account',
component:account,
children:[
{path:'login',component:login} //子路由的路径不加 /
{path:'register',component:register}
]
}
]
})
var vm = new Vue({
el:'app',
data:{},
...
router // 属性名和属性值一样的时候,可以省略属性值(等价于 router:router)
var header = {template:'头部
'}
var leftBox = {template:'左边栏区域
'}
var mainBox = {template:'主题区域
'}
var router = new VueRouter({
routes:[
path:{'/',components:{
default:header,
left:leftBox,
main:mainBox,
}}
]
})
+
=
var vm = new Vue({
el:'#app',
data:{
firstname:'',
lasttname:'',
fullname:'',
},
methods:{},
watch:{ //watch 属性,监视 data 中指定数据的变化,然后触发watch中对应的fuc
firstname:function(newVal,oldVal){} //属性名可以不加引号,除非有-拼接的属性名
}
})
var vm = new Vue({
el:'app',
data:{},
...
router // 属性名和属性值一样的时候,可以省略属性值(等价于 router:router)
watch:{ //监听地址栏路由的改变
'$route.path':function(newVal,oldVal){
}
}
+
=
var vm = new Vue({
el:'app',
data:{
firstname:'',
lasttname:'',
fullname:'',
},
watch:{},
//在 comupted 中可以定义一些属性(计算属性),计算属性的本质就是一个方法
computed:{
//注意 计算属性在引用的时候不加()去调用;
//只要计算属性 function 内部,所用到的任何 data 中的数据发生变化,就会立即重新计算
// 计算属性的结果,会被缓存,方便下次直接使用,如果计算属性方法中,数据没有变化,则不会重新计算
'fullname':function(){
return this.firstname + '-' + this.lastname;
}
}
}
VUE2 入坑指南05–组件
VUE2 入坑指南07–vuex