成人怡红院-成人怡红院视频在线观看-成人影视大全-成人影院203nnxyz-美女毛片在线看-美女免费黄

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

深入解析vue中路由切換白屏的問題(附代碼)

之前的文章《淺析vue中complie數據雙向綁定原理(代碼詳解)》中,給大家了解了vue中complie數據雙向綁定原理。下面本篇文章給大家了解vue中路由切換白屏的問題,伙伴們來看看。

深入解析vue中路由切換白屏的問題(附代碼)

關于vue路由切換的白屏,事實上在開發的過程中,我一直沒有遇到過。

我有個哥們遇到這個問題,問我怎么解決的,我暈了,我沒遇到這樣的問題啊,我怎么解決啊啊啊啊。。

事實上是遇到過一回的。

以下內容于 2019-07-25 修改。

服務器部署配置問題

這個問題造成的白屏體現在:

首頁可以正常瀏覽,但是——通過$router.push('/home')跳轉頁面 正常,然后刷新就是白屏或 404

本不想在文章加入這個問題和解決方案,因為官網已經提供了正確的部署姿勢,(Vue 的路由模式自行查看文檔),主要是針對HTML5 History模式:

const router = new VueRouter({   mode: 'history',   routes: [...] })

devbuild都沒有問題,這個是肯定的,所以問題就出在服務器配置上,以nginx為例,正確的配置如下:

location / {   ....   try_files $uri $uri/ /index.html; #重點 }

Apache,原生 Node.js,IIS,CaddyFirebase 主機

請查看vur-router后端配置例子

地址:https://router.vuejs.org/zh/guide/essentials/history-mode.html#%E5%90%8E%E7%AB%AF%E9%85%8D%E7%BD%AE%E4%BE%8B%E5%AD%90

以上內容于 2019-07-25 修改。

以下內容于 2019-04-23 修改。

如果你是使用腳手架初始化環境,可以跳過這部分。如果自己配置webpack,可以接著看確定做了如下配置

devServer: {   ...   contentBase: false, //必須   historyApiFallback: true, //必須   ... }, entry: {     app: ['./src/main.js'],     vendors: ['vue', 'vue-router'] //注意這里 }, plugins: [   ....   new HtmlWebpackPlugin({     ...     chunks: ['vendors', 'app'], //注意這里,這里的chunks 要包含入口的 entry   }) ]

以上內容于2019-04-23修改。

場景一:IE9(兼容性問題)

嚴格來說不是白屏的問題,應該說是兼容性問題,直接就是不支持,報錯了,渲染無法執行造成的。解決方式就是

npm i babel-polyfill -D

然后在入口mian.js引入就完事了,就著么簡單

import "babel-polyfill";

或者

//webpack entry: {       app: ['babel-polyfill','./src/main.js'],       vendors: ['vue', 'vue-router'] },

以下內容于2019-04-23修改。

假如真的是js兼容性問題,那么真的只是引入babel-polyfill或者在webpack入口加入babel-polyfill問題就能解決嗎,其實不一定的,這個要看項目的使用情況。babel-polyfill不是萬能的。那么如何排查兼容性問題呢(假如真的是兼容性問題)。因為我們在手機上直接調試,有些錯誤不會那么容易顯而易見。我是這么調試的。(僅供參考!)

<template>   <div>     <!-- 錯誤直接顯示在這里. 不用 alert() ,console.log()  -->     {{error}} ...     <!-- other element -->   </div> </template> <script>   export default{     data{       return {         error:''       }     },     moundted:{       try{         //一些請求數據的方法       }catch(e){         //這里拋出異常         this.error = e       }     }   } </script>

這里要說的是有些兼容性問題是bable-polyfill搞不定的。比如URLSearchParams

let data = new URLSearchParams(); for (var key in params) {   data.append(key, params[key]); }

那么肯定會報URLSearchParams is not undefined,然后,錯誤只在一些低端的機型,一些偶然的場合出錯.加大了錯誤的排查。

以下可以解決URLSearchParams is not undefined

//# console npm i url-search-params-polyfill  //# mian.js import 'url-search-params-polyfill';

以上內容于2019-04-23修改。

場景二 :如下圖

有人說是在iphone 5s或者6s上會出現這種問題,肯定不是手機的bug。于是我重現了場景,真的和設備無關

深入解析vue中路由切換白屏的問題(附代碼)

所以這個跟設備真的沒有關系。知道問題所在,當然解決辦法也有許多

方案一:暴力愚蠢型

//路由跳轉前滾動條清零 document.body.scrollTop = document.documentElement.scrollTop = 0; this.$router.push({ path: "/a/b/c" });

方案二:可行但不可選型

//給router 加一個監聽,一旦改變,執行清零,然后再跳轉 let routers = new Router({.....}) routers.beforeEach(function (to, from, next) {     ......     document.body.scrollTop = document.documentElement.scrollTop = 0     next() })

雖然可行,但是感覺著么干有點愚蠢。因為還有更好的寫法,這個寫法更佳優雅

方案三:最佳型

其實官方已經提供了當路由切換時,控制滾動位置的方式。scrollBehavior

使用方式如下:

const router = new VueRouter({   routes: [...],   scrollBehavior (to, from, savedPosition) {     // return 期望滾動到哪個的位置 { x: number, y: number } |  { selector: string } |   } })

scrollBehavior方法接收tofrom路由對象。第三個參數savedPosition當且僅當popstate導航(通過瀏覽器的前進/后退按鈕觸發) 時才可用。

所以假如要解決白屏的問題,可以著么干

const router = new VueRouter({   routes: [...],   scrollBehavior (to, from, savedPosition) {     return savedPosition || { x: 0, y: 0 }   } })

也就是說,當用戶點擊返回、前進的時候,頁面會滾動到之前位置,(微信朋友圈的文章就是這樣的,讀一半返回,再進來接著剛才的位置閱讀)

如果是新的pagemounted進來的時候,就重置為 0 。

完美的解決了這個問題。

但是這也是個問題,框架為什么不默認呢,假如自定義的時候可以overwirte。

場景三: 緩存的原因(2019.4.15)

我們根據版本號(或者hash)去控制緩存問題,當我們發布新版本,會發現html里面引用的版本號卻是舊的版本號 ,這種情況是入口index.html文件被緩存了,很多時候我們設置禁止html文件被緩存,但依然會出現被緩存的情況。比如在頭部加

<meta http-equiv="Expires" content="0" /> <meta http-equiv="Pragma" content="no-cache" /> <meta http-equiv="Cache-control" content="no-cache" /> <meta http-equiv="Cache" content="no-cache" />

仍然解決不了問題,關于web的緩存策略,推薦這篇文章:Http緩存機制

一旦index.html被緩存了,之后我們使用了全量更新,也就是每次發版本之前會干掉之前的jscss文件,那么被緩存的index.html會無法加載之前舊的js,css還有一些其他的靜態資源文件,而新的jscss則不會被加載,那么白屏就誕生了。

這個時候我們就要配合服務端來解決index.html的緩存問題

解決緩存的問題請轉到這里:Vue index.html入口緩存問題

[完]

推薦學習:vue.js教程

贊(1)
分享到: 更多 (0)
?
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
女主被强迫侵犯H文| 欧美JIZZ18性欧美| 麻豆久久亚洲AV成人无码电影| 蜜桃视频在线观看一区二区三区| 欧美军警GAY巨大粗长| 日产精品一二三区| 铜铜铜铜铜铜铜铜铜好多深| 亚洲AV无码国产在丝袜线观看| 亚洲乱码国产乱码精品精姦| 宅男66LU国产在线观看| JIZZ成熟丰满| 国产AV无码专区亚洲AV毛网站| 国产午夜福利片1000无码| 久久精品无码一区二区软件| 欧美丰满熟妇BBBBBB百度| 色婷婷亚洲精品综合影院| 性少妇SEX麻豆HD中国| 亚洲欲色欲WWW怡红院| AV无码小缝喷白浆在线观看 | 久久精品夜色国产亚洲AV| 两毫米的小洞你却稳稳命中| 漂亮人妻被强中文字幕久久| 婷婷久久综合九色综合97最多收| 亚洲顶级裸体AV片| 2022精品久久久久久中文字幕| 厨房里挺进岳丰满大屁股| 国内精品国语自产拍在线观看| 老外又长又大插的太深了| 日本午夜免费福利视频| 亚洲AV熟妇高潮18P| 中国BBW50成熟| 丰满妇女强高潮ⅩXXX| 精品国内自产拍在线观看视频| 欧美精品亚洲精品日韩专区VA| 我国产码在线观看AV哈哈哈网站 | JK制服白丝自慰出水| 国产精品久久久久久久稀缺资源 | 人妻插B视频一区二区三区| 午夜天堂一区人妻| 中文国产成人精品久久APP| 厨房掀开馊了裙子挺进电影| 精品国产欧美一区二区| 欧美性狂猛XXXXX深喉| 小S货又想挨C了叫大声点小| 最新精品国偷自产在线婷婷 | 把腿张开老子臊烂你的漫画| 国精产品一区一区三区有限公司 | AV无码AV高潮AV喷吹免费| 国产精品久久久久久久久鸭| 免费无码观看的AV在线播放| 无码AV熟妇素人内射vr在线| 中文字幕AV在线一二三区| 国产精品VA无码一区二区| 麻花传媒剧国产MV高清播放| 无码A级毛片日韩精品| 中文无码乱人伦中文视频在线V| 国产AV无码专区亚洲AV毛网站| 乱码精品一区二区三区| 无码人妻熟妇AV又粗又大| 2017亚洲А∨天堂| 国模无码视频一区二区三区| 欧洲熟妇色XXXXⅩ| 亚洲精品无码少妇30P| 亚洲精品高清国产一线久久| 第九午夜不卡影院| 久久蜜桃86人妻arvi| 无码中文字幕VA精品影院| AV无码中文一区二区三区四区| 精产国品一二三产品区别在哪| 色老板在线影院播放| 用嘴巴吃鸡的好处| 国产一区二区三区导航| 日本伊人精品一区二区三区| 一区二区伊人久久大杳蕉| 国产精品无码久久综合| 欧洲洲一区二区精华液| 野花影视免费观看电视剧| 国产精品人成视频免费播放| 人妻少妇精品视频专区| 一本到无码AV专区无码| 国精产品一二三四线免费| 少妇高潮喷水正在播放| 99久久国产综合精品麻豆| 久久精品囯产精品亚洲| 无码少妇一区二区三区免费| 成人精品一区二区www| 免费精东传媒VS天美传媒| 亚洲精品无码aⅴ中文字幕蜜桃 | 亚洲AV无码乱码在线观看富二代 | 国产麻豆精品精东影业AV网站 | 亚洲欧美日韩精品久久| 国产精品日本一区二区在线播放 | 亚洲色一色鲁一鲁鲁| 国产香蕉尹人在线视频你懂的| 日日摸夜夜添夜夜添亚洲女人| 18成禁人视频免费网站| 久久99精品久久久久久久久久| 小洞饿了想吃大香肠| 干的你走不了路SB| 日本免费一区二区三区最新VR| 51精产国品一二三产区| 久久丫精品国产亚洲AV| 亚洲色欲色欲综合网站色偷偷| 国产综合无码一区二区色蜜蜜| 少妇性XXXXXXXXX色野| СЕКС日本ВИДЕ视频| 免费女性裸体啪啪无遮挡网站| 一区二区三区精品偷拍| 精品乱码一区内射人妻无码| 亚洲AV无码一区二区乱孑伦AS| 国产精品一国产AV麻豆| 天堂AV无码AV在线A√| 粉嫩AV一二三区免费| 日本适合18岁以上的护肤品| А√天堂网WWW在线搜索| 欧美人妻少妇精品视频专区| 666西方大但人文艺术| 免费看成人毛片无码视频| 一本之道AV不卡精品| 久久嫩草精品久久久久精品| 亚洲最大天堂无码精品区| 久久久久久精品免费不卡| 亚洲无码成人电影| 久久精品国产99国产精品导航| 亚洲欧洲AV综合色无码| 极品少妇的粉嫩小泬视频| 亚洲AV一二三又爽又色又色| 国产尤物亚洲精品不卡| 亚洲AV涩涩涩成人网站| 国产中年熟女高潮大集合| 亚洲AV涩涩涩成人网站| 黑人巨大精品欧美久久| 亚洲国产超清无码专区| 精品人妻系列无码人妻在线不 | 成人网站V片免费观看| 日韩欧美国产精品亚洲二区| 东北老女人高潮大叫对白| 熟妇人妻系列AV无码一区二区| 国产成人综合欧美精品久久 | 中文字幕亚洲乱码熟女一区二区 | 亚洲人成人无码.WWW石榴| 久久久久亚洲AV成人网人人软件 | 一边喘气一边叫疼的视频| 看中国日B大片大片| 696969C大但人文艺术作品| 欧美疯狂3p群体交乱视频丨zu| JIZZJIZZ日本护士视频| 日韩视频一区二区三区| 国产成年无码V片在线| 无码中文字幕日韩专区视频| 好爽好大再深点高H免费观看| 亚洲色成人网站WWW永久小说| 久久亚洲欧美国产精品| 2020国产精品久久久久精品| 青青青伊人色综合久久| 高清偷自拍亚洲精品三区| 小嫩模无套内谢第一次| 精品国产AⅤ一区二区三区| 岳打开双腿开始配合交换| 欧美人与禽ZOZZO| 丰满少妇女裸体BBW| 亚洲AV毛片成人精品| 久久久久久精品免费看SSS | 欧美午夜一区二区福利视频| 成 人片 黄 色 大 片| 五月丁香国产在线视频| 久久99热只有频精品8| 97AV麻豆蜜桃一区二区| 色AV综合AV综合无码网站| 国产亚洲欧美精品久久久| 一边做一边喷17P| 人妻夜夜爽天天爽三区麻豆AV网| 国产精品AV无码毛片久久| 亚洲熟女WWW一区二区三区| 男人的又粗又长又硬有白色液体| 成年免费手机毛片免费看无码| 午夜无码免费福利视频网址| 久久99精品久久久久婷婷暖| CHINESE农村老妓女| 无码人妻丰满熟妇一区二区三区| 久久AV无码精品人妻系列果冻| FREE东北熟女HD自拍| 无码专区无码专区视频网址| 久久天天躁夜夜躁狠狠躁2022| 菠萝菠萝蜜免费播放视频| 亚洲AV无码之国产精品| 妺妺窝人体色WWW人体色| 国产AV日韩A∨亚洲AV电影| 亚洲色播爱爱爱爱爱爱爱| 日本欧美一区二区三区乱码| 黑人双人RAPPER的特点| 9精产国品一二三产区| 无码少妇一区二区三区浪潮AV| 久久亚洲日韩AV一区二区三区| 成人性生交大片免费看好| 亚洲精品无码久久久久AV麻豆| 人妻色欲AV无码专区精油按摩| 好爽…又高潮了粉色视频| JΑPΑN丰满人妻HDXXXX| 亚洲AV成人无码精品直播在线|