gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区

站長資訊網
最全最豐富的資訊網站

Vue應用程序中實現AJAX的四個地方

Vue應用程序中實現AJAX的四個地方

Vue沒有提供實現AJAX的正式方法,而且有許多不同的設計模式可以有效地使用。每種方法都有其優缺點,應該根據需求進行判斷。您甚至可以同時使用多個!

在本文中,我將向您展示在Vue應用程序中實現AJAX的四個地方:

  • 根實例

  • 組件

  • Vuex行動

  • 路線導航警衛

我將解釋每種方法,給出一個例子,并討論其優缺點。

1、根實例

使用這種體系結構,您可以從根實例發出所有AJAX請求,并將所有狀態存儲在根實例中。如果任何子組件需要數據,它將作為輔助。如果子組件需要刷新數據,將使用自定義事件提示根實例請求它。

例子:

new Vue({   data: {     message: ''   },   methods: {     refreshMessage(resource) {       this.$http.get('/message').then((response) {         this.message = response.data.message;       });     }   } })  Vue.component('sub-component', {   template: '<div>{{ message }}</div>',   props: [ 'message' ]   methods: {     refreshMessage() {       this.$emit('refreshMessage');     }   } });

優點:

  • 將所有AJAX邏輯和數據保存在一個地方。

  • 保持組件“dumb”,這樣它們就可以專注于表示。

缺點:

  • 隨著應用程序的擴展,需要大量的道具和定制事件。

2、組件

使用這種體系結構,組件負責獨立地管理它們自己的AJAX請求和狀態。在實踐中,您可能希望創建幾個“容器”組件,這些組件為它們自己的本地“表示”組件組管理數據。

例如,filter-list可能是包裝filter-input和filter-reset的容器組件,它們充當表示組件。filter-list將包含AJAX邏輯,并將管理該組中所有組件的數據,通過道具和事件進行通信。

為了使這個體系結構的實現更容易,您可以將任何AJAX邏輯抽象到mixin中,然后使用組件中的mixin使其啟用AJAX。

let mixin = {   methods: {     callAJAX(resource) {       ...     }   } }  Vue.component('container-comp', {   // No meaningful template, I just manage data for my children   template: '<div><presentation-comp :mydata="mydata"></presentation-comp></div>',    mixins: [ myMixin ],   data() {     return { ... }   },  })  Vue.component('presentation-comp', {   template: <div>I just show stuff like {{ mydata }}</div>,   props: [ 'mydata' ] })

優點:

  • 保持組件分離和可重用。

  • 獲取所需數據的時間和地點。

缺點:

  • 不容易與其他組件或組件組通信數據。

  • 組件可能會有太多的職責和重復的功能。

3、Vuex行動

使用這種體系結構,您可以在Vuex存儲中管理狀態邏輯和AJAX邏輯。組件可以通過分派操作請求新數據。

如果您實現了這種模式,那么最好在操作中返回一個promise,這樣您就可以對AJAX請求的解析做出響應,例如隱藏加載微調器、重新啟用按鈕等。

store = new Vuex.Store({   state: {     message: ''   },   mutations: {     updateMessage(state, payload) {       state.message = payload     }   },   actions: {     refreshMessage(context) {       return new Promise((resolve) => {         this.$http.get('...').then((response) => {           context.commit('updateMessage', response.data.message);           resolve();         });       });     }   } });  Vue.component('my-component', {   template: '<div>{{ message }}</div>',   methods: {     refreshMessage() {       this.$store.dispatch('refeshMessage').then(() => {         // do stuff       });     }   },   computed: {     message: { return this.$store.state.message; }   } });

我喜歡這種架構,因為它很好地解耦了狀態和表示邏輯。如果你正在使用Vuex,這是一個方法。如果你不使用Vuex,這可能是一個足夠好的理由。

優點:

  • 根組件體系結構的所有優點,不需要道具和自定義事件。

缺點:

  • 增加了Vuex的開銷

4、路線導航警衛

使用這種架構,您的應用程序將被分割為多個頁面,當路由更改時,將獲取頁面及其子組件所需的所有數據。

這種方法的主要優點是它確實簡化了UI。如果組件獨立地獲取它們自己的數據,當組件數據以任意順序填充時,頁面將不可預測地重新呈現。

實現此功能的一個簡單方法是在服務器上為每個頁面創建端點,例如/about、/contact等,這些端點與應用程序中的路由名匹配。然后,可以實現一個通用的beforeRouteEnter鉤子,將所有數據屬性合并到頁面組件的數據中:

import axios from 'axios';  router.beforeRouteEnter((to, from, next) => {   axios.get(`/api${to.path}`).then(({ data }) => {     next(vm => Object.assign(vm.$data, data))   }); })

優點:

  • 使UI更加可預測。

缺點:

  • 整體上比較慢,因為頁面在所有數據都準備好之前無法呈現。

  • 如果您不使用路由,也沒有多大幫助。

附加模式:服務器—在頁面中呈現第一個AJAX調用

不建議在初始頁面加載時使用AJAX檢索應用程序狀態,因為它需要額外的到服務器的往返,這會延遲應用程序的呈現。

相反,將初始應用程序狀態注入HTML頁面頭部的內聯腳本中,以便在需要時將其作為全局變量提供給應用程序。

<html> ... <head>   ...   <script type="text/javascript">    window.__INITIAL_STATE__ = '{ "data": [ ... ] }';   </script> </head> <body>   <div id="app"></div> </body> </html>

然后,AJAX可以更恰當地用于后續數據獲取。

贊(0)
分享到: 更多 (0)
?
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区
一本久道高清无码视频| 加勒比av中文字幕| 超碰成人在线播放| 国产69精品久久久久999小说| 成人免费xxxxx在线视频| 四虎4hu永久免费入口| 日韩中文字幕a| 北条麻妃视频在线| 香港三级韩国三级日本三级| 伊人国产精品视频| 日本在线观看免费视频| 99热自拍偷拍| 久艹在线免费观看| 777久久精品一区二区三区无码 | 日韩视频在线观看视频| 亚洲人成色77777| 嫩草av久久伊人妇女超级a| 男人午夜视频在线观看| 人人干人人视频| 久久国产亚洲精品无码| 欧美狂野激情性xxxx在线观| 亚洲欧美日韩不卡| 亚洲怡红院在线| 日本一二区免费| 亚洲天堂国产视频| 我看黄色一级片| 成 人 黄 色 小说网站 s色| 北条麻妃视频在线| 久草福利视频在线| 超碰97免费观看| 手机在线视频一区| 三级网在线观看| 日韩不卡视频一区二区| 日本一级黄视频| 国产精品久久久久9999爆乳| 真人做人试看60分钟免费| 青青草综合视频| 99久久久精品视频| 日本久久高清视频| 国产精品久久久久久久乖乖| xxxx18hd亚洲hd捆绑| 男人日女人逼逼| 污版视频在线观看| 国产不卡的av| 婷婷五月综合缴情在线视频| 日韩a在线播放| 精品久久久99| 久久艹国产精品| 久久久久久久久久久免费视频| 国产精品拍拍拍| 日本一二三四区视频| www插插插无码视频网站 | 国产精欧美一区二区三区白种人| 亚洲国产成人va在线观看麻豆| 亚洲免费看av| 日韩一区二区高清视频| 苍井空浴缸大战猛男120分钟| 欧美一级特黄a| 精品无码av无码免费专区| 日韩av黄色网址| 亚洲热在线视频| 男人操女人免费软件| 日韩视频在线观看一区二区三区| 成人午夜免费在线视频| 午夜视频在线瓜伦| 欧美精品一区二区性色a+v| 久久国产精品视频在线观看| 中文字幕22页| 午夜视频在线网站| 欧美一区二区三区爽大粗免费| 91视频 - 88av| 欧美 日韩 亚洲 一区| 日本阿v视频在线观看| 超碰在线资源站| 丰满少妇在线观看| 国产美女三级视频| 熟女人妇 成熟妇女系列视频| 黄色国产小视频| 毛片av免费在线观看| www.国产视频.com| 欧美日韩精品区别| 国产精品区在线| 9色porny| 人妻无码视频一区二区三区| 中文字幕第22页| 亚洲视频在线a| 999一区二区三区| 一级黄色片国产| 毛片av在线播放| 污污视频在线免费| 一级 黄 色 片一| 青青青青草视频| avav在线播放| 四虎4hu永久免费入口| 秋霞无码一区二区| 激情五月开心婷婷| 亚洲欧美日本一区二区| 国产日本欧美在线| 尤物av无码色av无码| 中文字幕第22页| 91黄色小网站| 免费看黄色一级大片| 国产一二三四五| 800av在线免费观看| 国产毛片久久久久久国产毛片| 一本一道久久a久久综合蜜桃| 国产xxxx振车| 在线观看污视频| 99精品视频免费版的特色功能| 黄色一级视频播放| 爱情岛论坛vip永久入口| 污污污污污污www网站免费| 亚洲美免无码中文字幕在线| 成人av在线播放观看| 亚洲涩涩在线观看| 老太脱裤让老头玩ⅹxxxx| 男女爱爱视频网站| 国产一级不卡毛片| 成人在线观看a| 国产亚洲精品网站| 日本精品久久久久中文字幕| 九色porny自拍| 黄色动漫网站入口| 久久久亚洲精品无码| 日韩免费一级视频| 欧美在线a视频| 欧洲av无码放荡人妇网站| 国产视频九色蝌蚪| 一区二区三区免费播放| 国产一级免费大片| 三日本三级少妇三级99| 美脚丝袜脚交一区二区| www.这里只有精品| 人人妻人人做人人爽| 免费成人进口网站| 久久6免费视频| 国产高清视频网站| 妞干网这里只有精品| 日本日本19xxxⅹhd乱影响| 9久久婷婷国产综合精品性色| 亚洲色成人www永久在线观看| 日韩在线一级片| 天堂v在线视频| 男女视频一区二区三区| 一级特黄妇女高潮| 日本中文字幕高清| 少妇高潮毛片色欲ava片| 亚洲欧美国产中文| 黄色动漫网站入口| 丰满人妻一区二区三区53号| 国内自拍视频一区| 精品少妇在线视频| 日韩精品视频网址| 亚洲天堂2018av| 亚洲爆乳无码专区| 免费 成 人 黄 色| wwwwww欧美| 一二三在线视频| 国产女同无遮挡互慰高潮91| 欧美日韩在线不卡视频| 人人妻人人做人人爽| 日本国产中文字幕| 97超碰人人看| 亚洲欧美日韩一二三区| 久久久久久蜜桃一区二区| 久久久久久久少妇| 欧美两根一起进3p做受视频| 女性女同性aⅴ免费观女性恋| 久久久天堂国产精品| 992kp免费看片| 亚洲av无日韩毛片久久| 五月天av在线播放| av在线网址导航| 香蕉视频禁止18| 午夜剧场高清版免费观看| 亚洲欧美偷拍另类| 中国黄色片一级| 色偷偷中文字幕| 99re99热| 日韩xxxx视频| 99re在线视频免费观看| 男人女人黄一级| 97超碰成人在线| 日韩a一级欧美一级| 精品少妇人妻av一区二区| 国产精品8888| 欧美亚洲精品一区二区| av片中文字幕| 亚洲一二三av| av无码久久久久久不卡网站| 欧美日韩成人免费视频| 凹凸国产熟女精品视频| 亚洲精品久久久中文字幕| 久久精品视频在线观看免费| 亚洲国产一二三精品无码| 欧美视频在线免费播放| 欧美一级裸体视频| 日韩不卡一二区| 黄色一级视频在线播放| 超碰在线人人爱|