Ⅰ 前端工程師如何快速提升用戶體驗
用戶的體驗來自於產品的設計,而產品的設計來自於產品經理。
產品經理需要對用戶行為,市場做調研,然後設計產品,交由研發人員開發。
跟前端工程師不搭邊。
當然前端工程師要想有自己的想法可以多體驗體驗類似的比較成熟的產品,參考之中出現創新。
Ⅱ Web前端入門知識之Web前端性能優化
今天小編要跟大家分享的文章是關於Web前端入門知識之Web前端性能優化。性能優化一直以來都是前端工程領域中的一個重要部分。很多資料表明,網站應用的性能優化對於提高用戶留存、轉化率等都有積極影響。可以理解為,提升你的網站性能,就是提升你的業務數據(甚至是業務收入)。
性能優化廣義上包含前端優化和後端優化。後端優化的關注點更多的時候是在增加資源利用率、降低資源成本以及提高穩定性上。相較於後端,前端的性能優化會更直接與用戶的體驗掛鉤。從用戶體驗側來說,前端服務
5s的載入時間優化縮減80%(1s)與後端服務50ms的響應優化縮減80%(10ms)
相比,用戶的體驗提升會更大。因此很多時候,與體驗相關的性能的瓶頸會出現在前端。
作為前端工程師,大家其實都具備一定的性能優化意識,同時也有自己的優化「武器庫」,例如懶載入、資源合並、避免reflow
等等。雖然大家對性能優化都有自己的思路,不過大多是分散在某幾個點,較難形成一個完整的體系。下面來和小編一起看一看web前端性能優化該怎麼做。
一、html文檔結構標簽語義化
1、首先什麼是語義化呢?
語義化是指用合理HTML標記以及其特有的屬性去格式化文檔內容。機器在需要更少的人類干預的情況下能夠研究和收集信息,讓網頁能夠被機器理解,最終讓人類受益。即用正確的標簽做正確的事。
2、語義化的好處或者說存在的意義
①有利於搜索引擎抓取
②結構清晰的HTML在團隊合作中的作用:代碼可讀、便於維護、提高開發效率、快速達成共識、利於二次開發。
③有利於盲人屏幕閱讀器
二、css、js文件數量及大小
優化一般對於css、js是建議使用外聯式來進行導入。我們可以對css、js做相應的規劃也可以減少css、js的個數以減少http請求。同時也要注重減少重復代碼,注重代碼重復利用,以達到用最少的代碼干最多的事。同時當項目要投入上線使用的時候,可以對css、js文件進行壓縮,文件的減小可以加速文件的鏈接導入,以便加速網頁的載入渲染。
可通過使用webpack,gulp等工具對Js文件進行合並。
三、圖片的數量和大小
多個伺服器請求會對站點的性能產生顯著的影響。對一張圖片進行導入又是一個http請求,因此我們應該減少圖片的導入數量以便減少http請求。此處,我們必須提到一個名詞「css精靈spirit」。css精靈是指包含多個不同的圖標、按鈕或圖形的單個圖像。因此我們可以把多張背景圖片合並為一張然後對背景圖片進行相應的定位。同時使用PNG8格式的圖片相對於GIF來說比較少。而對於內容圖片,可以對其進行適當的壓縮,可以加快文檔內容載入,或者如果是需要用戶下載的圖片,小的圖片可以加快用戶下載的速度。
使用較為廣泛的web圖片格式有:JPEG/JPG、PNG、WEBP、Base64、SVG。
1.JPEG/JPG
特點是有損壓縮,體積小,載入快,不支持透明。
使用場景:JPG適合用於呈現熱菜豐富的圖片,在日常的開發中,JPG圖片經常作為大的背景圖、輪播圖或是Banner圖。比如兩大電商網站對大圖片的處理,就是對JPG圖片應用場景的最佳寫照。用JPG來呈現大圖片,既可以保留圖片的質量,又不會擔心圖片的體積,是一種比較廣泛使用的方案。
缺點:在處理一些矢量圖形和logo等這些線條感很強、顏色對比強烈的圖片時,認為壓縮就導致圖片模糊非常明顯。另外,JPG圖像不支持透明度處理,透明圖片只能用PNG來呈現了。
2.PNG-8和PNG-24
特點是無損壓縮、質量高、體積大、支持透明
優點:無損壓縮的高保真圖片格式。8和24都是二進制數的位數,8位的PNG支持256中顏色,24位的PNG可以支持1600萬種顏色。在不考慮文件大小隻在乎最佳的顯示效果時,推薦使用PNG-24。但是在適合使用PNG時會優先選擇PNG-8
應用場景:主要用PNG來呈現小的LOGO、顏色簡單對比強烈的圖片或是背景。
3.SVG
特點是文本文件,體積小,不失真,兼容性好
優點:SVG是一種基於XML語法的圖像格式。SVG對圖像的處理不是基於像素,而是基於對圖像的形狀描述。
和JPG、PNG相比較,SVG文件體積更小,可壓縮性更強。SVG作為矢量圖最大的優點在於圖片可以無限放大還不失真,一張SVG圖片可以適配多種解析度。另外SVG是文本文件,可以像寫代碼一樣定義SVG,放在HTML中稱為DOM的一部分。也可以把對圖像的描述寫入以.svg為後綴的文件中,在img標簽中引入即可。
4.WebP
優點:WebP是一款比JPG、PNG等在壓縮方面更加優越的圖片格式,同時也不會影響其圖片質量,使用該格式時最好將同名文件格式化,當檢測瀏覽器不兼容時自動切換jpg格式
缺點:是一個相對較新的技術,所以對於目前市面上的瀏覽器能否完美的兼容,其可用和實用性就變得很現實了,再好的東西如果沒有好的兼容性,也是非常難以普及和被廣泛使用的
5.Base64
優點:減少請求,加快首屏數據顯示。對於jpg格式的圖片,每一個圖片相當於一次http請求,圖片多了的話,伺服器耗性能比較嚴重。而將jpg轉化成base64格式的圖片,則極大地減少了請求數,因為Base是文本格式。
缺點:base64格式圖片比原圖大,佔用更多存儲空間,同時,瀏覽器不會對該資源緩存。
使用方法:background:url(data:image/png;base64,{img_data})
應用場景:一般對於小於10KB大小的圖片進行base64轉碼。
至於動態圖有GIF與APNG:後者APNG這東西是mozilla搞出來的,
它是24位的,而且也是動圖,可以容納1680萬種顏色,也是為了取代GIF,但是....也就火狐支持,IE10和chrome,safari全部不行,
如果說gif圖片是卡片機的話,APNG就是單反
四、有效性驗證
除了根據語義加標記之外,HTML文檔還需要用有效的代碼來編寫,如果代碼是無效的,瀏覽器會嘗試解釋標記本身,有時候會產生錯誤的結果。更糟的是,如果發送具有正確的MIME類型的XHTML文檔,理解XML的瀏覽器將不顯示無效的頁面。因為瀏覽器需要知道要使用什麼DTD(文檔類型定義)才能正確地處理頁面,所以對頁面進行有效性驗證要求有DOCTYPE聲明。
有效性驗證工具徑:
①
W3C驗證器(bookmarklet),這是一小段可以存儲在瀏覽器的書簽或收藏夾中的Javascript。單擊這個書簽就會觸發Javascript動作。
②可以訪問http://validator.w3.org/,通過輸入自己的URL來對自己的站點來進行在線驗證。
③使用firefox瀏覽器的可以下載插件FirefoxWebDeveloperExtension
五、雅虎的Web優化最佳實踐
1、內容優化
①盡量減少HTTP請求:常見方法包括合並多個CSS文件和JavaScript文件,利用CSSSprites整合圖像,Image
map(圖像中不同的區域設置不同的鏈接),內聯圖象(使用data:URLscheme在實際的頁面嵌入圖像數據)等。
②減少DNS查找,一般dns查找需要花費20-120ms,Windows的DNS緩存,可以通過ipconfig/displaydns
這個命令來查看。
③避免重定向
④使Ajax可緩存
⑤延遲載入組件:考慮哪些內容是頁面呈現時所必需首先載入的、哪些內容和結構可以稍後再載入,根據這個優先順序進行設定。
⑥
預載入組件:預載入是在瀏覽器空閑時請求將來可能會用到的頁面內容(如圖像、樣式表和腳本)。當用戶要訪問下一個頁面時,頁面中的內容大部分已經載入到緩存中了,因此可以大大改善訪問速度。
⑦減少DOM元素數量:頁面中存在大量DOM元素,會導致JavaScript遍歷DOM的效率變慢。
⑧根據域名劃分頁面內容:把頁面內容劃分成若幹部分可以使你最大限度地實現平行下載。但要確保你使用的域名數量在2個到4個之間(否則與第2條沖突)。
⑨最小化iframe的數量:iframes
提供了一個簡單的方式把一個網站的內容嵌入到另一個網站中。但其創建速度比其他包括JavaScript和CSS的DOM元素的創建慢了1-2個數量級。
⑩
避免404:HTTP請求時間消耗是很大的,因此使用HTTP請求來獲得一個沒有用處的響應(例如404沒有找到頁面)是完全沒有必要的,它只會降低用戶體驗而不會有一點好處。
2、伺服器優化
①使用內容分發網路(CDN):把你的網站內容分散到多個、處於不同地域位置的伺服器上可以加快下載速度。
添加Expires或Cache-Control信息頭:對於靜態內容,可設置文件頭過期時間Expires的值為「Never
expire(永不過期)」;對於動態內容,可使用恰當的Cache-Control文件頭來幫助瀏覽器進行有條件的請求。
②Gzip壓縮
③設置ETag:ETags(Entity
tags,實體標簽)是web伺服器和瀏覽器用於判斷瀏覽器緩存中的內容和伺服器中的原始內容是否匹配的一種機制。
④
提前刷新緩沖區:當用戶請求一個頁面時,伺服器會花費200到500毫秒用於後台組織HTML文件。在這期間,瀏覽器會一直空閑等待數據返回。在PHP中,可以使用flush()方法,它允許你把已經編譯的好的部分HTML響應文件先發送給瀏覽器,這時瀏覽器就會可以下載文件中的內容(腳本等)而後台同⑤時處理剩餘的HTML頁面。
⑥
對Ajax請求使用GET方法:當使用XMLHttpRequest時,瀏覽器中的POST方法會首先發送文件頭,然後才發送數據。因此使用GET最為恰當。
⑦避免空的圖像src
3、Cookie優化
①減小cookie大小:去除不必要的coockie,並使coockie體積盡量小以減少對用戶響應的影響
②
針對Web組件使用域名無關的Cookie:對靜態組件的Cookie讀取是一種浪費,使用另一個無Cookie的域名來存放靜態組件是一個好方法,或者也可以在Cookie中只存放帶www的域名。
4、CSS優化
①將CSS代碼放在HTML頁面的頂部
②避免使用CSS表達式:CSS表達式在執行時候的運算量非常大,會對頁面性能產生大的影響
③使用來代替@import
④避免使用Filters:IE獨有屬性AlphaImageLoader用於修正IE
7以下版本中PNG圖片的半透明效果,但它的問題在於瀏覽器載入圖片時它會終止內容的呈現並且凍結瀏覽器。
5、JavaScript優化
①將JavaScript腳本放在頁面的底部
②
將JavaScript和CSS作為外部文件來引用:在實際應用中使用外部文件可以提高頁面速度,因為JavaScript和CSS文件都能在瀏覽器中產生緩存。
③縮小JavaScript和CSS
④刪除重復的腳本
⑤最小化DOM的訪問:使用JavaScript訪問DOM元素比較慢
⑥開發智能的事件處理程序
6、圖像優化
①優化圖片大小
②通過CSSSprites優化圖片
③不要在HTML中使用縮放圖片
④favicon.ico要小而且可緩存
7、針對移動優化
①保持組件大小在25KB以下:主要是因為iPhone不能緩存大於25K的文件(注意這里指的是解壓縮後的大小)。
②將組件打包成為一個復合文檔:把頁面內容打包成復合文本就如同帶有多附件的Email,它能夠使你在一個HTTP請求中獲取多個組件。
以上就是小編今天為大家分享的關於Web前端入門知識之Web前端性能優化的文章,希望本篇文章能夠對正在從事web前端工作的小夥伴們有所幫助,想要了解更多web前端知識記得關注北大青鳥web培訓官網,最後祝願小夥伴們工作順利,成為一名優秀的web前端工作順利。
Ⅲ 前端如何提升用戶體驗
AJAX
看到這里肯定有人忍不住笑出聲,的確這已經不算什麼新技術,但要讓我站在用戶的角度來評價網站技術上的變化中給訪問者帶來最大友好性的一項,我肯定會選AJAX。
記得在我剛剛開始學會上網時候,不管是注冊頁面還是登錄都是我最煩的,那時候網速又不快,打開一個注冊頁面就要幾秒時間,然後從上往下有幾十個選項要全部填滿,比如其中有一項讓我填寫「密碼保護問題」,這個設計簡直讓人想吃電腦,因為很多人一看這種問題應該都會和我一樣隨便寫幾個數字就提交,然後等幾秒載入完網頁提示「密碼保護問題」不允許有數字,同時之前填寫的十幾項數據全部清空需要重新再來一遍,再花幾分鍾寫完之後提交又提示不允許有字母,再來一遍,有時候還會提示字元太短太長有空格超時之類,總之如果你第一次注冊這種頁面,至少要花掉十幾分鍾,而且還是在重復做一件事。從網站運營者角度來看這也很煩,重復十幾分鍾填寫表單很容易就失去很多潛在用戶。
在AJAX的非同步請求出現之後,這種情況明顯的改善,給用戶的體驗感最明顯。用戶並不知道何時已經提交請求,就拿剛才表單的例子來說,如果每填寫一項都會在當前表單的最後提示具體錯誤類型(在用戶未點擊時已經非同步提交了請求並且用返回數據更新部分頁面),這就給用戶很直觀的提示,這種即時的互動讓訪問者能夠很直觀的感受到這是一個友好的網站。(當然用javascript也能做到部分表單驗證,這只是舉一個例子)。在不重新載入整個頁面,通過操作DOM來改寫小部分數據這點上也能給訪問者帶來極大的交互感,現在流行的微博就是最好的例子,在發送微博/評論/轉發之後用戶會發現不用刷新等待整個頁面載入,操作之後立刻會有小部分的頁面發生變化,雖然看起來微不足道,但對一個訪問者來說,這足以讓他們欣喜。
網頁字體
網站中所有的文字內容表達方式都是通過字體,合理的字體無疑會給用戶更好的體驗感。在業內來說豆瓣可能是對字體研究最多的一個網站,拿豆瓣讀書都來他們用Helvetica和Arial這兩種差別非常小的字體,這種非襯線字體很容易讓人一目瞭然同時富有一些科技感,豆瓣本身就是以圖片加上簡短語句組成,讓人能夠從字體中快速找到重心是設計的目標所在。
有人擔心非襯線用作正文對閱讀體驗有影響,實際上不難發現國外很多網站都用非襯線字體來處理正文,當然也不排除他們可能考慮的更多是英文。其實我還是非常喜歡非襯線體,它們看起來更富美感,而且如今大量的文字在互聯網上比較少見,一些活潑具有現代感的非襯線字體也逐漸被更多的開發者認同而且使用。
除去這些,字體還可以在選擇上再細分一些,記得曾經看過一篇統計,不同的字體會影響用戶對站點權威性的信賴程度。比方說在一個公司網站上大量使用類似於幼圓、Cursive一類字體,很容易讓訪問者不信任網站,當然如果是以娛樂為主的網站也不能過於嚴肅和簡朴,在使用時既要考慮到大眾用戶的接受程度,也要知道自己的網站是什麼定位,當然技術性的問題也不能忽略,像是火狐比IE區分sans-serif要更模糊一些,有的字體「O」和「0」、「L」和「1」容易讓人難以區分(代碼較多的站點需要考慮)等等,這樣綜合對比選擇得到的字體無疑能讓網站更有魅力,從而留下更多的用戶。順便一提,在使用字體時注意版權。
載入速度
很多用戶在還未見到你出色的設計和內容之前就已經離開了頁面,這是因為網站載入時間實在是太長,已使訪問者失去耐心。其實很多的訪客不關心腳本和圖片的載入順序,他們只要看到網站的整體結構能夠迅速的載入出來就可以開始瀏覽,即便是其他元素逐漸載入也可以接受,基於這點,我們可以使用很多延時載入的方法來使用戶更快的見到頁面。除此之外還有很多因素可能會對載入速度造成影響,也有逐一優化的辦法,這里就不再細述。
結構設計
不知道大家發現沒有,近來很多網站都喜歡把菜單fixed在頂部,只要這個菜單選擇項不是太多,訪客對這樣的固定菜單接受程度還是很高的,這只是設計中的一個小例子,相類似的有很多,比如在表單中以深淺顏色區分每一行,以提高可閱讀性;在激活窗口時為當前控制項添加一個邊框,使用戶能夠更建議的分辨自己在操作哪個窗口等等。很多的設計與排版方式都已經得到了大眾認可,可以作為網站設計時的參考。
網站結構設計的好看不好看對訪客來說雖然有影響,但也不至於立刻離開,而且即便是非常精緻的頁面卻對用戶不怎麼友好,想必也不會有多少人願意訪問。
舉個例子,以前我用好搜(360搜索)的時候總感覺怪怪的,沒有google和網路順手,研究了一段時間之後才發現好搜的的主頁搜索框比網路和google要低一些,Google到頂部固定菜單的距離是286px,網路是192px(未登錄238px),而好搜則是328px。相比之下,好搜的搜索框更趨向於屏幕中間,而網路與Google則是在屏幕中上方,對於已經常年習慣了網路和Google搜索的用戶來說,想要改變這個習慣來適應好搜多少有些困難,除此之外搜索框還有結果頁也有幾個問題不一一細述,360這樣做無外乎兩點,一個是不在乎/不知道/不關心用戶體驗,一個就是故意有所不同,想要培養自己的用戶習慣。(在我看來也不怎麼成功)
細節決定成敗
喬布斯的父親是個木匠,曾經教給喬布斯一個理念,就是櫥櫃的背面里層也要細致處理甚至是打磨光滑,即便用戶看不見。在理想主義的偉大試驗品「麥金塔」出世之後,有人甚至感嘆,就連電路板上的電路圖都能當作藝術品,的確如此,喬布斯就曾經開除一個對電路圖美學設計不滿的員工。一個偉大產品的誕生並不是一蹴而就的,必然經過了長期的沉澱積累與琢磨,但僅此依舊不能稱之為偉大,只能算成功。一個產品細節上的最後潤色可能才是決定它價值的關鍵。對於WEB開發者來說,更是如此。
Ⅳ 提高Web前端性能的技巧有哪些
今天小編要跟大家分享的文章是關於提高web前端性能的技巧有哪些?當今數字世界,存在著無數的網站,每天都需要處理各種不同的原因的訪問。然而,這些網站中有很大一部分顯得笨重,使用起來也很麻煩。沒怎麼優化的網站會被各種各樣的問題困擾,包括載入時間、不支持移動設備、瀏覽器兼容性問題,等等。
這篇文章講述可以幫助改善優化前端的技術,非常有用。主要內容有清理代碼、壓縮圖片、壓縮外部資源、使用CDN,以及一些其它方法。這些方法會為你的網站帶顯著的速度提升和整體性能提升。下面來和小編一起看一看吧!
1.清理HTML文檔
HTML,即超文本標記語言,幾乎是所有網站的支柱。HTML為網頁帶來標題、子標題、列表和其它一些文檔結構的格式。在最近更新的HTML5中,甚至可以創建圖表。
HTML很容易被網路爬蟲識別,因此搜索引擎可以根據網站的內容在一定程度上實時更新。在寫HTML的時候,你應該嘗試讓它簡潔而有效。此外,在HTML文檔中引用外部資源的時候也需要遵循一些最佳實踐方法。
恰當放置CSS
Web設計者喜歡在網頁建立起主要的HTML骨架之後再來創建樣式表。這樣一來,網頁中的樣式表往往會放在HTML的後面,接近文檔結束的地方。然而推薦的做法是把CSS放在HTML的上面部分,文檔頭之內,這可以確保正常的渲染過程。
_飧霾唄圓荒芴岣咄鏡募釉廝俁齲換崛梅夢收叱な奔淇醋趴瞻灼聊換蛘呶薷袷降奈謀荊_OUT)等待。如果網頁大部分可見元素已經載入出來了,訪問者才更有可能等待載入整個頁面,從而帶來對前端的優化效果。這就是知覺性能。
正確放置Javascript
另一方面,如果將JavaScript放置在head標簽內或HTML文檔的上部,這會阻塞HTML和CSS元素的載入過程。這個錯誤會導致頁面載入時間增長,增加用戶等待時間,容易讓人感到不耐煩而放棄對網站的訪問。不過,您可以通過將JavaScript屬性置於_TML底部來避免此問題。
此外,在使用JavaScript時,人們通常喜歡用非同步腳本載入。這會阻止