Vue之Axios的異步通信詳解
1.什么是Axios
Axios是一個開源的可以用在瀏覽器端和Node JS
的異步通信框架, 她的主要作用就是實(shí)現(xiàn)AJAX異步通信,其功能特點(diǎn)如下:
- 從瀏覽器中創(chuàng)建
XMLHttpRequests
- 從node.js創(chuàng)建http請求
- 支持Promise API[JS中鏈?zhǔn)骄幊蘛
- 攔截請求和響應(yīng)
- 轉(zhuǎn)換請求數(shù)據(jù)和響應(yīng)數(shù)據(jù)
- 取消請求
- 自動轉(zhuǎn)換JSON數(shù)據(jù)
- 客戶端支持防御XSRF(跨站請求偽造)
GitHub:https://github.com/axios/axios
2、為什么要使用Axios
由于Vue.js
是一個視圖層框架并且作者(尤雨溪) 嚴(yán)格準(zhǔn)守SoC(關(guān)注度分離原則)所以Vue.js
并不包含AJAX的通信功能, 為了解決通信問題, 作者單獨(dú)開發(fā)了一個名為vue-resource
的插件, 不過在進(jìn)入2.0版本以后停止了對該插件的維護(hù)并推薦了Axios
框架。少用jQuery, 因?yàn)樗僮鱀om太頻繁!
3、第一個Axios應(yīng)用程序
咱們開發(fā)的接口大部分都是采用JSON格式, 可以先在項(xiàng)目里模擬一段JSON數(shù)據(jù), 數(shù)據(jù)內(nèi)容如下:創(chuàng)建一個名為data.json的文件并填入上面的內(nèi)容, 放在項(xiàng)目的根目錄下
{ "name": "狂神說Java", "url": "https://blog.kuangstudy.com", "page": 1, "isNonProfit": true, "address": { "street": "含光門", "city": "陜西西安", "country": "中國" }, "links": [ { "name": "bilibili", "url": "https://space.bilibili.com/95256449" }, { "name": "狂神說Java", "url": "https://blog.kuangstudy.com" }, { "name": "百度", "url": "https://www.baidu.com/" } ] }
測試代碼
<!DOCTYPE html> <html lang="en" xmlns:v-binf="http://www.w3.org/1999/xhtml"> <head> <meta charset="UTF-8"> <title>Title</title> <!--v-cloak 解決閃爍問題--> <style> [v-cloak]{ display: none; } </style> </head> <body> <div id="vue"> <div>地名:{{info.name}}</div> <div>地址:{{info.address.country}}--{{info.address.city}}--{{info.address.street}}</div> <div>鏈接:<a v-binf:href="info.url" target="_blank">{{info.url}}</a> </div> </div> <!--引入js文件--> <script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.min.js"></script> <script src="https://unpkg.com/axios/dist/axios.min.js"></script> <script type="text/javascript"> var vm = new Vue({ el:"#vue", //data:屬性:vm data(){ return{ info:{ name:null, address:{ country:null, city:null, street:null }, url:null } } }, mounted(){//鉤子函數(shù) axios .get('data.json') .then(response=>(this.info=response.data)); } }); </script> </body> </html>
說明:
1.在這里使用了v-bind將a:href的屬性值與Vue實(shí)例中的數(shù)據(jù)進(jìn)行綁定
2.使用axios框架的get方法請求AJAX并自動將數(shù)據(jù)封裝進(jìn)了Vue實(shí)例的數(shù)據(jù)對象中我們在data中
3.的數(shù)據(jù)結(jié)構(gòu)必須和Ajax
響應(yīng)回來的數(shù)據(jù)格式匹配!
4、Vue的生命周期
官方文檔:https://cn.vuejs.org/v2/guide/instance.html#生命周期圖示
Vue實(shí)例有一個完整的生命周期,也就是從開始創(chuàng)建初女臺化數(shù)據(jù)、編譯模板、掛載DOM、渲染一更新一渲染、卸載等一系列過程,我們稱這是Vue的生命周期。通俗說就是Vue實(shí)例從創(chuàng)建到銷毀的過程,就是生命周期。
在Vue的整個生命周期中,它提供了一系列的事件,可以讓我們在事件觸發(fā)時注冊JS方法,可以讓我們用自己注冊的JS方法控制整個大局,在這些事件響應(yīng)方法中的this直接指向的是Vue的實(shí)例。
總結(jié)
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
vue3配置router路由并實(shí)現(xiàn)頁面跳轉(zhuǎn)功能
這篇文章主要介紹了vue3配置router路由并實(shí)現(xiàn)頁面跳轉(zhuǎn),本文通過示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-04-04關(guān)于vue中hash和history的區(qū)別與使用圖文詳解
vue-router中有hash模式和history模式,下面這篇文章主要給大家介紹了關(guān)于vue中hash和history的區(qū)別與使用的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下2023-03-03解決Vue.js由于延時顯示了{(lán){message}}引用界面的問題
今天小編就為大家分享一篇解決Vue.js由于延時顯示了{(lán){message}}引用界面的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-08-08基于vue-cli3多頁面開發(fā)apicloud應(yīng)用的教程詳解
這篇文章主要介紹了基于vue-cli3多頁面開發(fā)apicloud應(yīng)用,本文采用vue-cli+APIcloud的方式寫解決以上痛點(diǎn),開發(fā)靈活,并且打包之后體積更小速度更快,需要的朋友可以參考下2019-06-06基于ElementUI中Table嵌套實(shí)現(xiàn)多選的示例代碼
這篇文章主要介紹了基于ElementUI中Table嵌套實(shí)現(xiàn)多選的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03使用vis-timeline繪制甘特圖并實(shí)現(xiàn)時間軸的中文化(案例代碼)
這篇文章主要介紹了使用vis-timeline繪制甘特圖并實(shí)現(xiàn)時間軸的中文化(案例代碼),本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-02-02