真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

淺談Vue項(xiàng)目骨架屏注入實(shí)踐-創(chuàng)新互聯(lián)

相比于早些年前后端代碼緊密耦合、后端工程師還得寫前端代碼的時(shí)代,如今已發(fā)展到前后端分離,這種開發(fā)方式大大提升了前后端項(xiàng)目的可維護(hù)性與開發(fā)效率,讓前后端工程師關(guān)注于自己的主業(yè)。然而在帶來便利的同時(shí),也帶來了一些弊端,比如首屏渲染時(shí)間(FCP)因?yàn)槭灼列枰埱蟾鄡?nèi)容,比原來多了更多HTTP的往返時(shí)間(RTT),這造成了白屏,如果白屏?xí)r間過長,用戶體驗(yàn)會大打折扣,如果用戶網(wǎng)速差,則FCP會更長。

創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比興隆網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式興隆網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋興隆地區(qū)。費(fèi)用合理售后完善,10多年實(shí)體公司更值得信賴。

由此引申出一系列的優(yōu)化方法,骨架屏也因此被提出。

1. FCP優(yōu)化

在 Google 提出的以用戶為中心的四個(gè)頁面性能衡量指標(biāo)中,F(xiàn)P/FCP可能是開發(fā)者們最熟悉的了:

淺談Vue項(xiàng)目骨架屏注入實(shí)踐

為了優(yōu)化首屏渲染時(shí)間這個(gè)指標(biāo),減少白屏?xí)r間,前端仔們想了很多辦法:

加速或減少HTTP請求損耗 :使用CDN加載公用庫,使用強(qiáng)緩存和協(xié)商緩存,使用域名收斂,小圖片使用Base64代替,使用Get請求代替Post請求,設(shè)置 Access-Control-Max-Age 減少預(yù)檢請求,頁面內(nèi)跳轉(zhuǎn)其他域名或請求其他域名的資源時(shí)使用瀏覽器prefetch預(yù)解析等;

延遲加載 :非重要的庫、非首屏圖片延遲加載,SPA的組件懶加載等;

減少請求內(nèi)容的體積 :開啟服務(wù)器Gzip壓縮,JS、CSS文件壓縮合并,減少cookies大小,SSR直接輸出渲染后的HTML等;

瀏覽器渲染原理 :優(yōu)化關(guān)鍵渲染路徑,盡可能減少阻塞渲染的JS、CSS;

 優(yōu)化用戶等待體驗(yàn) :白屏使用加載進(jìn)度條、菊花圖、骨架屏代替等;

這里要介紹的就是優(yōu)化用戶等待體驗(yàn)的骨架屏,它可以被視為是原來加載菊花圖的一種升級版,結(jié)合傳統(tǒng)的首屏優(yōu)化方法對應(yīng)用進(jìn)行優(yōu)化可以達(dá)到不錯(cuò)的效果。

2. 骨架屏

骨架屏可以理解為是 當(dāng)數(shù)據(jù)還未加載進(jìn)來前,頁面的一個(gè)空白版本 ,一個(gè)簡單的關(guān)鍵渲染路徑??梢钥匆幌孪旅鍲acebook的骨架屏實(shí)現(xiàn),可以看到在頁面完全渲染完成之前,用戶會看到一個(gè)樣式簡單,描繪了當(dāng)前頁面的大致框架的骨架屏頁面,然后骨架屏中各個(gè)占位部分被實(shí)際資源完全替換,這個(gè)過程中用戶會覺得內(nèi)容正在逐漸加載即將呈現(xiàn),降低了用戶的焦躁情緒,使得加載過程主觀上變得流暢。

淺談Vue項(xiàng)目骨架屏注入實(shí)踐

可以看一下下面的示例圖,第一個(gè)為骨架屏,第二個(gè)為菊花圖,第三個(gè)為無優(yōu)化,可以看到相比于傳統(tǒng)的菊花圖會在感官上覺得內(nèi)容出現(xiàn)的流暢而不突兀,體驗(yàn)更加優(yōu)良。

淺談Vue項(xiàng)目骨架屏注入實(shí)踐

如今這項(xiàng)技術(shù)已經(jīng)在Facebook、Google、支付寶、餓了么、簡書、新浪微博、知乎、美團(tuán)、領(lǐng)英等公司的產(chǎn)品中被廣泛的使用。在論壇和社區(qū)也都有不少文章討論骨架屏的實(shí)現(xiàn)和使用場景等。

3. 生成骨架屏的方法

生成骨架屏的方式主要有:

手寫HTML、CSS的方式為目標(biāo)頁定制骨架屏 做法可以參考 ,主要思路就是使用vue-server-renderer 這個(gè)本來用于服務(wù)端渲染的插件,用來把我們寫的 .vue 文件處理為 HTML ,插入到頁面模板的掛載點(diǎn)中,完成骨架屏的注入。這種方式不甚文明,如果頁面樣式改變了,還得改一遍骨架屏,增加了維護(hù)成本。 骨架屏的樣式實(shí)現(xiàn)參考CodePen

使用圖片作為骨架屏; 簡單暴力,讓UI同學(xué)花點(diǎn)功夫吧哈哈;小米商城的移動端頁面采用的就是這個(gè)方法,它是使用了一個(gè)Base64的圖片來作為骨架屏。

自動生成并自動插入靜態(tài)骨架屏 這種方法跟第一種方法類似,不過是自動生成骨架屏,可以關(guān)注下餓了么開源的插件page-skeleton-webpack-plugin ,它根據(jù)項(xiàng)目中不同的路由頁面生成相應(yīng)的骨架屏頁面,并將骨架屏頁面通過 webpack 打包到對應(yīng)的靜態(tài)路由頁面中,不過要注意的是這個(gè)插件目前只支持history方式的路由,不支持hash方式,且目前只支持首頁的骨架屏,并沒有組件級的局部骨架屏實(shí)現(xiàn),作者說以后會有計(jì)劃實(shí)現(xiàn) (issue9) 。

另外還有個(gè)插件 vue-skeleton-webpack-plugin ,它將插入骨架屏的方式由手動改為自動,原理在構(gòu)建時(shí)使用 Vue 預(yù)渲染功能,將骨架屏組件的渲染結(jié)果 HTML 片段插入 HTML 頁面模版的掛載點(diǎn)中,將樣式內(nèi)聯(lián)到 head 標(biāo)簽中。這個(gè)插件可以給單頁面的不同路由設(shè)置不同的骨架屏,也可以給多頁面設(shè)置,同時(shí)為了開發(fā)時(shí)調(diào)試方便,會將骨架屏作為路由寫入router中,可謂是相當(dāng)體貼了。

vue-skeleton-webpack-plugin 的具體使用參考vue-style-codebase ,主要關(guān)注build目錄的幾個(gè)文件,線上Demo 在Chrome的DevTools中把network的網(wǎng)速調(diào)為 Gast 3G / Slow 3G 就能看到效果了~

網(wǎng)上的帖子大多深淺不一,甚至有些前后矛盾,在下的文章都是學(xué)習(xí)過程中的總結(jié),如果發(fā)現(xiàn)錯(cuò)誤,歡迎留言指出~

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。


當(dāng)前標(biāo)題:淺談Vue項(xiàng)目骨架屏注入實(shí)踐-創(chuàng)新互聯(lián)
當(dāng)前地址:http://weahome.cn/article/pepee.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部