routes是包含路由映射关系的数组,数组的每一项都包含了一条路由映射信息。routeConfig可以包含一些信息:
declare type routeConfig = { path: string, //路径 component: componentObj,//视图组件 name: string,//命名路由 components: {[name: string]: componentObj},//命名视图组件 redirect: string | Location | Function, props: boolean | Object | Function, alias: string | Array<string>, children: Array<RouteConfig>, // 嵌套路由 beforeEnter: (to: Route, from: Route, next: Function) => void, meta: any, // 2.6.0+ caseSensitive: boolean,// 匹配规则是否大小写敏感?(默认值:false) pathToRegexpOptions: Object// 编译正则的选项 }
mode
最开始说到的前端路由和后端路由的差别,我们可以使用mode来配置路由的模式,有以下三种模式:
hash:浏览器模式,会在链接前加上"#"最为俩链接,支持所有浏览器。
history:依赖 HTML5 History API 和服务器配置。
abstract:支持所有 JavaScript 运行环境,如 Node.js 服务器端。
base
设置路由的基路径,默认为"http://www.likecs.com/"。
linkActiveClass
linkExactActiveClass
此外还有一些其他可供选择的项,这里不再一一赘述。更多细节请参考:Vue-router官方文档
5、路由实例属性router.app:配置了该路由的Vue根实例。
router.mode:路由的模式。
router.currentRute:当前路由对应的路由信息对象。
6、 路由对象一个路由对象 (route object) 表示当前激活的路由的状态信息,包含了当前 URL 解析得到的信息,还有 URL 匹配到的路由记录 (route records)。
路由对象是不可变 (immutable) 的,每次成功的导航后都会产生一个新的对象。
路由对象可以出现在多个地方,自如组件内:this.$route。(注意是$route而不是$router,前者是路由对象,后者是路由实例)。
路由对象有以下属性:
$route.path:当前导航路径。
$route.params:一个 key/value 对象,包含了动态片段和全匹配片段,如果没有路由参数,就是一个空对象。
$route.query:一个 key/value 对象,表示 URL 查询参数。
$route.hash:当前路由的 hash 值 (带 #) ,如果没有 hash 值,则为空字符串。
$route.fullPath:完成解析后的 URL,包含查询参数和 hash 的完整路径。
$route.matched:一个数组,包含当前路由的所有嵌套路径片段的路由记录 。路由记录就是 routes 配置数组中的对象副本 (还有在 children 数组)。
$route.name:当前路由的名称,如果有的话。
$route.redirectedFrom:如果存在重定向,即为重定向来源的路由的名字。
更多细节请参考:Vue-router官方文档
7、一些简单的例子 #路由对象的使用 <p> <!--注意:这里如果没有 / 就会变成append模式 ,即在当前连接下添加连接--> <router-link to="/query?id='123'&name='jinx'">Query</router-link> <router-link to="/params/456/yasuo">Params</router-link> </p> <router-view></router-view> //1、创建路由视图组件:在模版中掉用路由对象 var query = {template: '<h3>this is query: id=<em>{{$route.query.id}}</em>&name=<em>{{$route.query.name}}</em></h3>'}; var params = {template: '<h3>This is params: id=<em>{{$route.params.id}}</em>, name=<em>{{$route.params.name}}</em></h3>'}; //2、创建路由规则 var routes = [ {path: '/query', component: query}, {path: '/params/:id/:name', component: params} ]; //3、创建一个路由实例 var router = new VueRouter({ routes: routes }); //4、将路由搭载到Vue实例中 new Vue({ el: '#app', router: router }); #路由嵌套 <div> <!--路由--> <router-link to="http://www.likecs.com/">Home</router-link> <router-link to="/account">Account</router-link> <router-view></router-view> <!--模板--> <script type="text/template"> <div> <h3>用户操作界面</h3> <!--子路由--> <router-link to="/account/login">login</router-link> <router-link to="/account/register">register</router-link> <router-view></router-view> </div> </script> </div> //1、创建路由视图组件 var home = {template: '<h3>home page</h3>'}; var account = {template: '#account-template'};//可以导入模板(这里使用template标签的使用有bug不知道什么原因) var login = {template: '<h3>登陆</h3>'}; var register = {template: '<h3>注册</h3>'}; //2、创建路由规则 var routes = [ {path: 'http://www.likecs.com/', component: home}, {path: '/account', component: account, children: [ {path: '/account/login', component: login}, {path: '/account/register', component: register} ] }, ]; //3、创建一个路由实例 var router = new VueRouter({ routes: routes }); //4、将路由搭载到Vue实例中 new Vue({ el: '#app', router: router });