比于早些年前后端代碼緊密耦合、后端工程師還得寫前端代碼的時(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會更長。
1. FCP優(yōu)化
在 Google 提出的以用戶為中心的四個(gè)頁面性能衡量指標(biāo)中,F(xiàn)P/FCP可能是開發(fā)者們最熟悉的了
為了優(yōu)化首屏渲染時(shí)間這個(gè)指標(biāo),減少白屏?xí)r間,前端仔們想了很多辦法:
這里要介紹的就是優(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)鍵渲染路徑。可以看一下下面Facebook的骨架屏實(shí)現(xiàn),可以看到在頁面完全渲染完成之前,用戶會看到一個(gè)樣式簡單,描繪了當(dāng)前頁面的大致框架的骨架屏頁面,然后骨架屏中各個(gè)占位部分被實(shí)際資源完全替換,這個(gè)過程中用戶會覺得內(nèi)容正在逐漸加載即將呈現(xiàn),降低了用戶的焦躁情緒,使得加載過程主觀上變得流暢。
可以看一下下面的示例圖,第一個(gè)為骨架屏,第二個(gè)為菊花圖,第三個(gè)為無優(yōu)化,可以看到相比于傳統(tǒng)的菊花圖會在感官上覺得內(nèi)容出現(xiàn)的流暢而不突兀,體驗(yàn)更加優(yōu)良。
如今這項(xiàng)技術(shù)已經(jīng)在Facebook、Google、支付寶、餓了么、簡書、新浪微博、知乎、美團(tuán)、領(lǐng)英等公司的產(chǎn)品中被廣泛的使用。在論壇和社區(qū)也都有不少文章討論骨架屏的實(shí)現(xiàn)和使用場景等。
3. 生成骨架屏的方法
生成骨架屏的方式主要有:
另外還有個(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就能看到效果了~
比于早些年前后端代碼緊密耦合、后端工程師還得寫前端代碼的時(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會更長。
由此引申出一系列的優(yōu)化方法,骨架屏也因此被提出,本文就以 Vue 項(xiàng)目中的骨架屏為例,探討一下骨架屏的優(yōu)缺點(diǎn)和注入方式。
感興趣的同學(xué)可以加一下微信群,一起討論吧~
在 Google 提出的以用戶為中心的四個(gè)頁面性能衡量指標(biāo)中,F(xiàn)P/FCP可能是開發(fā)者們最熟悉的了:
為了優(yōu)化首屏渲染時(shí)間這個(gè)指標(biāo),減少白屏?xí)r間,前端仔們想了很多辦法:
這里要介紹的就是優(yōu)化用戶等待體驗(yàn)的骨架屏,它可以被視為是原來加載菊花圖的一種升級版,結(jié)合傳統(tǒng)的首屏優(yōu)化方法對應(yīng)用進(jìn)行優(yōu)化可以達(dá)到不錯(cuò)的效果。
骨架屏可以理解為是當(dāng)數(shù)據(jù)還未加載進(jìn)來前,頁面的一個(gè)空白版本,一個(gè)簡單的關(guān)鍵渲染路徑。可以看一下下面Facebook的骨架屏實(shí)現(xiàn),可以看到在頁面完全渲染完成之前,用戶會看到一個(gè)樣式簡單,描繪了當(dāng)前頁面的大致框架的骨架屏頁面,然后骨架屏中各個(gè)占位部分被實(shí)際資源完全替換,這個(gè)過程中用戶會覺得內(nèi)容正在逐漸加載即將呈現(xiàn),降低了用戶的焦躁情緒,使得加載過程主觀上變得流暢。
可以看一下下面的示例圖,第一個(gè)為骨架屏,第二個(gè)為菊花圖,第三個(gè)為無優(yōu)化,可以看到相比于傳統(tǒng)的菊花圖會在感官上覺得內(nèi)容出現(xiàn)的流暢而不突兀,體驗(yàn)更加優(yōu)良。
如今這項(xiàng)技術(shù)已經(jīng)在Facebook、Google、支付寶、餓了么、簡書、新浪微博、知乎、美團(tuán)、領(lǐng)英等公司的產(chǎn)品中被廣泛的使用。在論壇和社區(qū)也都有不少文章討論骨架屏的實(shí)現(xiàn)和使用場景等。
生成骨架屏的方式主要有:
另外還有個(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è)文件,實(shí)例跑起來之后在 Chrome 的 DevTools 中把 network 的網(wǎng)速調(diào)為 Gast3G/Slow3G 就能看到效果了~
信ID:WEB_wysj(點(diǎn)擊關(guān)注) ◎ ◎ ◎ ◎ ◎◎◎◎◎一┳═┻︻▄
(頁底留言開放,歡迎來吐槽)
● ● ●
前 言
晚上逛論壇看到一篇對從事HTML5前端開發(fā)的文章寫的非常不錯(cuò),和目前的市場形勢差不多,然后我在其基礎(chǔ)上給大家進(jìn)行加工總結(jié)一下分享給大家.今天我們談?wù)摰脑掝}是<<為什么從事HTML5前端開發(fā)越來越火,工資高,并且還漲的快>>,針對這個(gè)問題進(jìn)行分析分析.
俗話說的好:”沒有調(diào)查,就沒有發(fā)言權(quán)”,同樣在市場浪潮中,同樣如果沒有實(shí)際調(diào)查,不要輕易發(fā)表言論,誤導(dǎo)他人.
現(xiàn)在主要從下面幾個(gè)方面給大家進(jìn)行總結(jié)和分析呢?
目 錄
HTML5前端開發(fā)的薪資
市場的供求關(guān)系
HTML5語言優(yōu)勢
HTML5前端開發(fā)的薪資
首先我們來看看2016年上半年前端端開發(fā)的薪資情況(參考了拉勾網(wǎng),智聯(lián)招聘,51job,前程無憂,Boss直聘上的數(shù)據(jù))。
1.我們來看看北京的薪資情況
說明:北京前端開發(fā)平均工資:¥10576元/月
2.我們來看看廣州的薪資情況
說明:廣州前端開發(fā)平均工資:¥8124元/月
3.我們來看看上海的薪資情況
說明:上海前端開發(fā)平均工資:¥9270元/月
4.我們來看看深圳的薪資情況
說明:深圳前端開發(fā)平均工資:¥11464元/月
因此綜上的統(tǒng)計(jì)供大家參考.在技術(shù)類里,HTML5技術(shù)能力的值錢程度很突出,名列前茅。這正代表了前端技術(shù)的當(dāng)前行情。現(xiàn)在HTML5 有過1-2年工作經(jīng)驗(yàn)的,跳槽工資的漲幅只高不低.
那么問題來了,導(dǎo)致這一現(xiàn)象的原因是什么呢?看下面分析……
具體分析點(diǎn)擊“閱讀原文”
???
*請認(rèn)真填寫需求信息,我們會在24小時(shí)內(nèi)與您取得聯(lián)系。