CH13 · Mobile / Cross-platform 詳細 ROADMAP

計畫文件,不會被 Quartz 渲染。 回主 roadmap → frontend/ROADMAP.md


章節目標

使用者不只在桌上型電腦——手機、平板、桌面 App 都是前端戰場。建立從 mobile-first 到 PWA、從 React Native 到 Tauri、從 Touch events 到 Safe Area 的完整跨平台前端能力。讓讀者知道何時該做 PWA、何時該走 RN、何時該純 Web


🌱 基本介紹

#主題SlugStage大綱
01Mobile 前端跟桌面前端差在哪01-mobile-vs-desktop🌱螢幕尺寸、輸入方式(touch vs mouse)、網路條件、電池考量、瀏覽器差異、行動裝置的限制
02Cross-platform 取捨總覽02-cross-platform-overview🌱Web / PWA / Hybrid / RN / Flutter / 純 Native 的光譜,每個點的 tradeoff

❓ 為什麼需要

#主題SlugStage大綱
03為什麼 Mobile-first 不是選配03-why-mobile-first🌱全球行動流量 60%+、Google Mobile-first indexing、行動優先的 CSS 會寫得比較簡潔、從小到大比從大到小容易
04為什麼需要 PWA(vs 純 web / 純 native)04-why-pwa🌱Native app 上架成本高、Web 沒離線能力、PWA 解的中間地帶、what PWA 能做 what 還不能做
05為什麼前端工程師該懂 RN(Web 不夠嗎)05-why-react-native🌱Native 效能、App Store 分發、Push / IAP / Wallet、Web 無法企及的能力、RN 讓前端工程師能寫 mobile
06為什麼 Responsive ≠ Mobile-friendly06-responsive-vs-mobile-friendly🌱RWD 只解排版、Mobile-friendly 要考量 touch target / viewport / font size / 連線狀態,兩者差在哪

🕰️ 演進

#主題SlugStage大綱
07行動網站演進07-mobile-web-evolution🌱m.xxx.com 獨立行動站 → Responsive Design(2010)→ Mobile-first → AMP(棄用)→ Core Web Vitals 行動信號
08PWA 演進08-pwa-evolution🌱AppCache(棄)→ Service Worker(2014)→ Web App Manifest → Installable → Play Store 支援 PWA(2019)→ Project Fugu 補齊能力
09Cross-platform 演進09-cross-platform-evolution🌱PhoneGap(2009)→ Cordova → Ionic → React Native(2015)→ Flutter(2018)→ Expo Router → Capacitor → Lynx / Tauri Mobile
10Desktop App 演進10-desktop-app-evolution🌱Electron(2013,肥)→ Tauri(2022,Rust 輕量)→ Lynx(2024)→ PWA 當桌面應用

🧠 知識型

行動 Web

#主題SlugStage大綱
11Responsive vs Adaptive Design11-responsive-vs-adaptive🌱流動 vs 斷點切換、使用場景、SEO 含意
12Mobile-first CSS12-mobile-first-css🌱min-width query 先寫小螢幕、為什麼從小到大比較乾淨、Container Query 的影響
13Touch Events vs Mouse Events13-touch-vs-mouse🌱Pointer Events 統一、Touch 特有事件(touchstart / touchmove)、hover 在 touch 裝置的問題、pointer-events
14Viewport Meta 與 Safe Area14-viewport-safe-area🌱viewport-fit=coverenv(safe-area-inset-*)、iPhone notch / Dynamic Island、Android gesture bar
15行動裝置效能考量15-mobile-performance🌱慢 CPU / 低記憶體 / 行動網路、throttling in DevTools、效能預算、圖片重量、JS parse 時間

PWA

#主題SlugStage大綱
16PWA 基礎16-pwa-basics🌱三要素(HTTPS + Manifest + SW)、Lighthouse PWA audit、installable criteria
17Web App Manifest17-web-app-manifest🌱icons / start_url / display / theme_color / shortcuts、跨平台差異
18Service Worker for PWA18-sw-for-pwa🌱快取策略(stale-while-revalidate / network-first / cache-first)、版本升級、清舊 cache
19Push Notifications19-push-notifications🌱Push API + Notification API、VAPID、iOS Web Push 支援(2023+)
20Background Sync / Periodic Sync20-background-sync🌱斷網時排隊、定時背景任務、使用情境
21PWA 上架 App Store21-pwa-app-store🌱Google Play(Trusted Web Activity)、App Store 政策、PWABuilder

Cross-platform 框架

#主題SlugStage大綱
22React Native22-react-native🌱JS bridge → New Architecture (Fabric + TurboModules)、共用 code 比例、效能特性
23Expo 生態23-expo🌱managed workflow、Expo Router、EAS Build / Submit / Update、什麼時候該 eject
24Flutter(對前端工程師的意義)24-flutter-for-web-devs🌱Dart 語言、非 Web renderer、生態差異、什麼情況考慮 Flutter
25Ionic + Capacitor25-ionic-capacitor🌱Web-based native、共用 web code 近 100%、效能 tradeoff

Desktop App

#主題SlugStage大綱
26Electron26-electron🌱Chromium + Node.js、bundle size 爭議、實務大廠(VS Code / Slack / Discord)為什麼還用
27Tauri(Rust-based)27-tauri🌱跟 Electron 對比、bundle size、Rust learning curve、v2 mobile 支援
28Lynx / React Native Desktop28-lynx-rn-desktop🌱2024 新興、跨平台 native UI 新思維

跨平台實務

#主題SlugStage大綱
29共用 code vs 平台特化29-shared-vs-platform-specific🌱共用 business logic、UI 特化到什麼程度、monorepo 組織策略
30App Store / Play Store 上架流程30-app-store-submission🌱審核重點、icon / screenshot 規範、拒絕常見原因、reviewer guide
31OTA Update 策略31-ota-update🌱Expo Updates / CodePush、什麼能 OTA 什麼不能、Apple 政策、version pinning

🔧 小實作注意事項

#主題SlugStage大綱
32PWA from Zero32-pwa-from-zero🌱Vite 專案加 SW + Manifest + 離線、Lighthouse 達到 100
33RN 第一支 App33-first-rn-app🌱Expo 快速起手、Expo Router、發到 TestFlight / internal testing
34Tauri 第一支 Desktop34-first-tauri-app🌱從 React + Vite 包成 Tauri、打包 size 比較 Electron
35行動裝置 debug 工具鏈35-mobile-debugging🌱Safari Web Inspector(iOS)、Chrome Remote Debug(Android)、WebView debug、Proxyman 攔截流量
36Touch Gesture 實作36-touch-gestures🌱swipe / pinch / long-press、@use-gesture/react、框架中的 touch 處理
37Safe Area / Notch 處理37-safe-area-handling🌱env() 實戰、status bar / home indicator、跨 iOS / Android 差異

💣 Anti-pattern

#主題SlugStage大綱
38Mobile Anti-patterns38-mobile-anti-patterns🌱小 touch target(< 44×44px)、hover-only UI、viewport 鎖 user-scalable=no、離開頁面沒警告(form 資料遺失)、RN 跟 Web 全部共用 render(效能爛)、Electron 40MB 的 Hello World、忘記 prefers-reduced-motion

🧰 對應檢查工具

#主題SlugStage大綱
39Mobile / Cross-platform 工具39-mobile-tooling🌱Lighthouse Mobile、PWABuilder、Expo DevTools、Flipper(RN debug)、Xcode / Android Studio 基本、BrowserStack / Sauce Labs 裝置雲

📎 補充

#主題SlugStage大綱
S01Foldable / Dual Screen 支援s01-foldable-support🌱Galaxy Fold / Surface Duo、CSS Viewport Segments、experiential API
S02Apple Vision Pro / WebXRs02-vision-pro-webxr🌱Spatial Web、WebXR API、空間 UI 設計原則
S03Progressive Enhancement for Low-ends03-progressive-enhancement🌱舊手機 / 低階 Android 使用者、bundle size 戰略、HTML-first 思維回歸
S04行動裝置網速 / 離線實戰s04-mobile-network-offline🌱斷網 UX、重試策略、資料同步、Local-first 跨 CH7

章節進度統計

  • 知識主題:39 + 4 補充 = 43 項
  • 🌿 growing:0
  • 🌱 seed:43

跨系列連結

  • frontend/browser/ CH4(Service Worker、Touch Events、Viewport API、Push API)
  • frontend/css/ CH2(Mobile-first、Container Query)
  • frontend/framework/ CH6(React Native 跟 React 的關係)
  • frontend/a11y/ CH12(Mobile a11y:VoiceOver / TalkBack)
  • frontend/engineering/ CH9 F11(行動效能)
  • frontend/architecture/ CH7(Local-first / CRDT 行動場景)