web开发笔记之vue-router使用

简介


今天对看文档,对vue-router的使用有了写了解,并且做了个跳转的demo,所以今天见简单介绍一下vue-router的使用.

内容


  • SPA

单页Web应用(single page web application,SPA),就是只有一张Web页面的应用。单页应用程序 (SPA) 是加载单个HTML 页面并在用户与应用程序交互时动态更新该页面的Web应用程序。[1]
浏览器一开始会加载必需的HTML、CSS和JavaScript,所有的操作都在这张页面上完成,都由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')
// 现在,应用已经启动了!

这样就实现了一个简单的单页应用demo.

说说我的理解,单页应用可以使webapp更加接近原生应用,使用vue-router和相应的过渡可以做出媲美webapp的界面调转和原生应用的跳转.其实就是用js和css3实现了例如ios中页面跳转的过渡.

  • 嵌套路由

实际生活中的应用界面,通常由多层嵌套的组件组合而成。同样地,URL 中各段动态路径也按某种结构对应嵌套的各层组件,例如:

 /user/foo/profile                  /user/foo/posts 
+------------------+                  +------------------+ 
| User              |                 | User              |
| +--------------+  |                 | +--------------+  | 
| | Profile       | | +------------>  | | posts          ||
| |               | |                 | |               | |
|  +--------------+ |                 |  +--------------+ |
+------------------+                   +------------------+ 
 

**可以认为是页面和页面间的跳转,和一个页面中局部区域的跳转 **
一般我们的应用只有一个router实例,它设置了所用的路径跳转,我们可以根据路径的深度和广度以及其他来设置相应的过渡,(就像ios中的转场一样).给我的感觉就像一个操控整个局势的无形之手一样.

借助 vue-router,使用嵌套路由配置,就可以很简单地表达这种关系。
接着上节创建的 app:

-html:
<div id="app"> <router-view></router-view></div>
-js:
const User = { template: '<div>User {{ $route.params.id }}</div>'}const 
router = new VueRouter({ routes: [ { path: '/user/:id', component: User } ]})

这里的 <router-view>是最顶层的出口,渲染最高级路由匹配到的组件。同样地,一个被渲染组件同样可以包含自己的嵌套 <router-view>
。例如,在 User组件的模板添加一个 <router-view>:

const User = { template: ` 
  <div class="user">
     <h2>User {{ $route.params.id }}</h2> 
     <router-view></router-view> 
  </div>
 `}

要在嵌套的出口中渲染组件,需要在 VueRouter的参数中使用 children 配置:

const router = new VueRouter({ 
routes:
 [ { 
 path: '/user/:id', 
 component: User, 
 children: [ { 
// 当 /user/:id/profile 匹配成功,
 // UserProfile 会被渲染在 User 的 <router-view> 中 path: 'profile', component: UserProfile }, {
 // 当 /user/:id/posts 匹配成功
 // UserPosts 会被渲染在 User 的 <router-view> 中 
        path: 'posts', 
        component: UserPosts     } ]
 } ]
 })

要注意,以 / 开头的嵌套路径会被当作根路径。 这让你充分的使用嵌套组件而无须设置嵌套的路径。
你会发现,children 配置就是像 routes配置一样的路由配置数组,所以呢,你可以嵌套多层路由。
此时,基于上面的置,当你访问 /user/foo 时,User的出口是不会渲染任何东西,这是因为没有匹配到合适的子路由。如果你想要渲染点什么,可以提供一个 空的 子路由:

const router = new VueRouter({ 
routes: [ 
              { 
                   path: '/user/:id', component: User,   
                   children:  [ 
                     // 当 /user/:id 匹配成功,
                     // UserHome 会被渲染在 User 的 <router-view> 中 
                     { path: '', component: UserHome }, 
                     // ...其他子路由  ]
                                 
                } 
        ]
})

结束

<router-view>就像是舞台, index.html中的<router-view>是一个根舞台,所有页面间的跳转都在上面,而组件中的<router-view> 是小舞台 ,但是它的跳转路径在其相对根路径的children来设置.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容