Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Android_Day_2013_-_Mobile_Web_App_Design.pdf

SJ Chou
January 16, 2014

 Android_Day_2013_-_Mobile_Web_App_Design.pdf

軟體最大的價值在於複製與重用,近年來標準化與跨平台的開發方式受到極度重視,但為何 Web App 總是讓開發者退卻?我們將介紹 Web App 的開發經驗與心路歷程,從實務的角度剖析各種開發方式與優缺點。分享如何在 Mobile 效能有限的窘境下,透過開發/除錯工具與效能最佳化等等手段,創造出重視使用者體驗的 Web App,藉此獲得 Web App 所帶來的跨平台效益。

SJ Chou

January 16, 2014
Tweet

More Decks by SJ Chou

Other Decks in Technology

Transcript

  1. Mobile App 兩大開發陣營 • Native App 速度快、功能強、不跨平台 • Web App

    效能不佳、功能不強、跨平台 http://dukeland.hk/2012/07/26/webapp-vs-native-app/
  2. App Store Review Guidelines 2.12 Apps that are not very

    useful, unique, are simply web sites bundled as Apps, or do not provide any lasting entertainment value may be rejected.
  3. Web App 的優點! • 使用標準化 HTML5 技術 • Web 擁有跨平台能力

    • 適合 Web Designer 快速開發 • 開發環境單純
  4. 別誤解 Web App 的優點! • 使用標準化 HTML5 技術 (實際上各方 瀏覽器實作不一、且

    API 根本不夠強) • Web 擁有跨平台能力 • 適合 Web Designer 快速開發 • 開發環境單純
  5. 別誤解 Web App 的優點! • 使用標準化 HTML5 技術 (實際上各方 瀏覽器實作不一)

    • Web 擁有跨平台能力 (HTML5 都不怎 麼跨平台了、還有 CSS3 怎麼辦!) • 適合 Web Designer 快速開發 • 開發環境單純
  6. 別誤解 Web App 的優點! • 使用標準化 HTML5 技術 • Web

    擁有跨平台能力 • 適合 Web Designer 快速開發 (需要熟 悉 CSS3, JavaScript, HTML5 API, UI Framework, JS Bridge...等等) • 開發環境單純
  7. 別誤解 Web App 的優點! • 使用標準化 HTML5 技術 • Web

    擁有跨平台能力 • 適合 Web Designer 快速開發 • 開發環境單純 (我們忘了硬體環境不單 純!)
  8. Web App Features • 透過用全螢幕瀏覽器來執行 • 採用 Web 技術實現 (HTML5

    + CSS3) • 跑的比較慢! • 用起來怪怪的,使用者體驗不佳! • HTML5 API 功能有限,成不了大器!
  9. Web App Architectural Style • Multi-page Application, MPA HTML 靜態

    DOM jQuery Mobile Page Reload, UX NG! • Single-page Application, SPA JavaScript 動態處理 DOM Ext / Sencha Touch Event-based, Animation, UX Good! Memory Leak
  10. Web App Skills • HTML5 API • CSS3 • JavaScript

    • JavaScript Bridge + Native Coding • UI Framework / Library
  11. 2012 Facebook 開了 HTML5 一槍 Building Facebook’s mobile app on

    HTML5 was the biggest strategic mistake we've ever made. http://www.inside.com.tw/2012/09/12/mark-zuckerberg-disrupt
  12. Web App Performance Issues • DOM Layout Render 效率 •

    JavaScript 執行速度 • CSS 渲染效率 滑動列表是 Web App 的最大罩門
  13. Android 如何改善 Web App 效能? • 利用硬體加速 • DOM 優化

    • CSS 優化 • JavaScript Minify • Animation Frame • CSS Image Sprites • HTTP Caching • HTML5 Local Storage • HTML5 Application Cache
  14. Web View Hardware Acceleration Base on Android 3.0 (API Level

    11) <application android:hardwareAccelerated="true" ...>
  15. Android 如何改善 Web App 效能? • 利用硬體加速 • DOM 優化

    • CSS 優化 • JavaScript Minify • Animation Frame • CSS Image Sprites • HTTP Caching • HTML5 Local Storage • HTML5 Application Cache
  16. Android 如何改善 Web App 效能? • 利用硬體加速 • DOM 優化

    • CSS 優化 • JavaScript Minify • Animation Frame • CSS Image Sprites • HTTP Caching • HTML5 Local Storage • HTML5 Application Cache
  17. Android 如何改善 Web App 效能? • 利用硬體加速 • DOM 優化

    • CSS 優化 • JavaScript Minify • Animation Frame • CSS Image Sprites • HTTP Caching • HTML5 Local Storage • HTML5 Application Cache
  18. Android 如何改善 Web App 效能? • 利用硬體加速 • DOM 優化

    • CSS 優化 • JavaScript Minify • Animation Frame • CSS Image Sprites • HTTP Caching • HTML5 Local Storage • HTML5 Application Cache
  19. Android 如何改善 Web App 效能? • 利用硬體加速 • DOM 優化

    • CSS 優化 • JavaScript Minify • Animation Frame • CSS Image Sprites • HTTP Caching • HTML5 Local Storage • HTML5 Application Cache
  20. 利用 CSS Image Sprites 合併圖片 目的:減少 Request 發送 #home{ background:url('img_navsprites.gif')

    0 0; } #prev{ background:url('img_navsprites.gif') -47px 0; } #next{ background:url('img_navsprites.gif') -91px 0; }
  21. Android 如何改善 Web App 效能? • 利用硬體加速 • DOM 優化

    • CSS 優化 • JavaScript Minify • Animation Frame • CSS Image Sprites • HTTP Caching • HTML5 Local Storage • HTML5 Application Cache
  22. Android 如何改善 Web App 效能? • 利用硬體加速 • DOM 優化

    • CSS 優化 • JavaScript Minify • Animation Frame • CSS Image Sprites • HTTP Caching • HTML5 Local Storage • HTML5 Application Cache
  23. Android 如何改善 Web App 效能? • 利用硬體加速 • DOM 優化

    • CSS 優化 • JavaScript Minify • Animation Frame • CSS Image Sprites • HTTP Request Cache • HTML5 Local Storage • HTML5 Application Cache