vue-resource的應用

vue-resource的應用

最近在了解資源的相關加載方式,主要是基于http協(xié)議下的資源請求杏头,之前由于用了vue作為前端頁面的一個框架盈包,但是處理請求的數(shù)據(jù)為了較為便捷,還一直停留在jquery中的ajax等方法醇王,在了解vue-resource后呢燥,打算采用vue的相關插件,(本來是想自己寫原生的ajax來處理的寓娩,由于個人一個字懶)叛氨,不小心找到了vue-resource,發(fā)現(xiàn)處理方式挺全面的呼渣。所以O(∩_∩)O哈哈~
為了能引入到自己的項目中,就先了解了一下寞埠,寫在這里望大家參考屁置,并且指正。

簡介

vue-resource是vue中的一個插件仁连。如果使用過vue的其他組件應用者會比較更容易理解vue-resource在vue中所處的狀態(tài)蓝角。
簡單的來說vue-resource它類似于jquery中的ajax。這個插件是vue.js對于web中利用XMLHttpRequest或JSONP提供請求和響應數(shù)據(jù)的一個服務饭冬。
下面簡單的來了解一下vue-resource的相關功能和具體應用使鹅。
相關功能
vue-resource
主要特點
支持Promise API 和 URI Templates
支持攔截器在發(fā)送請求時或者在請求響應時
體積小完整大小約14kb(壓縮后大小5.3kb)
對瀏覽器的支持程度和vue.js保持一致,支持最新的firefox, safari,Opera 和IE9以上版本

引入方法

這里簡單的說說明一下自己所了解的兩種應用方式

一(直接應用vue-resource.js)
<script src="vue.js"></script>  //當然在引入vue-resource之前應先引入vue.js
<script src="vue-resource.js"></script>
二(在webpack+vue-router+vue-resource)

當然在該配置下需要安裝nodejs,npm管理包昌抠,同時配置相關的模塊患朱,要引用vue-resource就要在npm管理包中安裝,安裝命令

npm install vue-resource

在相關配置安裝好后就可以引入vue-resource扰魂,vue-router具體引入代碼

const Vue = require('vue');
const VueRouter = require('vue-router');//引入vue-outer
const VueResource = require('vue-resource');//引入vue-resource

Vue.use(VueRouter);//將vue-router插件用在vue中
Vue.use(VueResource);//vue-resource插件用在vue中

相關方法和屬性

vue-resource的請求支持API時候按照REST風格設計的麦乞,他提供了7種請求API

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

除jsonp外其他的方法名稱都是標準的http方法,當服務使用rest API

options對象

參數(shù) 類型 描述
url string 請求的url
method string module.exports = abc.def;
body Object Fromquery string request body
params Object 請求的URL參數(shù)對象
headers Object request header
timeout number 單位為毫秒的請求超時時間(0表示無超時時間)
before function(request) 請求發(fā)送前的處理函數(shù)劝评,類似于jQuery的beforeSend函數(shù)
progress function(event) ProgressEvent回調(diào)處理函數(shù)
credientials boolean 表示跨域請求時是否需要使用憑證
emulateHTTP boolean 發(fā)送PUT,PATCH,DELETE請求時以http的post方式
emulateJSON boolean 將request body以application/x-www-form-urlencoded content type發(fā)送

emulateHTTP的作用
如果web服務器無法處理PUT,PATCH和DELETE這種REST風格的請求,你可以開啟用enulateHTTP選項后倦淀,請求會以普通的POST方法發(fā)出蒋畜,并且HTTP頭信息的x-HTTP-Method-Override屬性會設置為實際的HTTP方法。

emulateJSON的作用
如果web服務無法處理編碼為application/json的請求撞叽,你可以啟用emulateJSON選項姻成。啟用該選項后,請求會以application/x-www-form-urlencoded作為MIME type,就像普通的HTML表單一樣愿棋。respones對象包含以下屬性

方法 類型 描述
text() string 以string形式返回response body
json() Object 以JSON對象形式返回response body
blob() Blob 以二進制形式返回response body
ok boolean 響應的HTTP 狀態(tài)碼在200-299之間時科展,該屬性為true
status number 響應的HTTP狀態(tài)嗎
statusText string 響應的狀態(tài)文本
headers Object 響應頭

相關應用案例

常見的get和post實例

//get實例
var vm= new Vue({
    el:"#app",
    data:function(){
        return {
            url:"url",
            getdata:"",
        }
    },
    ready:function(){
        this.getdatamethod();
    },
    methods:{
        //普通方式請求
        getdatamethod:function(){
            this.$http.get(this.url)                
            .then((response) => {                    
                this.getdata=response.data                
                }).catch(function(response) {                    
                    console.log(response)                
                })        
            } 
        },
        //參數(shù)用json的形式請求
        getdatamethodjson:function(){
            var item={id:1,title:111};
            this.$http.get(this.url,{params:item},{emulateJSON:true})                
            .then((response) => {                    
                this.getdata=response.data                
                }).catch(function(response) {                    
                    console.log(response)                
                })        
            } 
        },
    }
})

post

//用post的形式
var vm= new Vue({
    el:"#app",
    data:function(){
        return {
            url:"url",
            getdata:"",
        }
    },
    ready:function(){
        this.postdatamethod();
    },
    methods:{
        //普通方式請求
        postdatamethod:function(){
            this.$http.post(this.url)                
            .then((response) => {                    
                this.getdata=response.data                
                }).catch(function(response) {                    
                    console.log(response)                
                })        
            } 
        },
        //參數(shù)用json的形式請求
        postdatamethodjson:function(){
            var item={id:1,title:111};
            this.$http.post(this.url,item,{emulateJSON:true})                
            .then((response) => {                    
                this.getdata=response.data                
                }).catch(function(response) {                    
                    console.log(response)                
                })        
            } 
        },
    }
})

使用inteceptor
攔截器可以在請求發(fā)送前和發(fā)送請求后做一些處理
基礎用法

Vue.http.interceptors.push(function(request, next) {
    
    // 請求發(fā)送前的處理邏輯
    
    next(function(response) {
        // 請求發(fā)送后的處理邏輯
        
        return response
    })
})

注意:攔截器是作為一個全局的請求檢測攔截,是每個請求請求發(fā)送前和結束后都會進行處理糠雨,并不是為某一特定的請求所有的才睹,是所有請求共用的,不過要為不同的請求處理不同的攔截邏輯甘邀,可以根據(jù)request所帶信息進行相應的判斷琅攘,然后處理。
同樣在請求之后可以采用response返回的信息進行判斷處理松邪。

//eg:
Vue.http.interceptors.push(function(request, next) {
    if(request.url=="1111"&&request.method=="POST"){
        console.log(0000)//處理符合該請求的攔截器
    }else{
        console.log(11111)//處理不符合該請求的攔截器邏輯
    }
    next(function(response) {
        if(response.url=="1111"){
            console.log(2222)//在符合該請求之后處理
        }else{
            console.log(3333)//處理不符合該請求之后的處理
        }
        return response
    })
})

更多參考

http://www.reibang.com/p/17008a549f55)之前了解的有關webpack+vue構建頁面
http://www.bootcdn.cn/vue-resource/)有關vue-resource.js的版本
https://github.com/pagekit/vue-resource/)github上其內(nèi)容簡介

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末坞琴,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子逗抑,更是在濱河造成了極大的恐慌剧辐,老刑警劉巖寒亥,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異荧关,居然都是意外死亡溉奕,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進店門羞酗,熙熙樓的掌柜王于貴愁眉苦臉地迎上來腐宋,“玉大人,你說我怎么就攤上這事檀轨⌒鼐海” “怎么了?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵参萄,是天一觀的道長卫枝。 經(jīng)常有香客問我,道長讹挎,這世上最難降的妖魔是什么校赤? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮筒溃,結果婚禮上马篮,老公的妹妹穿的比我還像新娘。我一直安慰自己怜奖,他們只是感情好浑测,可當我...
    茶點故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著歪玲,像睡著了一般迁央。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上滥崩,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天岖圈,我揣著相機與錄音,去河邊找鬼钙皮。 笑死蜂科,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的株灸。 我是一名探鬼主播崇摄,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼慌烧!你這毒婦竟也來了逐抑?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤屹蚊,失蹤者是張志新(化名)和其女友劉穎厕氨,沒想到半個月后进每,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡命斧,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年田晚,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片国葬。...
    茶點故事閱讀 38,617評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡贤徒,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出汇四,到底是詐尸還是另有隱情接奈,我是刑警寧澤,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布通孽,位于F島的核電站序宦,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏背苦。R本人自食惡果不足惜互捌,卻給世界環(huán)境...
    茶點故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望行剂。 院中可真熱鬧秕噪,春花似錦、人聲如沸厚宰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽固阁。三九已至,卻和暖如春城菊,著一層夾襖步出監(jiān)牢的瞬間备燃,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工凌唬, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留并齐,地道東北人。 一個月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓客税,卻偏偏與公主長得像况褪,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子更耻,可洞房花燭夜當晚...
    茶點故事閱讀 43,486評論 2 348

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

  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理测垛,服務發(fā)現(xiàn),斷路器秧均,智...
    卡卡羅2017閱讀 134,629評論 18 139
  • 一個空虛寂寞的旅客島村在雪國的溫泉旅館邂逅了藝伎駒子食侮,島村被純潔美麗的駒子所吸引号涯,三年三入雪國,與駒子耳鬢廝...
    cloris1900閱讀 448評論 0 0
  • 第270天~ 好久你沒有出現(xiàn)咯锯七,一點蹤跡都沒有链快,我告訴自己這樣不出現(xiàn)久咯,或許就可以淡忘些吧眉尸!可是域蜗,下午看到你在共...
    法斗SEVEN閱讀 225評論 0 0
  • 某村長潛逃美國沒事干,就開了家私人診所噪猾,放了塊牌子在外面霉祸,寫著 病治好,付$300畏妖; 治不好脉执,退$1000。 有個...
    伏羲教育劉琳閱讀 219評論 0 0