vue學(xué)習(xí)筆記(二)

6.Vue路由基礎(chǔ)

不同的路由對應(yīng)不同的內(nèi)容或者頁面的任務(wù)邪铲,分配給前端使用

6.1 動態(tài)路由匹配

6.1.1 單個參數(shù)

第一步:修改router目錄下index.js文件

import Vue from 'vue'
import Router from 'vue-router'
import VideoList from '@/components/VideoList'

Vue.use(Router)

export default new Router({
  routes: [
    {
      path: '/video/:videoId', #路由對應(yīng)地址
      name: 'VideoList', #路由名稱
      component: VideoList #路由執(zhí)行的代碼
    }
  ]
})

第二步:修改commonents目錄下路由對應(yīng)的文件VideoList.vue
route.params.videoId 獲取path中的動態(tài)內(nèi)容亚侠,與router/index.js保持一致

<template>
    <div>
        <h4>這是視頻列表頁面</h4>
        <span>{{ $route.params.videoId }}</span>
    </div>
</template>
<script>
export default {
    data(){
        return{
            msg:''
        }
    }
}
</script>

6.1.2 多個參數(shù)

第一步:修改router目錄下index.js文件

import Vue from 'vue'
import Router from 'vue-router'
import VideoList from '@/components/VideoList'

Vue.use(Router)

export default new Router({
  routes: [
    {
      path: '/video/:videoId/user/:userId', #路由地址立宜,其中videoId為視頻id,userId為用戶id
      name: 'VideoList', #路由名稱
      component: VideoList #路由執(zhí)行的代碼
    }
  ]
})

第二步:修改commonents目錄下路由對應(yīng)的文件VideoList.vue
route.params.videoId曹鸠、route.params.userId 獲取path中的動態(tài)內(nèi)容躏碳,與router/index.js保持一致

<template>
    <div>
        <h4>這是視頻列表頁面</h4>
        <span>{{ $route.params.videoId }}</span>
        <span>{{ $route.params.userId }}</span>
    </div>
</template>
<script>
export default {
    data(){
        return{
            msg:''
        }
    }
}
</script>

6.2嵌套路由

6.2.1 什么是嵌套路由

路由嵌套路由

6.2.2 怎么實現(xiàn)嵌套路由

知識點總結(jié):

  1. routes中的children
    路由配置路徑為src/router/index.js显熏,每個路由都可以配置自己的子路由,children中每個子路由都包括path/name/component三個字段俐芯,如下:
routes: [
    {
      path: '/video',
      name: 'VideoList',
      component: VideoList,
      children:[
        {
          path:'title',
          name:'title',
          component:Title
        },
        {
          path:'image',
          name:'image',
          component:Image
        }
      ]
    }
  ]
  1. router-link和router-view使用
    router-link:路由跳轉(zhuǎn)的鏈接棵介。有一個主要的參數(shù)就是to,并且必須是子組件的絕對地址吧史。
    router-view:自動裝載子組件內(nèi)容
<router-link to="/video/title">顯示商品標(biāo)題</router-link>
<router-link to="/video/image">顯示商品圖片</router-link>
<div>
    <router-view></router-view>
</div>

詳細(xì)源代碼

#  src/components/VideoList.vue
<template>
    <div>
        <h4>這是視頻列表頁面</h4>
        <router-link to="/video/title">顯示商品標(biāo)題</router-link>
        <router-link to="/video/image">顯示商品圖片</router-link>
        <div>
            <router-view></router-view>
        </div>
    </div>
</template>
<script>
export default {
    data(){
        return{
            msg:''
        }
    }
}
</script>
#src/components/VideoTitle.vue
<template>
    <div>
        這里是視頻標(biāo)題的子組件
    </div>
</template>
<script>
export default {
    data(){
        return{
            msg:"hello VideoTitle!"
        }
    }
}
</script>
#/src/components/VideoImage.vue
<template>
    <div>
        這里是視頻圖片的子組件
    </div>
</template>
<script>
export default {
    data(){
        return{
            msg:"hello VideoImage!"
        }
    }
}
</script>
 # src/router/index.js
import Vue from 'vue'
import Router from 'vue-router'
import VideoList from '@/components/VideoList'
import Title from '@/components/VideoTitle'
import Image from '@/components/VideoImage'
Vue.use(Router)

export default new Router({
  mode:'history',
  routes: [
    {
      path: '/video',
      name: 'VideoList',
      component: VideoList,
      children:[
        {
          path:'title',
          name:'title',
          component:Title
        },
        {
          path:'image',
          name:'image',
          component:Image
        }
      ]
    }
  ]
})

6.3 編程式路由

6.3.1 什么是編程式路由

通過js來實現(xiàn)頁面的跳轉(zhuǎn)
實現(xià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) 1代表前進(jìn)一步邮辽,如果改成-1,則代表后退1步

6.4 命名路由和命名視圖

7. element-UI使用

7.1 element-ui安裝

npm install -g element-ui --save

7.2 element-ui導(dǎo)入

import ElementUI from 'element-ui'
Vue.use(ElementUI )

7.3 element-ui使用

參考
https://element.eleme.cn/#/zh-CN/component/installation

8. vue-resource和axios

8.1vue-resource

8.1.1 vue-resource安裝

cnpm i vue-resource --save

8.1.2 vue-resource常用API方法

  • get(url, [options])
  • head(url, [options])
  • jsonp(url, [options])
  • delete(url, [options])
  • post(url, body, [options])
  • put(url, body, [options])
  • patch(url, body, [options])

7.1.3 vue-resource導(dǎo)入

import VueResource from 'vue-resource'
Vue.use(VueResource)

8.1.4 vue-resource實例

<template>
    <div class="hello">
        <h1>Vue-resource插件測試</h1>
        <el-button type="primary" v-on:click="get">Get請求</el-button>
        <el-button type="success" v-on:click="post">Post請求</el-button>
        <el-button type="danger" @click="jsonp">Jsonp請求</el-button>
        <div>
            <h2>{{ msg }}</h2>
        </div>
    </div>
</template>
<script>
export default {
    name:'hello',
    data(){
        return {
            msg: ""
        }
    },
    methods:{
        get:function(){
           this.$http.get('package.json',{
               params:{
                   userId:'101'
               },
               headers:{
                   token:'abcd'
               }
           }).then(res=>{
               this.msg = res.data
           },error=>{
               this.msg = error
           }) 
        },
        post:function(){
            this.$http.post('package.json',{
                userId:'101'
            },{
                headers:{
                    token:'sdasd135656544'
                }
            }).then(res=>{
                this.msg = res.data
            },error=>{
                this.msg = error
            })
        },
        jsonp:function(){
            this.$http.jsonp("http://wthrcdn.etouch.cn/weather_mini?citykey=101070101").then(res=>{
                this.msg = res.data
            },error=>{
                this.msg = error
            })
        }
    }
}
</script>

8.2 axios

8.2.1 axios安裝

cnpm i axis --save

8.2.2 axios常用API方法

  • axios.request(config)
  • axios.get(url[,config])
  • axios.delete(url[,config])
  • axios.head(url[,config])
  • axios.options(url[,config])
  • axios.post(url[,data[,config]])
  • axios.put(url[,data[,config]])
  • axios.patch(url[,data[,config]])

8.2.3 axios導(dǎo)入

import axios from 'axios'
Vue.prototype.$axios = axios

8.2.4 axios事例

<template>
    <div class="app">
        <h1>axios插件測試</h1>
        <el-button type="primary" v-on:click="get">Get請求</el-button>
        <el-button type="success" v-on:click="post">Post請求</el-button>
        <el-button type="danger" @click="http">Http請求</el-button>
        <div>
            <h2>{{ msg }}</h2>
        </div>
    </div>
</template>
<script>
export default {
    data(){
      return {
          msg:''
      }  
    },
    methods:{
        get:function(){
            this.$axios.get("http://wthrcdn.etouch.cn/weather_mini",{
                params:{
                    citykey:'101070101'
                },
                headers:{
                    token:'wqeq2123'
                }
            }).then(res=>{
                this.msg = res.data
            }).catch(error=>{
                this.msg = error
            })
        },
        post:function(){
            this.$axios.post("package.json",{
                userId:"102"
            },{
                headers:{
                    token:"asdsadf"
                }
            }).then(res=>{
                this.msg = res.data
            }).catch(error=>{
                this.msg = error
            })
        },
        http:function(){
            this.$axios({
                url:"http://wthrcdn.etouch.cn/weather_mini",
                method:"get",
                params:{
                    citykey:'101070101'
                },
                headers:{
                    token:"eqewqewqe"
                }
            }).then(res=>{
                this.msg = res.data
            }).catch(error=>{
                this.msg = error
            })
        }
    }
}
</script>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市逆巍,隨后出現(xiàn)的幾起案子及塘,更是在濱河造成了極大的恐慌,老刑警劉巖锐极,帶你破解...
    沈念sama閱讀 212,454評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件笙僚,死亡現(xiàn)場離奇詭異,居然都是意外死亡灵再,警方通過查閱死者的電腦和手機(jī)肋层,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來翎迁,“玉大人栋猖,你說我怎么就攤上這事⊥衾疲” “怎么了蒲拉?”我有些...
    開封第一講書人閱讀 157,921評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長痴腌。 經(jīng)常有香客問我雌团,道長,這世上最難降的妖魔是什么士聪? 我笑而不...
    開封第一講書人閱讀 56,648評論 1 284
  • 正文 為了忘掉前任锦援,我火速辦了婚禮,結(jié)果婚禮上剥悟,老公的妹妹穿的比我還像新娘灵寺。我一直安慰自己,他們只是感情好区岗,可當(dāng)我...
    茶點故事閱讀 65,770評論 6 386
  • 文/花漫 我一把揭開白布略板。 她就那樣靜靜地躺著,像睡著了一般躏尉。 火紅的嫁衣襯著肌膚如雪蚯根。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,950評論 1 291
  • 那天胀糜,我揣著相機(jī)與錄音颅拦,去河邊找鬼。 笑死教藻,一個胖子當(dāng)著我的面吹牛距帅,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播括堤,決...
    沈念sama閱讀 39,090評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼碌秸,長吁一口氣:“原來是場噩夢啊……” “哼绍移!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起讥电,我...
    開封第一講書人閱讀 37,817評論 0 268
  • 序言:老撾萬榮一對情侶失蹤蹂窖,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后恩敌,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體瞬测,經(jīng)...
    沈念sama閱讀 44,275評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,592評論 2 327
  • 正文 我和宋清朗相戀三年纠炮,在試婚紗的時候發(fā)現(xiàn)自己被綠了月趟。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,724評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡恢口,死狀恐怖孝宗,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情耕肩,我是刑警寧澤因妇,帶...
    沈念sama閱讀 34,409評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站猿诸,受9級特大地震影響沙峻,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜两芳,卻給世界環(huán)境...
    茶點故事閱讀 40,052評論 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望去枷。 院中可真熱鬧怖辆,春花似錦、人聲如沸删顶。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽逗余。三九已至特咆,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間录粱,已是汗流浹背腻格。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留啥繁,地道東北人菜职。 一個月前我還...
    沈念sama閱讀 46,503評論 2 361
  • 正文 我出身青樓,卻偏偏與公主長得像旗闽,于是被迫代替她去往敵國和親酬核。 傳聞我的和親對象是個殘疾皇子蜜另,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,627評論 2 350