關(guān)于vue--路由(公眾號(hào)開發(fā)總結(jié))

關(guān)于路由

在router.js中引入vue和vue-router

import Vue from 'vue'
import Router from 'vue-router'
Vue.use(Router)
路由模式

前端路由就是一個(gè)前端不同頁面的狀態(tài)管理器,可以不向后臺(tái)發(fā)送請(qǐng)求而直接通過前端技術(shù)實(shí)現(xiàn)多個(gè)頁面的效果。angularjs中的ui-router,vue中的vue-router,以及react的react-router均是對(duì)這種功能的具體實(shí)現(xiàn)遥金。

  • hash模式:vue-router中默認(rèn)使用的是hash模式恶座,這樣子瀏覽器的url上會(huì)出現(xiàn)#號(hào):localhost:8080/#/
    這種模式可以在window上監(jiān)聽這個(gè)事件:onhashchange,因?yàn)閔ash發(fā)生變化的url都會(huì)被瀏覽器記錄下來您机,所以瀏覽器的前進(jìn)后退鍵都可以是用加酵,這時(shí)候?yàn)g覽器是沒有請(qǐng)求服務(wù)器的因痛。
window.onhashchange = function(event){
    console.log(event.oldUrl, event.newUrl);
}
  • history模式:history模式是指使用HTML5的historyAPI實(shí)現(xiàn)客戶端路由的模式饮醇,onhashchange只能改變#后買你的url毕源,而history可以切換跟修改浪漠。
    1.切換歷史狀態(tài)(go、back霎褐、forward)
 history.go(-2);
 history.back();
 history.forward();

2.修改歷史狀態(tài)

history.pushState(data[,title][,url]);//向歷史記錄中追加一條記錄
history.replaceState(data[,title][,url]);//替換當(dāng)前頁在歷史記錄中的信息址愿。
history.state;//是一個(gè)屬性,可以得到當(dāng)前頁的state信息冻璃。
window.onpopstate;//是一個(gè)事件响谓,在點(diǎn)擊瀏覽器后退按鈕或js調(diào)用forward()损合、back()、go()時(shí)觸發(fā)娘纷。監(jiān)聽函數(shù)中可傳入一個(gè)event對(duì)象嫁审,event.state即為通過pushState()或replaceState()方法傳入的data參數(shù)
定義路由
  • 3種路由方式
1、懶加載
var router = new Router({
 mode: 'hash',
 base: process.env.BASE_URL,
 routes: [
   {
     path: '/',
     name: 'login',
     component: resolve => require(['./pages/login.vue'], resolve),
   },
   {
     path: '/register',
     name: 'register',
     component: resolve => require(['./pages/register.vue'], resolve),
   },
})
2赖晶、
routes: [
        {
         path:'/transfer/:id?',
         name:'transfer',
         component:()=>import('@/components/riches/transfer')律适,
         meta:{requireAuth:true}
       },
 ]
參數(shù)后面加?代表可傳可不傳的參數(shù)
3、普通方式
routes: [
       {path: '/home ',name: 'home ',component: home ,meta: {title: 'home',requireAuth:true}},
       {path: '/about ',name: 'about ',component: about ,meta: {title: '關(guān)于',requireAuth:true}},
   ]
  • 嵌套路由
routes: [{
            path: '/',
            component: () => import( /* webpackChunkName: "home" */ './pages/home.vue'),
            children: [{
                    path: "",
                    alias: "homepage",//別名
                    component: () => import( /* webpackChunkName: "home" */ './pages/homepage.vue'),
                    meta: {
                        group: "homepage",
                        title: "首頁",
                    }
                }]
           }]   
路由跳轉(zhuǎn)
  • router-link跳轉(zhuǎn)
<router-link to="home">首頁</router-link>
  • this.$router.push()
// 路徑
this.$router.push("/home");
// 路由名字
this.$router.push({
    name: 'home',// 用params時(shí)只能用name引入
    params:{
      name:'id'
    }
})
用params時(shí)讀取參數(shù):this.$router.params.id遏插,在地址欄上看不到請(qǐng)求參數(shù)擦耀,頁面刷新時(shí)有可能丟失請(qǐng)求數(shù)據(jù)
  • this.$router.replace()
this.$router.replace({
    name: 'home',// 用replace時(shí)可以用name或者path引入
    query:{
      name:'id'
    }
})
用query時(shí)讀取參數(shù):this.$router.query.id,在地址欄可以看到請(qǐng)求參數(shù)
路由守衛(wèi)

三個(gè)參數(shù):to(將要去的路由),from(出發(fā)的路由),next(執(zhí)行下一步)

  • 全局守衛(wèi):
    1涩堤、router.beforeEach((to,from,next)=>{})
    2眷蜓、router.afterEach((to,from)=>{})
// 比如寫在main.js中
router.beforeEach((to,from,next)=>{
  if(to.path == '/login' || to.path == '/register'){
    next();
  }else{
    alert('請(qǐng)登錄');
    next('/login');
  }
})
  • 組件內(nèi)守衛(wèi):
    1、beforeRouteEnter:(to,from,next)=>{//不可以訪問this}
    2胎围、beforeRouteUpdate:(to,from,next)=>{//可以訪問this}
    3吁系、beforeRouteLeave:(to,from,next)=>{//可以訪問this}
export default {
    data(){
        return{
            name:"Arya"
        }
    },
    beforeRouteEnter:(to,from,next)=>{
        next(vm=>{
            // 如果要訪問this ,必須通過 next(vm=>{})訪問,因?yàn)榻M件此時(shí)沒有創(chuàng)建,所以沒有this
            alert(vm.name+',歡迎登錄')
        })
    }
}
  • 路由獨(dú)享的守衛(wèi):beforeEnter:(to,from,next)=>{}
var router = new Router({
  mode: 'hash',
  base: process.env.BASE_URL,
  routes: [
    {
      path: '/home',
      name: 'home',
      component: resolve => require(['./pages/home.vue'], resolve),
      beforeEnter: (to, from, next) => {
          let id = window.localStorage.getItem("id")
          if (id) {
            next()
          } else {
            next({ name: "login" })
          }
      },
    }]
})
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末白魂,一起剝皮案震驚了整個(gè)濱河市汽纤,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌福荸,老刑警劉巖蕴坪,帶你破解...
    沈念sama閱讀 211,265評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異敬锐,居然都是意外死亡背传,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門台夺,熙熙樓的掌柜王于貴愁眉苦臉地迎上來径玖,“玉大人,你說我怎么就攤上這事颤介∈嵝牵” “怎么了?”我有些...
    開封第一講書人閱讀 156,852評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵滚朵,是天一觀的道長(zhǎng)冤灾。 經(jīng)常有香客問我,道長(zhǎng)辕近,這世上最難降的妖魔是什么韵吨? 我笑而不...
    開封第一講書人閱讀 56,408評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮亏推,結(jié)果婚禮上学赛,老公的妹妹穿的比我還像新娘年堆。我一直安慰自己,他們只是感情好盏浇,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,445評(píng)論 5 384
  • 文/花漫 我一把揭開白布变丧。 她就那樣靜靜地躺著,像睡著了一般绢掰。 火紅的嫁衣襯著肌膚如雪痒蓬。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,772評(píng)論 1 290
  • 那天滴劲,我揣著相機(jī)與錄音攻晒,去河邊找鬼。 笑死班挖,一個(gè)胖子當(dāng)著我的面吹牛鲁捏,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播萧芙,決...
    沈念sama閱讀 38,921評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼给梅,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了双揪?” 一聲冷哼從身側(cè)響起动羽,我...
    開封第一講書人閱讀 37,688評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎渔期,沒想到半個(gè)月后运吓,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,130評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡疯趟,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,467評(píng)論 2 325
  • 正文 我和宋清朗相戀三年拘哨,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片迅办。...
    茶點(diǎn)故事閱讀 38,617評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡宅静,死狀恐怖章蚣,靈堂內(nèi)的尸體忽然破棺而出站欺,到底是詐尸還是另有隱情,我是刑警寧澤纤垂,帶...
    沈念sama閱讀 34,276評(píng)論 4 329
  • 正文 年R本政府宣布矾策,位于F島的核電站,受9級(jí)特大地震影響峭沦,放射性物質(zhì)發(fā)生泄漏贾虽。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,882評(píng)論 3 312
  • 文/蒙蒙 一吼鱼、第九天 我趴在偏房一處隱蔽的房頂上張望蓬豁。 院中可真熱鬧绰咽,春花似錦、人聲如沸地粪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蟆技。三九已至玩敏,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間质礼,已是汗流浹背旺聚。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評(píng)論 1 265
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留眶蕉,地道東北人砰粹。 一個(gè)月前我還...
    沈念sama閱讀 46,315評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像造挽,于是被迫代替她去往敵國(guó)和親伸眶。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,486評(píng)論 2 348

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

  • SPA單頁應(yīng)用 傳統(tǒng)的項(xiàng)目大多使用多頁面結(jié)構(gòu)嘴秸,需要切換內(nèi)容的時(shí)候我們往往會(huì)進(jìn)行單個(gè)html文件的跳轉(zhuǎn),這個(gè)時(shí)候受網(wǎng)...
    視覺派Pie閱讀 11,816評(píng)論 1 55
  • Vue八個(gè)生命周期 beforeCreate【創(chuàng)建前】created【創(chuàng)建后】 beforeMount【載入前】 ...
    艾薩克菊花閱讀 1,307評(píng)論 0 12
  • 學(xué)習(xí)目的 學(xué)習(xí)Vue的必備技能庇谆,必須 熟練使用 Vue-router岳掐,能夠在實(shí)際項(xiàng)目中運(yùn)用。 Vue-rout...
    _1633_閱讀 91,868評(píng)論 3 58
  • 前言 在上篇中主要敘述了 vue-router 的注冊(cè)和實(shí)例化過程饭耳,以及如何生成 $router, $route ...
    心_c2a2閱讀 927評(píng)論 0 1
  • 回憶: 我們知道串述,h5的history或者h(yuǎn)ash幫助我們解決了,變化url跳轉(zhuǎn)頁面不發(fā)送請(qǐng)求寞肖,并且我們能監(jiān)聽到u...
    LoveBugs_King閱讀 3,636評(píng)論 0 5