文章來源: http://www.restran.net/2015/05/14/mobile-web-front-end-collections/
最近整理的移動端 Web 開發前端知識,不定期更新。
HTML5 可以做什么
- 拍照
- 獲取地理位置
- 手勢
- canvas 繪圖和動畫(硬件加速)
- localstorage,本地緩存
HTML5 動畫效果 demo
CSS3 動畫
http://isux.tencent.com/css3/index.html
http://beiyuu.com/css3-animation/
基本的 HTML 文件結構
1 |
|
DOM 操作庫
jQuery 的目標是兼容所有主流瀏覽器,這就意味着它的大量代碼對移動端的瀏覽器是無用或者低效的
Zepto是一個輕量級的針對現代高級瀏覽器的JavaScript庫,只針對移動端瀏覽器編寫,因此體積更小、效率更高,更重要的是,它的 API 完全仿照 jQuery,如果你會用jquery,那么你也會用zepto。
Zepto的設計目的是提供 jQuery 的類似的API,但並不是100%覆蓋 jQuery 。Zepto設計的目的是有一個5-10k的通用庫(目前最新版,gzip 壓縮后只有 9.1k)、下載並快速執行、有一個熟悉通用的API,所以你能把你主要的精力放到應用開發上。
todo:zepto 與 jQuery 沖突問題
很多插件是基於jQuery 的,如果想要使用這些插件,又引入了 jQuery 將引起沖突,而且這時候 zepto 就沒有引入的意義,但是有些框架又是基於 zepto,例如 frozenui。
UI 框架
frozenui(騰訊開源) 騰訊手 Q 風格
jQuery.mmenu iOS 風格的菜單
字體圖標
矢量,顏色大小可以自定義
自定義圖標字體
有時只需要使用到一部分的圖標,可以通過自定義的方式來減小圖標字體文件的大小。
HTML 模板引擎
AngularJS(Google 開源)
場景,需要要動態創建列表數據的時候
沒有 AngularJS 之前,用 js 拼接出 HTML 字符串
1 |
function render_order_data(data) { |
有了 AngularJS 之后,利用 AngularJS 的數據綁定,直接寫 HTML 模板,清晰易懂
1 |
<tr ng-repeat="entry in entries"> |
AngularJS 學習資源
- 幕客網
- http://angularjs.cn/T008
- http://checkcheckzz.gitbooks.io/angularjs-learning-notes/content/index.html
表單驗證
HTML5 表單驗證已經很強大,但是目前在 iOS 8 上面的瀏覽器仍然是不支持的,Android要 4.4 以上才支持。
boostrap 表單驗證
Bootstrap Validator
http://1000hz.github.io/bootstrap-validator/
HAPPY.JS
Lightweight form validation for jQuery or Zepto.js
jQuery Form Validator
https://github.com/victorjonsson/jQuery-Form-Validator
AngularJS 本身有提供表單驗證的功能
jquery-validation
semantic-ui 自帶表單驗證
開發模式
前后端分離,接口開發與 HTML,CSS,JS 這些前端開發分離。
相關工具
IDE
Sublime Text is a sophisticated text editor for code, markup and prose.
You’ll love the slick user interface, extraordinary features and amazing performance.
Jetbrains WebStorm(The smartest JavaScript IDE)
WebStorm is a lightweight yet powerful IDE, perfectly equipped for complex client-side development and server-side development with Node.js.
前端工具
靜態文件緩存問題(重要)
由於默認情況下(服務器沒有設置 expire header 為 -1 或 0) WebView 會緩存靜態文件,如果沒有更新靜態文件的版本,會導致網站做了更新,而用戶實際上仍在使用舊的文件。
靜態資源版本更新與緩存
http://www.infoq.com/cn/articles/front-end-engineering-and-performance-optimization-part1
使用 FIS 工具解決
FIS (百度開源)
FIS是專為解決前端開發中自動化工具、性能優化、模塊化框架、開發規范、代碼部署、開發流程等問題的工具框架。可以實現靜態文件壓縮、合並、為文件名添加版本 md5 Hash。
調試工具
Chrome (Android iOS 都是 Webkit 內核)
Fiddler(抓包工具,需要借助 wi-fi 熱點分享)
HTTP 服務器 Nginx
Nginx是一款面向性能設計的HTTP服務器,相較於Apache、lighttpd具有占有內存少,穩定性高等優勢。
在前端開發中,經常作為反向代理服務器,用來在自己的開發電腦上,模擬生產環境,通過資源重定向和反向代理,可以同時訪問部署在其他服務器上的接口或網站,以及自己電腦上正在開發的網頁。
http://nginx.org/en/download.html
nginx 配置的一個例子
1 |
server { |
在線工具
jsfiddle
Test and share JavaScript, CSS, HTML or CoffeeScript online.
在線即時展現 Html、JS、CSS 的編輯工具,可以有效的幫助 web 前端開發人員來有效分享和演示前端效果。
CSS3 HTML5 兼容性查詢
查詢 HTML5 和 CSS3 語法兼容性
http://caniuse.com/
http://mobilehtml5.org/
CSS 語法手冊
http://tympanus.net/codrops/css_reference/
書
CSS設計指南(第3版)(文字版)
在線學習資源
JS 模塊化加載
常用組件
回到頁首
性能優化
- 移動網絡的環境比較復雜,在調試的時候可以用 Chrome 模擬不同的網絡環境,關注頁面加載的數據量,和加載時間。
- 使用 CDN,常用的庫一般會有 CDN 地址,也可以將自己的一些靜態文件放在七牛上,七牛有免費的額度。
- 小圖片轉成 base64,減少 HTTP 請求
- css,js 文件壓縮,啟用GZip(HTTP服務器已開啟 gzip)
- 服務器開啟靜態文件緩存,發布新版本時,需要對文件名加md5戳,使用 fis 工具(html 文件強制不緩存)。
- 大量的圖片顯示,可以使用 Canvas 畫圖,而不用 img 標簽,Canvas 有硬件加速
- 無阻塞,寫在HTML頭部的JavaScript(無異步),和寫在HTML標簽中的Style會阻塞頁面的渲染,因此CSS放在頁面頭部並使用Link方式引入,避免在HTML標簽中寫Style,JavaScript放在頁面尾。
- 網頁的渲染不支持硬件加速,dom很多很大的時候會很卡,Facebook 曾經就是因為這個原因放棄了html5,但現在又推出了一個 react js
- javascript 單線程,不要執行太復雜的任務,否則會導致頁面卡住。
-
動畫優化,盡量使用CSS3動畫
-
HTML5 的 Manifest 和 localstorage,在本地緩存文件和數據。
前端知識庫
騰訊移動Web前端知識庫 Mars
https://github.com/AlloyTeam/Mars
alloyteam 移動開發規范概述
http://alloyteam.github.io/Spirit/modules/Standard/index.html#overview
移動H5前端性能優化指南
http://isux.tencent.com/h5-performance.html
靜態資源管理與模板框架
http://www.infoq.com/cn/articles/front-end-engineering-and-performance-optimization-part2
HTML5中40個最重要的技術點
http://www.techug.com/40-important-html-5-interview-questions-with-answers
Webkit WebApp 開發技術要點總結
http://www.cnblogs.com/pifoo/archive/2011/05/28/webkit-webapp.html