日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Vue Router根據后臺數據加載不同的組件實現

瀏覽:25日期:2023-02-16 10:20:50
目錄實際項目中遇到的需求有一些不好的實現方式個人感覺比較好的實現方式功能已實現,但我又開始了新的思考最終方案——高階組件實際項目中遇到的需求

同一個鏈接需要加載不同的頁面組件。根據用戶所購買服務的不同,有不同的頁面展現。

有一些不好的實現方式 直接把這幾個組件寫在同一個組件下,通過v-if去判斷。如果這么做的話,甚至可以不使用vue-router,直接把所有組件,都寫在一個文件里面,全部通過v-if判斷,也是可行的。(前提是幾萬行代碼一起,你不嫌麻煩的話) 在渲染這個鏈接的時候,直接去請求后臺的數據,通過數據渲染不同的鏈接。(理論上是可行的,但如果用戶沒有用這個功能,這些鏈接每次都提前取了后臺數據;另外如果用戶知道了鏈接,直接訪問鏈接,還是需要邏輯去判斷用戶該看到哪個頁面) 通過調用router.beforeEach,對每個路由進行攔截,當路由為我們指定的路由時,請求后臺數據,動態跳轉頁面。(功能是可以完成,但實際上,這只是整個系統的一小塊功能,不應該侵入整個路由系統,如果每個業務頁面,都寫在全局路由系統,也會導致路由的邏輯過于復雜) 個人感覺比較好的實現方式

在配置路由的地方獲取服務器數據動態加載對應的組件

{ path: ’shopKPI’, // 如果提前把后臺數據存到store里面,在這里訪問store數據,可以直接判斷出來 // 但這種特定業務頁面的數據放全局store,其他地方也不用,實在沒有必要 component: () => import(’@/views/store/dataVersion’), name: ’store_KPI’, menuName: ’店鋪參謀’, meta: { codes: [’storeProduct.detail’] }}

理想很美好,現實的情況是,component接收的這個方法必須要同步的返回一個promise。

這時候我想到了上面不好的實現方式1,稍微加以改造

<!-- ChooseShopKPI.vue --><template> <dataVersion v-if='!useNewShopKPI' /> <ShopKPI v-else /></template><script>import { get } from ’lodash’;import { getStoreReportFormVersion } from ’@/api/store’;import dataVersion from ’./dataVersion’;import ShopKPI from ’./ShopKPI’;export default { name: ’ChooseShopKPI’, components: { dataVersion, ShopKPI, }, data() { return { useNewShopKPI: false }; }, created() { getStoreReportFormVersion().then((res) => { if (get(res, ’data.data.new’)) {this.useNewShopKPI = true; } }); },};</script><style lang='css' scoped></style>

把路由渲染對應的頁面,改為渲染這個中間頁面ChooseShopKPI

{ path: ’shopKPI’, // 如果提前把后臺數據取到,在這里訪問store數據,可以直接判斷出來 // 但這種特定業務頁面的數據放全局store,其他地方也不用,實在沒有必要- component: () => import(’@/views/store/dataVersion’),+ component: () => import(’@/views/store/ChooseShopKPI’), name: ’store_KPI’, menuName: ’店鋪參謀’, meta: { codes: [’storeProduct.detail’] }}

這樣就實現了我們期望的功能。

功能已實現,但我又開始了新的思考

這種方式雖然很好的解決了動態加載頁面組件的問題。但也產生了一些小問題。

如果這種通過服務器加載數據的頁面后續增加的話,會出現多個ChooseXXX的中間頁面。 這種中間頁面,實際上是做了二次路由,不熟悉邏輯的開發人員可能并不清楚這里面的頁面跳轉邏輯,增加了理解成本。最終方案——高階組件

通過對ChooseXXX進行抽象,改造為DynamicLoadComponent

<!-- DynamicLoadComponent.vue --><template> <component :is='comp' /></template><script>export default { name: ’DynamicLoadComponent’, props: { renderComponent: { type: Promise, }, }, data() { return { comp: () => this.renderComponent } }, mounted() {},};</script><style lang='css' scoped></style>

直接在路由的配置中獲取后臺數據,并進行路由的分發。這樣路由邏輯都集中在路由配置文件中,沒有二次路由。維護起來不會頭疼腦脹。

DynamicLoadComponent組件也得以復用,后續新增判斷后臺數據加載頁面的路由配置,都可以導向這個中間組件。

{ path: ’shopKPI’, component: () => import(’@/views/store/components/DynamicLoadComponent’), name: ’store_KPI’, menuName: ’店鋪參謀’, meta: { codes: [’storeProduct:detail’], }, props: (route) => ({ renderComponent: new Promise((resolve, reject) => { getStoreReportFormVersion().then((responseData) => { const useNewShopKPI = get(responseData, ’data.data.shop_do’); const useOldShopKPI = get( responseData, ’data.data.store_data_show’ ); if (useNewShopKPI) { resolve(import(’@/views/store/ShopKPI’)); } else if (useOldShopKPI) { resolve(import(’@/views/store/dataVersion’)); } else { resolve(import(’@/views/store/ShopKPI/NoKPIService’)); }}).catch(reject); }), })}

查看在線小例子(只支持chrome)https://stackblitz.com/edit/vuejs-starter-jsefwq?file=index.js

到此這篇關于Vue Router根據后臺數據加載不同的組件實現的文章就介紹到這了,更多相關Vue Router后臺數據加載不同的組件 內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Vue
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产中文在线播放| 久久国产精品久久久久久电车| 国产日韩中文在线中文字幕| 国产精品成人**免费视频| 国产中文字幕一区二区三区| 久久久久久久久久久妇女| 亚洲精品成人| 日韩 欧美一区二区三区| 欧美影院精品| 精品国产18久久久久久二百| 久久久水蜜桃av免费网站| 国产精品美女久久久浪潮软件| 日韩中出av| 风间由美中文字幕在线看视频国产欧美| 天堂中文在线播放| 国产精品97| 国产精品一区三区在线观看| av在线资源| 老司机久久99久久精品播放免费| 国产欧美高清视频在线| 久久久精品网| 日本aⅴ亚洲精品中文乱码 | 国产一区二区三区不卡av | 国产一区二区三区探花| 欧美高清一区| 日韩av一区二区在线影视| 97精品在线| 一区二区电影| 国产精品久久久久蜜臀| 奶水喷射视频一区| 久久一区亚洲| 久久亚洲影院| 日韩av二区| 羞羞答答国产精品www一本 | 日韩88av| 亚洲色图综合| 国产一区二区三区四区五区传媒| 丝袜脚交一区二区| 精品免费视频| 老司机精品久久| 卡一卡二国产精品| 国产亚洲高清视频| 国内自拍视频一区二区三区| 久久国产精品99国产| 国产91在线精品| 日本v片在线高清不卡在线观看| 91精品韩国| 石原莉奈在线亚洲二区| 亚洲精品成人图区| 亚洲一二av| 亚洲伦乱视频| 国产精品18| 免费日韩av片| 欧美成人精品| 动漫av一区| 欧美永久精品| 亚洲尤物在线| 久久激情中文| 欧美激情视频一区二区三区免费 | 日韩av电影一区| 亚洲女同中文字幕| 日韩成人精品一区| 欧美视频久久| 麻豆久久精品| 精品欧美一区二区三区在线观看| 国产亚洲欧美日韩在线观看一区二区| 99国产精品99久久久久久粉嫩| 精品视频国内| 91亚洲精品在看在线观看高清| 国产一区清纯| 理论片午夜视频在线观看| 国产精品一区二区三区av麻| 亚州av乱码久久精品蜜桃| 国产精品久久观看| 久久99久久久精品欧美| 亚洲九九精品| 99亚洲视频| 九色精品91| 999国产精品| 欧产日产国产精品视频| 日本一区二区高清不卡| 国语对白精品一区二区| 欧美国产三级| 国产免费av一区二区三区| 亚洲va久久| 老牛影视一区二区三区| 国产美女一区| 欧美.日韩.国产.一区.二区| 日韩黄色大片网站| 国产在线观看www| 久久久久久久欧美精品| 免费观看久久av| 日本精品影院| 亚洲午夜天堂| 精品国产欧美日韩一区二区三区| 在线国产精品一区| 香蕉成人久久| 爽好久久久欧美精品| 99国产一区| 视频一区中文字幕国产| 亚洲欧美日韩一区在线观看| 香蕉成人久久| 亚洲人成高清| 天堂va在线高清一区| 日本一区福利在线| 91亚洲精品在看在线观看高清 | 国产欧美日韩视频在线| 国产乱码精品一区二区三区四区 | 欧美日韩一二三四| 欧美色图国产精品| 视频一区中文| 亚洲激情精品| 三级亚洲高清视频| 亚洲精品影院在线观看| 日韩一区二区三区精品视频第3页 日韩一区二区三区免费视频 | 久久免费国产| 婷婷中文字幕一区| 日韩一区二区久久| 婷婷丁香综合| 久久xxxx| 亚洲97av| 国产精品视频首页| 国产精品久久久久久久免费观看 | 美女视频黄 久久| 成人在线免费观看网站| 高清av一区| 99精品视频精品精品视频| jiujiure精品视频播放| 丝袜亚洲另类欧美| 欧美视频久久| 国产福利片在线观看| 少妇精品导航| 免费成人av在线播放| 欧美日韩午夜电影网| 激情不卡一区二区三区视频在线| 欧美日韩视频免费观看| 香蕉久久国产| 欧美aaaaaa午夜精品| 国产 日韩 欧美一区| 蜜桃视频在线观看一区二区| 国产区精品区| 在线观看精品| 深夜日韩欧美| 色婷婷综合网| 久久性天堂网| 国产精品一区二区三区四区在线观看| 国产成人精品福利| 亚洲欧美日本视频在线观看| 国产三级一区| 久久中文字幕av| 日韩欧美中文字幕电影| 久久精品国产成人一区二区三区| 99久久夜色精品国产亚洲狼 | 免费观看在线综合| 精品国产一级| 国产一级久久| 久久丁香四色| 欧美特黄一级| 久久av免费| 亚洲婷婷在线| 欧美日一区二区在线观看| 色黄视频在线观看| 一区二区三区四区在线观看国产日韩| 久久这里只有精品一区二区| 一区二区亚洲精品| 欧美黄页在线免费观看| 在线日韩电影| 国产精品一级| 欧美精品一卡| 红杏一区二区三区| 亚洲永久精品唐人导航网址| 成人精品久久| 亚洲精选av| 日韩欧美自拍| 欧美日韩亚洲一区二区三区在线| 亚洲不卡av不卡一区二区| 日本免费新一区视频| 欧美日一区二区| 欧美激情一区| 亚洲综合色婷婷在线观看| 亚洲黄色中文字幕| 日韩美女国产精品| 亚洲电影在线一区二区三区| 久久影院资源站| 亚洲欧洲专区| 午夜久久免费观看| 成人在线丰满少妇av| 日本国产亚洲| 99热精品在线观看| 国产欧洲在线| 国产精品一二| 亚洲精品一区二区在线播放∴| 久久蜜桃av| 成人亚洲一区| 国产精久久久| 日本一区福利在线| 精品91久久久久| 久久天堂精品| a天堂资源在线| 国产伦精品一区二区三区在线播放|