摘要:介紹最近開始刷一些書和題此系列是介紹在讀最佳實(shí)踐的一些收獲和體會(huì)。先修改諸如命名,格式等不涉及具體邏輯的內(nèi)容重構(gòu)過程中要持續(xù)測試,在多個(gè)瀏覽器測試,確保重構(gòu)的部分功能正確。
介紹
最近開始刷一些書和題,此系列是介紹在讀Web最佳實(shí)踐的一些收獲和體會(huì)。
存在問題:
代碼組織混亂
代碼格式的問題突出
頁面布局隨意
網(wǎng)站整體性能差,沒有意識(shí)到應(yīng)用諸如緩存,動(dòng)態(tài)加載,腳本壓縮,圖片壓縮等提高性能技術(shù)
推薦做法:
壓縮樣式表和腳本文件
減少HTTP請求次數(shù)
簡潔和符合W3C標(biāo)準(zhǔn)的HTML和CSS代碼能減少瀏覽器解析的時(shí)間,加快渲染過程
頁面請求數(shù)量越少,相對(duì)頁面的加載速度更快
在JS代碼中選擇性能更好的實(shí)現(xiàn)方案,如延遲加載,動(dòng)態(tài)加載等技術(shù);
延遲加載
最后加載
引入外部js腳本文件時(shí),如果放入html的head中,則頁面加載前該js腳本就會(huì)被加載入頁面,而放入body中,則會(huì)按照頁面從上倒下的加載順序來運(yùn)行javascript的代碼,所以可以把js外部引入的文件放到頁面底部,來讓js最后引入,從而加快頁面加載速度
動(dòng)態(tài)加載
s1.src="test.js"
刪除無用代碼,精簡代碼(不起作用的CSS樣式和廢棄的JavaScript函數(shù))
前端代碼規(guī)范化,把CSS代碼放到獨(dú)立的文件中,在JS定義局部變量,把部分全局變量改變成局部變量
前端代碼模塊化,引入面向?qū)ο蟮乃枷雭碇貥?gòu)JavaScript代碼,進(jìn)一步明確公有接口和私有接口
提高頁面性能:
將部分不影響首頁展示的JS文件延遲到頁面的加載后加載
刪除頁面中初始隱藏的區(qū)域,改為通過JS按需動(dòng)態(tài)生成
頁面中的部分圖片延遲加載
調(diào)整CSS和JS文件引用順序,即CSS在前,JS在后
給靜態(tài)文件設(shè)置緩存,使用CSS Sprite,合并背景圖
合并和壓縮發(fā)布后的CSS和JS代碼模塊
前端重構(gòu)最佳實(shí)踐
重構(gòu)前一定要預(yù)測風(fēng)險(xiǎn),最好先完善自動(dòng)化測試代碼
重構(gòu)的目的和范圍要明確,提高代碼的可維護(hù)性,可讀性和性能
最好先易后難,循序漸進(jìn)。先修改諸如命名,格式等不涉及具體邏輯的內(nèi)容
重構(gòu)過程中要持續(xù)測試,在多個(gè)瀏覽器測試,確保重構(gòu)的部分功能正確。切記大量重構(gòu)后再進(jìn)行測試,因?yàn)榇罅恐貥?gòu)后基本很難記得重構(gòu)的邏輯,也可能遺漏部分測試用例
性能提升,先進(jìn)行檢測網(wǎng)站的整體性能并量化,找出性能瓶頸。重構(gòu)過程中要持續(xù)監(jiān)控性能,并進(jìn)行對(duì)比
項(xiàng)目需求
調(diào)查項(xiàng)目是否需要AJAX操作
是否需要模塊化
數(shù)據(jù)傳輸格式JSON或者XML
需要支持的瀏覽器
移動(dòng)還是普通網(wǎng)站
需要的UI模塊(模態(tài)窗口,滑塊控件,進(jìn)度條,提示框,分割框,幻燈顯示,自動(dòng)填充)
項(xiàng)目的特點(diǎn)
框架的特點(diǎn)
編寫高質(zhì)量,標(biāo)準(zhǔn)的HTML(標(biāo)準(zhǔn)校驗(yàn)工具,ESLint, Flow, JSDoc, ts)
明確瀏覽器支持范圍
Chrome和Safari IE Tester(IE兼容測試工具
避免瀏覽器兼容性的問題
先考慮更改方案,使用沒有兼容問題的代碼
考慮如何兼容的問題
兼容IE,使用IE特有的條件表達(dá)式(hack)
讓兼容的代碼獨(dú)立,提高代碼的可維護(hù)性
HTML5新特性
新標(biāo)簽的兼容,CSS3的兼容,新增的API(使用html5shiv框架)
CSS3本身不支持,會(huì)直接忽略
新增加的接口的使用,必須添加條件判斷(Modernizr)
多看Can I use
YSlow,pagespeed
基于不同的規(guī)則評(píng)定網(wǎng)站整體性能評(píng)分
給出提高網(wǎng)頁性能的建議
統(tǒng)計(jì)頁面加載的組件
頁面的統(tǒng)計(jì)信息視圖
相關(guān)性能分析工具集:Smush.it
Chrome開發(fā)工具
Network中可以查看各資源請求和下載所用的時(shí)間
Timeline可以查看網(wǎng)頁渲染和交互過程中個(gè)步驟所花費(fèi)的時(shí)間,從資源到JS的解析執(zhí)行,樣式的應(yīng)用和繪制
Profiles中可以查看網(wǎng)頁的CPU及內(nèi)存占有情況報(bào)告
Audits中提供了各種資源和配置優(yōu)化的建議和未使用CSS規(guī)則的列表
加快代碼和資源文件傳輸?shù)姆绞?/p>
CDN分發(fā)
緩存(meta)
壓縮代碼和資源文件(最優(yōu))
Gzip算法(壓縮,header可以檢查是否開啟)
JS壓縮(UglifyJS壓縮和優(yōu)化,YUI Compressor 僅壓縮,Closure Compiler壓縮和優(yōu)化)
CSS(CSS Compressor,YUI Compressor)
HTML(HtmlCompressor使用時(shí)仔細(xì)調(diào)查和測試,避免壓縮工具和破壞)
圖片資源壓縮(TinyPNG,JPEGmini,ImageOptim)
Airbnb規(guī)范: https://github.com/airbnb/jav...
Eslint規(guī)范: https://eslint.org/docs/rules/
Beachmark.js性能測試: https://benchmarkjs.com/docs#toc
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/88906.html
摘要:介紹最近開始刷一些書和題此系列是介紹在讀最佳實(shí)踐的一些收獲和體會(huì)。先修改諸如命名,格式等不涉及具體邏輯的內(nèi)容重構(gòu)過程中要持續(xù)測試,在多個(gè)瀏覽器測試,確保重構(gòu)的部分功能正確。 介紹 最近開始刷一些書和題,此系列是介紹在讀Web最佳實(shí)踐的一些收獲和體會(huì)。 showImg(https://segmentfault.com/img/remote/1460000011465909?w=309&...
摘要:介紹最近開始刷一些書和題此系列是介紹在讀最佳實(shí)踐的一些收獲和體會(huì)。先修改諸如命名,格式等不涉及具體邏輯的內(nèi)容重構(gòu)過程中要持續(xù)測試,在多個(gè)瀏覽器測試,確保重構(gòu)的部分功能正確。 介紹 最近開始刷一些書和題,此系列是介紹在讀Web最佳實(shí)踐的一些收獲和體會(huì)。 showImg(https://segmentfault.com/img/remote/1460000011465909?w=309&...
摘要:代碼符合標(biāo)準(zhǔn)標(biāo)準(zhǔn)的頁面會(huì)保證正確的渲染頁面容易被搜索引擎搜索,提高搜索排名提高網(wǎng)站的易用性網(wǎng)頁更好維護(hù)和擴(kuò)展,屬于插件停止使用不標(biāo)準(zhǔn)的標(biāo)簽和屬性,簡化代碼標(biāo)簽沒有實(shí)際意義,僅設(shè)置樣式不推薦使用不推薦使用,讓擁有更好的語義移除不常用的標(biāo)簽樣式 代碼符合標(biāo)準(zhǔn) 標(biāo)準(zhǔn)的頁面會(huì)保證正確的渲染 頁面容易被搜索引擎搜索,提高搜索排名(SEO) 提高網(wǎng)站的易用性 網(wǎng)頁更好維護(hù)和擴(kuò)展(Validato...
摘要:代碼符合標(biāo)準(zhǔn)標(biāo)準(zhǔn)的頁面會(huì)保證正確的渲染頁面容易被搜索引擎搜索,提高搜索排名提高網(wǎng)站的易用性網(wǎng)頁更好維護(hù)和擴(kuò)展,屬于插件停止使用不標(biāo)準(zhǔn)的標(biāo)簽和屬性,簡化代碼標(biāo)簽沒有實(shí)際意義,僅設(shè)置樣式不推薦使用不推薦使用,讓擁有更好的語義移除不常用的標(biāo)簽樣式 代碼符合標(biāo)準(zhǔn) 標(biāo)準(zhǔn)的頁面會(huì)保證正確的渲染 頁面容易被搜索引擎搜索,提高搜索排名(SEO) 提高網(wǎng)站的易用性 網(wǎng)頁更好維護(hù)和擴(kuò)展(Validato...
摘要:代碼符合標(biāo)準(zhǔn)標(biāo)準(zhǔn)的頁面會(huì)保證正確的渲染頁面容易被搜索引擎搜索,提高搜索排名提高網(wǎng)站的易用性網(wǎng)頁更好維護(hù)和擴(kuò)展,屬于插件停止使用不標(biāo)準(zhǔn)的標(biāo)簽和屬性,簡化代碼標(biāo)簽沒有實(shí)際意義,僅設(shè)置樣式不推薦使用不推薦使用,讓擁有更好的語義移除不常用的標(biāo)簽樣式 代碼符合標(biāo)準(zhǔn) 標(biāo)準(zhǔn)的頁面會(huì)保證正確的渲染 頁面容易被搜索引擎搜索,提高搜索排名(SEO) 提高網(wǎng)站的易用性 網(wǎng)頁更好維護(hù)和擴(kuò)展(Validato...
閱讀 2322·2023-04-26 00:01
閱讀 809·2021-10-27 14:13
閱讀 1840·2021-09-02 15:11
閱讀 3392·2019-08-29 12:52
閱讀 542·2019-08-26 12:00
閱讀 2574·2019-08-26 10:57
閱讀 3416·2019-08-26 10:32
閱讀 2859·2019-08-23 18:29