vue-cli工具-路由傳參&路由進(jìn)階&路由緩存

一、路由傳參

1、 params 參數(shù)

路由配置

{
    path:'/index',
    // 重定向到指定的路由
    redirect:'/'
},
{
    // 注意:這里的路由需要傳一個(gè)參數(shù)净宵,路由可以傳多個(gè)參數(shù)
    path:'/city/:id',
    // 設(shè)置該選項(xiàng)為true孟害,組件可以通過props選項(xiàng)接收路由參數(shù)
    props:true,
    component:City
},
// *號拒炎,表示匹配不上的所有路由
{
    path:'*',
    component:Error404
}

頁面

<li @click="$router.push(`/city/${item.id}`)" v-for="(item,index) in citys" :key="index">{{item.name}}</li>
// 使用props選項(xiàng)接收路由參數(shù)
props:["id"],
created() {
    // $route返回的是當(dāng)前路由信息,它身上有一個(gè)params屬性挨务,該屬性里面保存的是當(dāng)前路由信息的參數(shù)击你。
    // console.log(this.$route);
    // console.log(this.$route.params.id);
    // 從路由參數(shù)中獲取城市編號
    // let cityId = this.$route.params.id
    // 再根據(jù)城市編號,獲取對應(yīng)的城市信息
    // this.city = this.citys.find(c=>c.id==cityId)
    this.city = this.citys.find(c=>c.id==this.id)
},

v-html指令

<!-- 所有由ref修飾的組件或標(biāo)簽耘子,都會保存到$refs中 -->
<!-- <div ref="content"></div> -->
<!-- v-html指令果漾,用于渲染html內(nèi)容 -->
<div v-html="city.content"></div>
<!-- v-text指令,用于渲染文本內(nèi)容 -->
<!-- <div v-text="city.content"></div> -->
mounted() {
    this.$refs.content.innerHTML = this.city.content
},

2谷誓、query參數(shù)

<!-- 路由地址绒障,采用query傳參方式:?參數(shù)1=XXX&參數(shù)2=XXX... -->
<li @click="$router.push(`/type?id=${item.id}`)" 
    v-for="(item,index) in types" :key="index">{{item.name}}</li>
created() {
    // 通過$route.query獲取路由地址?后面的參數(shù) 
    // console.log(this.$route.query);
    this.type = this.types.find(t=>t.id==this.$route.query.id)
}

3、router 和router和route

// $router返回的是當(dāng)前項(xiàng)目中的路由器對象  
// $route返回的是當(dāng)前路由信息
// 判斷當(dāng)前路由信息捍歪,不是/news户辱,添加到/news
if(this.$route.path != '/news'){
    this.$router.push('/news')
}

4、 vue.config.js

// 引入nodejs內(nèi)置模塊path
let path = require('path')
// 注意:該配置文件中糙臼,只能使用commonjs模塊化語法
module.exports = {
    // 關(guān)閉 eslint-loader 語法檢查
    lintOnSave:false,
    // 配置devServer開發(fā)服務(wù)器
    devServer:{
        // 端口號
        port: 5566,
        // 自動打開
        open:true,
        // 靜態(tài)資源路徑
        // 注意:__dirname是nodejs的內(nèi)置變量庐镐,返回的是的當(dāng)前項(xiàng)目的絕對路徑
        contentBase: path.join(__dirname, "static")
    },
    // 用于配置原生的Webpack配置
    configureWebpack:{
        // 解析
        resolve:{
            // 定義路徑別名
            alias:{
                "@c":path.resolve(__dirname,'src/components'),
                "@p":path.resolve(__dirname,'src/pages'),
                "@a":path.resolve(__dirname,'src/apis'),
                "@u":path.resolve(__dirname,'src/utils'),
            }
        }
    }
}

二、路由進(jìn)階

1变逃、路由模式

// 路由模式
// 有兩種模式:hash模式(默認(rèn)) 和 history模式
// hash模式必逆,使用的是錨鏈接的原理實(shí)現(xiàn)路由的跳轉(zhuǎn),這種方式兼容性非常好;缺點(diǎn)是路徑帶有#號名眉,不夠美觀粟矿。
// history模式,使用的是瀏覽器中內(nèi)置的history對象實(shí)現(xiàn)路由的跳轉(zhuǎn)损拢,這種方式不兼容老版本的瀏覽器陌粹,刷新后會丟失路由信息。
mode:'hash'

2福压、路由元信息

{
    path:'/',
    name:'home',
    // meta選項(xiàng)掏秩,用于配置路由的元信息,里面的內(nèi)容是自定義的荆姆,用于配置路由的數(shù)據(jù)
    meta:{
        title:'首頁'
    },
    // 路由組件懶加載
    component:()=>import('../pages/Home.vue'),
}

3蒙幻、 nprogress加載進(jìn)度條

安裝

      npm install nprogress

導(dǎo)入

// 導(dǎo)入nprogress
import NProgress from "nprogress";
// 導(dǎo)入nprogress的樣式
import "nprogress/nprogress.css";

在導(dǎo)航守衛(wèi)中使用

// 導(dǎo)航守衛(wèi)
// 1.路由前置守衛(wèi)--路由跳轉(zhuǎn)之前
router.beforeEach((to, from, next) => {
  // to 返回去哪里的路由信息
  // from 返回從哪來的路由信息
  // next方法,用于跳轉(zhuǎn)

  // 開啟loading
  NProgress.start();

  // 通常:在這里會做一些權(quán)限驗(yàn)證操作
  next();
});

// 2.路由后置守衛(wèi)--路由跳轉(zhuǎn)完成
router.afterEach((to, from) => {
  // 通常:在這里會做一些頁面的修改操作
  document.title = to.meta.title;

  // 結(jié)束loading
  NProgress.done();
});

4胞枕、二級路由

//配置子路由信息
children:[
    //手機(jī)訂單路由
    {
        path:'phoneOrder',
        name:'phoneOrder',
        meta:{
            title:'手機(jī)訂單'
        },
        component:()=>import(/* webpackChunkName: "b" */'../pages/Order/PhoneOrder.vue')
    }
]

5杆煞、路由懶加載

// 路由組件懶加載
component:()=>import('../pages/Home.vue')

6、路由分組懶加載

// 路由組件分組懶加載
component:()=>import(/* webpackChunkName: "a" */'../pages/News.vue')

7腐泻、scoped

scoped屬性决乎,用于設(shè)置局部樣式,當(dāng)前組件中的樣式只對當(dāng)前組件生效

<style scoped>
    ....
</style>

8派桩、sass

安裝

     npm install sass sass-loader@8 -D

使用

<style scoped lang="scss">
    // lang="scss" 就表示下面的樣式采用的sass語法編寫构诚。
    // 定義變量
    $c1:darksalmon;
    $c2:cornflowerblue;
    // 定義嵌套樣式
    .main{
        border: 1px solid black;
        margin-top: 10px;
        padding: 5px;
        h2{
            color: $c2;
        }
        .one{
            border: 1px dashed darkgreen;
            padding: 5px;
            h2{
                color: $c1;
                //&符號表示當(dāng)前元素
                &.first{
                    font-size: 40px;
                }
            }
        }
    }
</style>

9、lass

安裝

npm install lass@3 lass-loader@7 -D

使用

<style scoped lang='less'>
//注意:在less里面定義變量的符號是@
@red:skyblue;
.one {
  border: 1px solid black;
  padding: 5px;
  h2 {
    color: black;
  }
  h3 {
    color: @red;
  }
  p {
    color: @red;
  }
  .province {
    color: blueviolet;
    font-size: 30px;
    .city {
      color: brown;
      font-size: 25px;
      .district {
        color: burlywood;
        font-size: 20px;
        .street {
          color: cornflowerblue;
          font-size: 15px;
        }
      }
    }
  }
}
</style>

三铆惑、路由緩存

1范嘱、keep-alive組件

<!-- keep-alive用于緩存路由組件,默認(rèn)情況下會緩存打開的所有組件员魏,
如果需要指定緩存哪些組件丑蛤,通過include屬性指定。 -->
<keep-alive :include="['newsGn','newsGj']">
    <router-view></router-view> 
</keep-alive>

2撕阎、路由組件特有的兩個(gè)生命周期

// 路由組件激活狀態(tài)生命周期函數(shù)
activated() {
    // 開啟定時(shí)器
    this.timer = setInterval(() => {
        this.count++
    }, 1000);
},
// 路由組件失活狀態(tài)生命周期函數(shù)
deactivated() {
    clearInterval(this.timer)
},
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末受裹,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子虏束,更是在濱河造成了極大的恐慌棉饶,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,807評論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件镇匀,死亡現(xiàn)場離奇詭異照藻,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)汗侵,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,284評論 3 399
  • 文/潘曉璐 我一進(jìn)店門幸缕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來群发,“玉大人,你說我怎么就攤上這事发乔∫参铮” “怎么了?”我有些...
    開封第一講書人閱讀 169,589評論 0 363
  • 文/不壞的土叔 我叫張陵列疗,是天一觀的道長。 經(jīng)常有香客問我浪蹂,道長抵栈,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,188評論 1 300
  • 正文 為了忘掉前任坤次,我火速辦了婚禮古劲,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘缰猴。我一直安慰自己产艾,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,185評論 6 398
  • 文/花漫 我一把揭開白布滑绒。 她就那樣靜靜地躺著闷堡,像睡著了一般。 火紅的嫁衣襯著肌膚如雪疑故。 梳的紋絲不亂的頭發(fā)上杠览,一...
    開封第一講書人閱讀 52,785評論 1 314
  • 那天,我揣著相機(jī)與錄音纵势,去河邊找鬼踱阿。 笑死,一個(gè)胖子當(dāng)著我的面吹牛钦铁,可吹牛的內(nèi)容都是我干的软舌。 我是一名探鬼主播,決...
    沈念sama閱讀 41,220評論 3 423
  • 文/蒼蘭香墨 我猛地睜開眼牛曹,長吁一口氣:“原來是場噩夢啊……” “哼佛点!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起躏仇,我...
    開封第一講書人閱讀 40,167評論 0 277
  • 序言:老撾萬榮一對情侶失蹤恋脚,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后焰手,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體糟描,經(jīng)...
    沈念sama閱讀 46,698評論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,767評論 3 343
  • 正文 我和宋清朗相戀三年书妻,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了船响。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片躬拢。...
    茶點(diǎn)故事閱讀 40,912評論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖见间,靈堂內(nèi)的尸體忽然破棺而出聊闯,到底是詐尸還是另有隱情,我是刑警寧澤米诉,帶...
    沈念sama閱讀 36,572評論 5 351
  • 正文 年R本政府宣布菱蔬,位于F島的核電站,受9級特大地震影響史侣,放射性物質(zhì)發(fā)生泄漏拴泌。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,254評論 3 336
  • 文/蒙蒙 一惊橱、第九天 我趴在偏房一處隱蔽的房頂上張望蚪腐。 院中可真熱鬧,春花似錦税朴、人聲如沸回季。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,746評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽泡一。三九已至,卻和暖如春卓囚,著一層夾襖步出監(jiān)牢的瞬間瘾杭,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,859評論 1 274
  • 我被黑心中介騙來泰國打工哪亿, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留粥烁,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,359評論 3 379
  • 正文 我出身青樓蝇棉,卻偏偏與公主長得像讨阻,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子篡殷,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,922評論 2 361

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