运用 Vue.js 时,我们就已把组件组合成一个运用了,当我们要把 vue-router 加进来,只须要设置组件和路由映照,然后通知 vue-router 在那里衬着它们。
先来看一下官方供应的最简朴的例子:
HTML
<script src="https://unpkg.com/vue/dist/vue.js"></script>
<script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>
<div id="app">
<h1>Hello App!</h1>
<p>
<!-- 运用 router-link 组件来导航. -->
<!-- 经由过程传入 `to` 属性指定链接. -->
<!-- <router-link> 默许会被衬着成一个 `<a>` 标签 -->
<router-link to="/foo">Go to Foo</router-link>
<router-link to="/bar">Go to Bar</router-link>
</p>
<!-- 路由出口 -->
<!-- 路由匹配到的组件将衬着在这里 -->
<router-view></router-view>
</div>
从HTML文件内里我们须要学会的是:
- <router-link>标签是我们要跳转的链接,to=””是必需的属性,双引号中的内容是我们接下来在JS文件中定义的路由path。
- <router-view>标签是展现我们匹配到的组件的地区。
JavaScript
// 0. 假如运用模块化机制编程,导入Vue和VueRouter,要挪用 Vue.use(VueRouter)
// 1. 定义(路由)组件。
// 也能够从其他文件 import 进来
const Foo = { template: '<div>foo</div>' }
const Bar = { template: '<div>bar</div>' }
// 2. 定义路由
// 每一个路由应当映照一个组件。 个中"component" 能够是
// 经由过程 Vue.extend() 建立的组件组织器,
// 或许,只是一个组件设置对象。
const routes = [
{ path: '/foo', component: Foo },
{ path: '/bar', component: Bar }
]
// 3. 建立 router 实例,然后传 `routes` 设置
// 你还能够传别的设置参数, 不过先这么简朴着吧。
const router = new VueRouter({
routes // (缩写)相当于 routes: routes
})
// 4. 建立和挂载根实例。
// 记得要经由过程 router 设置参数注入路由,
// 从而让全部运用都有路由功用
const app = new Vue({
router
}).$mount('#app')
// 如今,运用已启动了!
JavaScript文件重要做的事变是:
- 定义路由列表,即routes。
- 建立router实例及router设置,即router。
- 建立和挂载根实例。
以上只是教我们用最简朴的要领运用vue-router。但现实开辟过程当中,起首我们的vue组件明显不会只要一个template模板这么简朴,会用到vue的单文件组件;其次我们通常会愿望<router-view>的局限是全部页面,而不是像如今如许一向有几个碍眼的导航存在于页面上,这就须要先定义好默许状态下<router-view>显现的内容。
既然是单页运用(SPA),那末全部项目有以下三个文件是必要的:
- 一个html文件:index.html
- 一个webpack打包时的进口js文件:main.js
- 一个根vue组件,作为其他组件的挂载点:app.vue
别的另有两个自定义组件:homepage.vue和chat.vue。我们愿望的结果是他们之间相互跳转。
下面看下这几个文件的具体内容:
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Vue.js v2</title>
</head>
<body>
<!--由于我们用App.vue作为根组件,这里只须要写一个衬着用的挂载元素#application即可-->
<div id="application"></div>
<!--这里的dist目次是webpack打包后的js文件的途径-->
<script src="dist/main.js"></script>
</body>
</html>
main.js
这里我们挑选把路由设置也写到main.js中,你也能够写到一个零丁的router.js中再引入到main.js中。
//引入vue、vue-router和根组件app.vue
import Vue from 'vue'
import VueRouter from 'vue-router'
import App from './components/app.vue'
Vue.use(VueRouter)
// 引入自定义组件
import HomePage from './components/homepage.vue'
import Chat from './components/chat/chat.vue'
//定义路由
const routes = [
//这里 path: '/' 代表运用首页显现的内容
{ path: '/', component: HomePage },
{ path: '/chat', component: Chat }
];
//建立router实例
const router = new VueRouter({
//mode指定路由形式,默许'hash',另一种可选的形式是'history'
mode: 'hash',
routes,
});
new Vue({
el: '#application',
router,
render: h => h(App) //用render函数衬着引入的组件App.vue到index.html中的#application元素中
})
app.vue
<template lang="html">
<div id="app">
<!--这里是组件的衬着地区-->
<router-view></router-view>
</div>
</template>
<script>
export default {
data () {
return {
}
},
}
</script>
自定义组件 homepage.vue
这个组件的内容也是进入运用默许展现的页面内容。
<template>
<div>
<h1>homepage</h1>
<router-link to="/chat">Go to chat</router-link>
</div>
</template>
自定义组件 chat.vue
<template>
<div>
<h1>Chat</h1>
<router-link to="/">Go to homepage</router-link>
</div>
</template>
写完后你会发明这两个页面是相互跳转的,没错,就是如许。
平常我们会把路由信息routes提取到一个零丁的文件中,像如许:
路由信息提取到零丁文件中 route-config.js:
import HomePage from './components/homepage.vue'
import Chat from './components/chat/chat.vue'
export default [
{
path: '/',
component: HomePage
},
{
path: '/chat',
component: Chat
}
];
然后在main.js
中引入: import routes from './route-config.js'
就能够了。
参考文献:
- vue-router 2官方文档: http://router.vuejs.org/zh-cn/
- Vue-router2.0进修笔记: https://segmentfault.com/a/11…
- vue2.0构建单页运用最好实战: https://segmentfault.com/a/11…
- 一个完全的vue运用 ( vuex+vue-router ) 起手: https://segmentfault.com/a/11…