vue-router學(xué)習(xí)筆記

一圾结、前端路由

??????路由是根據(jù)不同的url地址顯示不同的內(nèi)容或頁面
??????前端路由就是把不同路由對(duì)應(yīng)不同的內(nèi)容或頁面的任務(wù)交給前端來做瑰剃,之前是通過服務(wù)器根據(jù)url的不同返回不同的頁面實(shí)現(xiàn)的;
??????在單頁面應(yīng)用中筝野,只有一個(gè)頁面晌姚,其它頁面都是模擬出來的,并非實(shí)實(shí)在在存在的歇竟,所有的路由都需要前端自己來構(gòu)建挥唠,所以引入前端路由;

二焕议、什么時(shí)候使用前端路由

??????在單頁面應(yīng)用中宝磨,大部分頁面結(jié)構(gòu)不變,只改變部分內(nèi)容的使用盅安;

三唤锉、前端路由有什么優(yōu)點(diǎn)和缺點(diǎn)?

??????優(yōu)點(diǎn):用戶體驗(yàn)好别瞭,不需要每次都從服務(wù)器全部獲取窿祥,快速展現(xiàn)給用戶;
??????缺點(diǎn):不利于SEO蝙寨;
?????????????????使用瀏覽器的前進(jìn)晒衩,后退鍵的時(shí)候嗤瞎,后退鍵的時(shí)候會(huì)重新發(fā)送請(qǐng)求,沒有合理地利用緩存浸遗;
?????????????????單頁面無法記住之前滾動(dòng)的位置猫胁,無法在前進(jìn),后退的時(shí)候記住滾動(dòng)的位置跛锌;

四弃秆、vue-router用來構(gòu)建SPA
<router-link></router-link>   // 或者this.$router.push({path:}
<router-view></router-view> // 路由被放置的地方
五、動(dòng)態(tài)路由匹配
/user/:username/post/:post_id  // 模式
/user/evan/post/123 // 匹配路徑
{username:'evan',post_id:123} // $route.params
// 動(dòng)態(tài)路由的具體寫法髓帽,路由文件中
{
   path: '/device/control_auth/:cert',
   component: controlAuth,
   meta: {
      title: '中控鑒權(quán)'
  }
 },
// js中data部分的寫法
cert: this.$route.params.cert,
// 路徑的寫法
./ // 當(dāng)前目錄
../ // 上級(jí)目錄
// 另外一種路由寫法
{ // 路由中的寫法
    path: '/coupon/promotion',
    component: receiveCoupon,
    meta: {
       title: '領(lǐng)取優(yōu)惠券'
  }
}
// js中data部分的寫法
publicityCode: this.$route.query.publicityCode  

原理:對(duì)BOM對(duì)象的history進(jìn)行了封裝

history.go(1) // 前往下一個(gè)頁面
history.go(-1) // 前往上一個(gè)頁面
history.pushState("desc",“test”,"/admin") // 第一個(gè)參數(shù)為頁面的描述菠赚,第二個(gè)為頁面的標(biāo)題,第三個(gè)為頁面的地址

路由模式:mode

mode:'history' // 使用url的方式加載地址信息
mode:'hash'  // 默認(rèn)使用哈希方法郑藏,地址欄有#號(hào)
六衡查、嵌套路由
// 路由文件中
routes: [{
    path: '/goods', // 父路由
    name: 'GoodsList',
    component: GoodsList,
    children: [{ // 子路由
      path: '/title',
      name: 'title',
      component: Title
    },
    {
      path: '/img',
      name: 'img',
      component: Image
    }]
  }]

// 同時(shí)需要在父文件相關(guān)位置定義router-link和router-view
<div>
  這是一個(gè)頁面
  <router-link to="/title">顯示商品標(biāo)題</router-link>
  <router-link to="/img">顯示商品圖片</router-link>
  <div>
    <router-view></router-view>
  </div>
</div>
七、編程式路由

通過js來實(shí)現(xiàn)頁面的跳轉(zhuǎn):
1)$router.push("name")
2)$router.push({path:"name"})
3)$router.push({path:"name?a=123})
或者$router.push({path:"name",query:{a:123}})
4)$router.go(1)

// 四種編程式路由
<button @click="jump">button - 跳轉(zhuǎn)到購物車頁面</button>
jump() {
  this.$router.push('/cart')
  this.$router.push({path: '/cart'})
  this.$router.push({path: '/cart?goodsId=123'})
  this.$router.go(-2)
}
// 獲取goodsId
<div class="">
  我是購物車組件
  <span>{{ $route.query.goodsId }}</span>
</div>
八必盖、命名路由和命名視圖

1)命名路由:給路由定義不同的名字拌牲,根據(jù)名字進(jìn)行匹配

// 路由寫法
{
    path: '/cart/:cartId',
    name: 'cart', // 此處必須有
    component: Cart
  }

// html寫法
<div>
  <router-link :to="{name:'cart',params:{cartId:123}}">跳轉(zhuǎn)到購物車頁面</router-link>
</div>

2)命名視圖:給不同的router-view定義名字,通過名字進(jìn)行對(duì)應(yīng)組件的渲染

// App文件中
<div id="app">
  <router-view class="main"></router-view>
  <router-view class="left" name="title"></router-view>
  <router-view class="right" name="img"></router-view>
</div>

// css文件
.left,.right
  float left
  width 49%
  border 1px solid gray
// router文件
routes: [{
      path: '/',
      name: 'GoodsList',
      components: {
        default: GoodsList,
        title: Title,
        img: Image
      }
    },
    {
      path: '/cart/:cartId',
      name: 'cart',
      component: Cart
    }]

顯示結(jié)果:


屏幕快照 2018-07-23 下午10.44.49.png
九歌粥、動(dòng)態(tài)向url傳遞參數(shù)
// 動(dòng)態(tài)向url傳遞
getCoachList() {
    return new Promise((resolve, reject) => { 
        let occupationType = ''
        if(this.occupationType != 'all'){
          occupationType += `?occupationType=${this.occupationType}`
        }
        this.$axios.get(`${api_host}/lego/manage/coach/arrangement/overview${occupationType}`).then(res => {
          let data = res.data.data
          this.arrangementStatuses = data.arrangementStatuses
          this.manageDayArrangements = data.manageDayArrangements
          this.weekStartDate = moment(data.weekStartDate)
          this.arrangementStatuses.forEach(() => {
            this.isHighlighted.push(false)
          })
          // console.log(this.isHighlighted)
          resolve(resolve)
        }).catch(err => {
          reject(err)
        })
   })
}
十塌忽、dependencies和devDependencies

dependencies // 上線時(shí)要使用的依賴
devDependencies // 開發(fā)時(shí)使用的依賴

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市失驶,隨后出現(xiàn)的幾起案子土居,更是在濱河造成了極大的恐慌,老刑警劉巖嬉探,帶你破解...
    沈念sama閱讀 206,602評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件擦耀,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡涩堤,警方通過查閱死者的電腦和手機(jī)眷蜓,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來胎围,“玉大人账磺,你說我怎么就攤上這事∪叮” “怎么了垮抗?”我有些...
    開封第一講書人閱讀 152,878評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長碧聪。 經(jīng)常有香客問我冒版,道長,這世上最難降的妖魔是什么逞姿? 我笑而不...
    開封第一講書人閱讀 55,306評(píng)論 1 279
  • 正文 為了忘掉前任辞嗡,我火速辦了婚禮捆等,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘续室。我一直安慰自己栋烤,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,330評(píng)論 5 373
  • 文/花漫 我一把揭開白布挺狰。 她就那樣靜靜地躺著明郭,像睡著了一般。 火紅的嫁衣襯著肌膚如雪丰泊。 梳的紋絲不亂的頭發(fā)上薯定,一...
    開封第一講書人閱讀 49,071評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音瞳购,去河邊找鬼话侄。 笑死,一個(gè)胖子當(dāng)著我的面吹牛学赛,可吹牛的內(nèi)容都是我干的年堆。 我是一名探鬼主播,決...
    沈念sama閱讀 38,382評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼盏浇,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼嘀韧!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起缠捌,我...
    開封第一講書人閱讀 37,006評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎译蒂,沒想到半個(gè)月后曼月,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,512評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡柔昼,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,965評(píng)論 2 325
  • 正文 我和宋清朗相戀三年哑芹,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片捕透。...
    茶點(diǎn)故事閱讀 38,094評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡聪姿,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出乙嘀,到底是詐尸還是另有隱情末购,我是刑警寧澤,帶...
    沈念sama閱讀 33,732評(píng)論 4 323
  • 正文 年R本政府宣布虎谢,位于F島的核電站盟榴,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏婴噩。R本人自食惡果不足惜擎场,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,283評(píng)論 3 307
  • 文/蒙蒙 一羽德、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧迅办,春花似錦宅静、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,286評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至镊绪,卻和暖如春匀伏,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蝴韭。 一陣腳步聲響...
    開封第一講書人閱讀 31,512評(píng)論 1 262
  • 我被黑心中介騙來泰國打工够颠, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人榄鉴。 一個(gè)月前我還...
    沈念sama閱讀 45,536評(píng)論 2 354
  • 正文 我出身青樓履磨,卻偏偏與公主長得像,于是被迫代替她去往敵國和親庆尘。 傳聞我的和親對(duì)象是個(gè)殘疾皇子剃诅,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,828評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • 學(xué)習(xí)目的 學(xué)習(xí)Vue的必備技能,必須 熟練使用 Vue-router驶忌,能夠在實(shí)際項(xiàng)目中運(yùn)用矛辕。 Vue-rout...
    _1633_閱讀 91,685評(píng)論 3 58
  • vue-router學(xué)習(xí)筆記 安裝 并且如果在一個(gè)模塊化工程中使用它,必須要通過Vue.use()明確地安裝路由功...
    EL_PSY_CONGROO閱讀 571評(píng)論 0 0
  • 安裝vue-router npm install vue-router --save-dev 路由配置文件src/...
    defer閱讀 602評(píng)論 0 1
  • 動(dòng)態(tài)路由參數(shù)付魔,以冒號(hào)開頭配置聊品,瀏覽器中的路徑不需要加冒號(hào),類似于正則表達(dá)式對(duì)一個(gè)簡單字符串的匹配 匹配的優(yōu)先級(jí)就按...
    老邵閱讀 484評(píng)論 0 0
  • 初學(xué)vue2.0几苍,作為一個(gè)偏向于three.js的前端來說翻屈,深刻的感受到了vue的魅力。本文將持續(xù)追蹤本人學(xué)習(xí)vu...
    ANoman_M閱讀 405評(píng)論 0 0