路由的注册:不推荐直接使用to
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="https://cdn.bootcss.com/vue/2.5.17-beta.0/vue.js"></script>
<script src="https://cdn.bootcss.com/vue-router/3.0.1/vue-router.js"></script>
</head>
<body>
<div id="app">//这是显示到页面
<router-link to="/">首页</router-link>
<router-link to="/about">关于我们</router-link>
<router-link to="/user">用户管理</router-link>
<div>承载的空间,不起名为默认三个都可以使用
<router-view></router-view>
</div>
</div>
<script>
let routes = [
{
path:'/',
component:{template:`<div><h1>这是首页</h1></div>`}
},
{
path:'/about',
component:{template:`<div><h1>关于我们</h1></div>`}
},
{
path:'/user',
component:{template:`<div><h1>用户管理</h1></div>`}
},
];//页面显示的内容
let router = new VueRouter({
routes:routes //实例化vuerouter
});
const app = new Vue({
el:'#app',
router:router //注册router
})
</script>
</body>
</html>
路由的命名及视图:推荐使用name 适用于对于头和尾的问题
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="https://cdn.bootcss.com/vue/2.5.17-beta.0/vue.js"></script>
<script src="https://cdn.bootcss.com/vue-router/3.0.1/vue-router.js"></script>
<style>
.fooder{
position: fixed;
bottom: 0;
}
</style>
</head>
<body>
<div id="app">
<router-link :to={name:"index"}>首页</router-link>
<router-link :to={name:"about"}>关于我们</router-link>
<router-link to="/user">用户管理</router-link>
<div>
<router-view name="header"></router-view>
<router-view name="fooder" class="fooder"></router-view>
<router-view></router-view>
</div>
</div>
<script>
let routes = [
{
path:'/',
name:'index',
components:{header:{template:`<div><h1>头部</h1></div>`},
fooder:{template:`<div><h1>底部</h1></div>`}}
},
{
path:'/about',
name:'about',
component:{template:`<div><h1>关于我们</h1></div>`}
},
{
path:'/user',
component:{template:`<div><h1>用户管理</h1></div>`}
},
];
let router = new VueRouter({
routes:routes
});
const app = new Vue({
el:'#app',
router:router
})
</script>
</body>
</html>
路由的参数:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="https://cdn.bootcss.com/vue/2.5.17-beta.0/vue.js"></script>
<script src="https://cdn.bootcss.com/vue-router/3.0.1/vue-router.js"></script>
<style>
.fooder{
position: fixed;
bottom: 0;
}
</style>
</head>
<body>
<div id="app">
<!--可以复用,name匹配下边的userinfo以及参数-->
<router-link :to={name:"index"}>首页</router-link>
<router-link :to={name:"about"}>关于我们</router-link>
<router-link :to={name:"index"}>跳转首页</router-link>
<router-link :to="{name:'userinfo',params:{name:'alex'},query:{age:48}}">用户管理</router-link>
<div>
<router-view name="header"></router-view>
<router-view name="fooder" class="fooder"></router-view>
<router-view></router-view>
</div>
</div>
<script>
let routes = [
{
path:'/',
name:'index',
components:{header:{template:`<div><h1>头部</h1></div>`},
fooder:{template:`<div><h1>底部</h1></div>`}}
},
{
path:'/about',
name:'about',
component:{template:`<div><h1>关于我们</h1></div>`}
},
{
path:'/user/:name',
name:'userinfo',
component:{template:`<div><h1>{{username}}的年龄是{{age}}</h1></div>`,//赋值操作
data(){
return {
username:this.$route.params.name,
age:this.$route.query.age,//取值操作
}
},
},},
];
let router = new VueRouter({
routes:routes
});
const app = new Vue({
el:'#app',
router:router
})
</script>
</body>
</html>
路由的钩子,有很多的钩子这里举得例子是router.beforeEach(to, from, next),to准备去哪,from 来自哪 ,next执行(),查看生命周期会有更多的钩子
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="https://cdn.bootcss.com/vue/2.5.17-beta.0/vue.js"></script>
<script src="https://cdn.bootcss.com/vue-router/3.0.1/vue-router.js"></script>
</head>
<body>
<div id="app">
<router-link to="/">首页</router-link>
<router-link to="/login">关于我们</router-link>
<router-link to="/user">用户管理</router-link>
<router-link to="/vip">vip管理</router-link>
<div>
<router-view></router-view>
</div>
</div>
<script>
let routes = [
{
path: "/",
component: {
template: `<div><h1>这是首页</h1></div>`
}
},
{
path: "/login",
component: {
template: `<div><h1>关于我们</h1></div>`
}
},
{
path: "/user",
component: {
template: `<div>
<h1>用户管理</h1>
<router-link :to="{name:'more'}">用户详情</router-link>
<router-link :to="{name:'mores'}">用户更多详细信息</router-link>
</div>`, },
children:[
{
path:"more",
name:'more',
meta:{
required_login:true
},
component:{
template:`<div><h1>用户详细信息</h1></div>`
}
},
{
path:"mores",
name:'mores',
meta:{
required_login:true
},
component:{
template:`<div><h1>用户更多详细信息</h1></div>`
}
},
]
},
{
path:"/vip",
meta:{
required_login:true
},
component:{
template:`<div><h1>vip管理</h1></div>`
}
}
];
let router = new VueRouter({
routes: routes
});
router.beforeEach(function (to,from,next) {
if(to.meta.required_login){
next('/login')
}else{
next()
}
});
const app = new Vue({
el: "#app",
router: router,
})
</script>
</body>
</html>
生命周期代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="https://cdn.bootcss.com/vue/2.5.17-beta.0/vue.js"></script>
<script src="https://cdn.bootcss.com/vue-router/3.0.1/vue-router.js"></script>
</head>
<body>
<div id="app">
{{name}}
</div>
<script>
const app = new Vue({
el: "#app",
data: {
name: "alex",
},
methods: {
init: function () {
return 1
}
},
beforeCreate(){
console.group("bebeforeCreate ########")
console.log("data##", this.$data)
console.log("el##", this.$el)
console.log("msg##", this.name)
console.log("func##", this.init)
},
created(){
console.group("Create ########")
console.log("data##", this.$data)
console.log("el##", this.$el)
console.log("msg##", this.name)
console.log("func##", this.init)
},
beforeMount(){
console.group("beforeMount ########")
console.log("data##", this.$data)
console.log("el##", this.$el)
console.log("msg##", this.name)
console.log("func##", this.init)
},
mounted(){
console.group("mounted ########")
console.log("data##", this.$data)
console.log("el##", this.$el)
console.log("msg##", this.name)
console.log("func##", this.init)
},
beforeUpdate(){
console.group("beforeUpdate ########")
console.log("data##", this.$data)
console.log("el##", this.$el)
console.log("msg##", this.name)
console.log("func##", this.init)
},
updated(){
console.group("updated ########")
console.log("data##", this.$data)
console.log("el##", this.$el)
console.log("msg##", this.name)
console.log("func##", this.init)
},
beforeDestroy(){
console.group("bef des ########")
console.log("data##", this.$data)
console.log("el##", this.$el)
console.log("msg##", this.name)
console.log("func##", this.init)
},
destroyed(){
console.group("des ########")
console.log("data##", this.$data)
console.log("el##", this.$el)
console.log("msg##", this.name)
console.log("func##", this.init)
}
})
</script>
</body>
</html>