国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

http.js 在Ajax單頁面中的應(yīng)用

DC_er / 3450人閱讀

摘要:發(fā)送全局參數(shù)我做單頁面應(yīng)用時(shí),會(huì)有這樣一個(gè)情景當(dāng)用戶登錄后,服務(wù)器會(huì)返回一個(gè)值,之后的大部分請(qǐng)求都需要傳遞這個(gè)參數(shù)。因此,我在中增加這樣一個(gè)函數(shù)來解決上面的問題。

關(guān)于作者

馬隆博(Lenbo Ma),Java,Javascript

Blog: http://mlongbo.com

E-Mail: mlongbo@gmail.com

文章編寫于: 2014/08/10

轉(zhuǎn)載請(qǐng)注明出處:

http://mlongbo.com/http-js-zai-ajaxdan-y...

要解決的問題

簡化api使用;

為頁面中Ajax請(qǐng)求設(shè)置全局?jǐn)r截器;

頁面中所有Ajax請(qǐng)求向服務(wù)器發(fā)送全局參數(shù);

實(shí)現(xiàn) 簡化API

我個(gè)人喜歡鏈?zhǔn)秸{(diào)用,以及簡單明了的API設(shè)計(jì)。因此,我主要在以下幾個(gè)部分做了簡化:

為每種請(qǐng)求類型增加一個(gè)函數(shù)。如: $http.get(); $http.post(); $http.del(); $http.put();

可以動(dòng)態(tài)設(shè)置請(qǐng)求參數(shù);

req.push(key,val); or req.push(jsonObj); //設(shè)置請(qǐng)求參數(shù), 可同時(shí)增加一個(gè)或多個(gè)參數(shù)

req.data(jsonObj); //會(huì)覆蓋push函數(shù)設(shè)置過的值

req.header(key,val); or req.header(jsonObj); //請(qǐng)求頭, 可同時(shí)增一個(gè)或多個(gè)

req.headers(jsonObj); //會(huì)覆蓋header函數(shù)設(shè)置過的值

同樣, 其他的功能也可以拆分成獨(dú)立函數(shù)來設(shè)置, 比如:

req.type(typeStr); //設(shè)置響應(yīng)數(shù)據(jù)類型

req.cache(boolean); //是否緩存

總之,你完全可以按照你自己最喜愛的方式定制API。

攔截器實(shí)現(xiàn)

之所以會(huì)有攔截器的需求,是因?yàn)槲抑八龅囊粋€(gè)應(yīng)用的數(shù)據(jù)響應(yīng)格式如下:

{
  code: 1,
  message: "響應(yīng)信息"
}

其中code值會(huì)有這樣幾種值:

0 failed

1 success

2 session timeout

因此我需要統(tǒng)一處理會(huì)話過期情況,比如通知用戶重新登錄等。

我使用req.interceptor(type,func(res){}); 來增加一個(gè)攔截器。當(dāng)服務(wù)器響應(yīng)數(shù)據(jù)時(shí),將先調(diào)用設(shè)置的全局?jǐn)r截器,之后再去調(diào)用業(yè)務(wù)相關(guān)的回調(diào)函數(shù)。如果我http.js去服務(wù)器獲取html模板代碼時(shí),即響應(yīng)的數(shù)據(jù)類型是text/html,而不是application/json,這時(shí)候再去做攔截就不好玩了。因此,我用了一個(gè)type參數(shù)來給interceptor分組。

發(fā)送全局參數(shù)

我做單頁面應(yīng)用時(shí),會(huì)有這樣一個(gè)情景:

當(dāng)用戶登錄后,服務(wù)器會(huì)返回一個(gè)token值,之后的大部分api請(qǐng)求都需要傳遞這個(gè)token參數(shù)。因此,如果在每次ajax請(qǐng)求時(shí)都手動(dòng)增加一個(gè)token參數(shù)值,就感覺有些效率低下。同樣,你的同事們可能也會(huì)遇到和你同樣的情況,這時(shí)候還要一個(gè)個(gè)告訴他們?cè)趺丛O(shè)置token參數(shù)就很不好玩兒了。

因此,我在http.js中增加$http.global(key,val); or $http.global(jsonObj);這樣一個(gè)函數(shù)來解決上面的問題。

結(jié)語

至于基于什么ajax庫來封裝,你可以使用原生ajax,jquery ajax,或者其他你喜歡的ajax library。同時(shí),歡迎各種討論 ^_^

這是我寫的http.js代碼片段,不太全面,也許可供你參考。

掃描二維碼,關(guān)注我。
內(nèi)容大多會(huì)是后端技術(shù)、前端工程、DevOps,偶爾會(huì)有一些大數(shù)據(jù)相關(guān),會(huì)推薦一些好玩的東西。希望你會(huì)喜歡~

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/85252.html

相關(guān)文章

  • 基于 Webpack 4 多入口生成模板用于服務(wù)端渲染的方案及實(shí)戰(zhàn)

    摘要:原作者原鏈接基于多入口生成模板用于服務(wù)端渲染的方案及實(shí)戰(zhàn)法律聲明警告本作品遵循署名非商業(yè)性使用禁止演繹未本地化版本協(xié)議發(fā)布。這是什么背景現(xiàn)代化的前端項(xiàng)目中很多都使用了客戶端渲染的單頁面應(yīng)用。 原作者:@LinuxerPHL原鏈接:基于 Webpack 4 多入口生成模板用于服務(wù)端渲染的方案及實(shí)戰(zhàn) 法律聲明 警告:本作品遵循 署名-非商業(yè)性使用-禁止演繹3.0 未本地化版本(CC BY-...

    big_cat 評(píng)論0 收藏0
  • 基于 Webpack 4 多入口生成模板用于服務(wù)端渲染的方案及實(shí)戰(zhàn)

    摘要:原作者原博文地址基于多入口生成模板用于服務(wù)端渲染的方案及實(shí)戰(zhàn)法律聲明警告本作品遵循署名非商業(yè)性使用禁止演繹未本地化版本協(xié)議發(fā)布。這是什么背景現(xiàn)代化的前端項(xiàng)目中很多都使用了客戶端渲染的單頁面應(yīng)用。 原作者:@LinuxerPHL原博文地址: 基于 Webpack 4 多入口生成模板用于服務(wù)端渲染的方案及實(shí)戰(zhàn) 法律聲明 警告:本作品遵循 署名-非商業(yè)性使用-禁止演繹3.0 未本地化版本(...

    Lavender 評(píng)論0 收藏0
  • 基于 jQuery Ajax 定制自己喜愛的 API

    摘要:你覺得的怎么樣,想不想定制更適合自己的絲滑。這篇文章基于我之前的的一篇在單頁面中的應(yīng)用整理而來。因此,我基于,重新封裝了一層。內(nèi)容大多會(huì)是后端技術(shù)前端工程,偶爾會(huì)有一些大數(shù)據(jù)相關(guān),會(huì)推薦一些好玩的東西。希望你會(huì)喜歡一切,源于喜歡。 showImg(http://ww1.sinaimg.cn/large/b196a42dgw1f2t2s0fkzoj20fu0643yd.jpg); 你覺得...

    30e8336b8229 評(píng)論0 收藏0
  • 一種SPA(頁面應(yīng)用)架構(gòu)

    摘要:個(gè)人認(rèn)為單頁面應(yīng)用的優(yōu)勢相當(dāng)明顯前后端職責(zé)分離,架構(gòu)清晰前端進(jìn)行交互邏輯,后端負(fù)責(zé)數(shù)據(jù)處理。上面的這種單頁面應(yīng)用也有其相應(yīng)的一種開發(fā)工作流,當(dāng)然這種工作流也適合非單頁面應(yīng)用進(jìn)行產(chǎn)品功能原型設(shè)計(jì)。 未經(jīng)允許,請(qǐng)勿轉(zhuǎn)載。本文同時(shí)也發(fā)布在我的博客。 (如果對(duì)SPA概念不清楚的同學(xué)可以先自行了解相關(guān)概念) 平時(shí)喜歡做點(diǎn)小頁面來玩玩,并且一直采用單頁面應(yīng)用(Single Page Appl...

    Codeing_ls 評(píng)論0 收藏0
  • SPA那點(diǎn)事

    摘要:單頁面應(yīng)用的出現(xiàn)依然存在著爭議性,我們?cè)撊绾慰创膬擅嫘阅亟酉聛硇∩o大家總結(jié)一下他的優(yōu)缺點(diǎn)。單頁面應(yīng)用的優(yōu)勢無刷新體驗(yàn)沒有了令人詬病的頁面頻繁刷新,同時(shí)節(jié)約瀏覽器資源,路由響應(yīng)比較及時(shí),提升了用戶的體驗(yàn)。 前端猿一天不學(xué)習(xí)就沒飯吃了,后端猿三天不學(xué)習(xí)仍舊有白米飯擺于桌前。IT行業(yè)的快速發(fā)展一直在推動(dòng)著前端技術(shù)棧在不斷地更新?lián)Q代,前端的發(fā)展成了互聯(lián)網(wǎng)時(shí)代的一個(gè)縮影。而單頁面應(yīng)用的發(fā)展...

    PumpkinDylan 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<