今天看了下 vue router 的文档,自己写了个小 demo,代码如下
<html>
<head>
<script src="https://unpkg.com/vue/dist/vue.js"></script>
<script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>
</head>
<body>
<div>
<router-link to="/home">Home</router-link>
<router-link to="/about">About</router-link>
<div id="app">
<router-view></router-view>
</div>
</div>
<script>
var Home = Vue.extend({
template: '<div><h1>Home</h1><p>{{msg}}</p></div>',
data: function() {
return {
msg: 'Hello, vue router!'
}
}
})
var About = Vue.extend({
template: '<div><h1>About</h1><p>This is the tutorial about vue-router.</p></div>'
})
const routes = [{
path: '/home',
component: Home
},
{
path: '/about',
component: About
}
]
const router = new VueRouter({
routes
})
const app = new Vue({
router
}).$mount('#app')
</script>
</body>
</html>
通过直接输入地址的方式可以实现页面显示内容的变化,但是点击跳转链接不行,查看页面源码发现 router-link 标签没有被渲染成 a 标签。
经过尝试发现原来是 router-link 标签也需要包裹在 #app 的标签里才行,修改后可正常运行的代码如下
<html>
<head>
<script src="https://unpkg.com/vue/dist/vue.js"></script>
<script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>
</head>
<body>
<div id="app">
<router-link to="/home">Home</router-link>
<router-link to="/about">About</router-link>
<div>
<router-view></router-view>
</div>
</div>
<script>
var Home = Vue.extend({
template: '<div><h1>Home</h1><p>{{msg}}</p></div>',
data: function() {
return {
msg: 'Hello, vue router!'
}
}
})
var About = Vue.extend({
template: '<div><h1>About</h1><p>This is the tutorial about vue-router.</p></div>'
})
const routes = [{
path: '/home',
component: Home
},
{
path: '/about',
component: About
}
]
const router = new VueRouter({
routes
})
const app = new Vue({
router
}).$mount('#app')
</script>
</body>
</html>


所有评论(0)