VUE元数据及路由匹配
HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>元数据及路由匹配</title>
</head>
<body>
<div id="app">
<div>
<router-link to="/">首页</router-link>
<router-link to="/login">登录</router-link>
<router-link to="/post">帖子管理</router-link>
</div>
<div>
<router-view></router-view>
</div>
</div>
<script src="https://cdn.bootcss.com/vue/2.6.11/vue.js"></script>
<script src="https://cdn.bootcss.com/vue-router/2.7.0/vue-router.js"></script>
<script src="index.js"></script>
</body>
</html>
JS
var routes = [{
path: '/',
component: {
template: '<div><h1>首页</h1></div>'
},
},
{
path: '/login',
component: {
template: '<div><h1>登录</h1></div>'
}
},
{
path: '/post',
meta: {
login_required: true
},
component: {
template: '<div><div><h1>帖子管理</h1></div><router-link to="rain" append>大鱼</router-link><router-view></router-view></div>'
},
children: [{
path: 'rain',
component: {
template: '<h2>安河桥北</h2>'
}
}]
},
]
var router = new VueRouter({
routes: routes
})
router.beforeEach(function (to, from, next) {
var logged_in = false;
console.log('to.matched', to.matched);
if (!logged_in && to.matched.some(function (item) {
return item.meta.login_required
})) {
next('/login');
} else {
next();
}
})
new Vue({
el: '#app',
router: router
})