HTML5 賦予 Web 強大原生級能力,但也帶來 11 個無法迴避的硬傷。接受現實,才能做對技術選型。
客戶端代碼完全用戶可控。瀏覽器內建調試器(Firebug/DevTools)讓斷點、變量篡改、地理位置偽裝變成「兒戲」。JS 混淆只能增加逆向成本,無法根治。涉錢/敏感數據場景,HTML5 客戶端邏輯不可信。
IndexedDB/LocalStorage 通常 5-50MB,無法遷移、備份、跨機器同步、跨應用調用。數據藏在瀏覽器黑盒裡,用戶無感、開發者難維運。
用戶換瀏覽器/換設備,開發者無法同步;Greasemonkey/本地腳本可直接改庫。服務端無法阻止客戶端數據被惡意修改。
多設備/多瀏覽器產生衝突副本,時鐘不同步更難判定最新版。Git 合併策略太重,Web 應用需自建衝突解決 UI,成本極高。
Facebook 刪插件連帶刪用戶照片;創業公司倒閉數據歸零;服務條款常寫「無理由刪除」。HTML5 反而將更多數據推向不可控的雲端。
Gmail 強推 Google+ 導致舊聯繫人騷擾。Web 應用全量升級無法拒絕,新舊依賴衝突常導致崩潰,用戶失去版本自主權。
只能分流任務到後台線程,無法設置優先級、管理負載。惡意網站可佔滿 CPU,用戶無監控手段,瀏覽器成「殭屍工廠」。
<audio>/<video> 標準未統一編碼,瀏覽器廠商各持陣營(H.264 vs WebM vs VP9)。canPlayType() 甚至不被所有瀏覽器支持,開發者需多格式轉碼+回退方案。
H.264 專利池收費,MPEG-LA 隨時可改授權條款。WebM 雖免費但專利風險未清零。技術選型夾雜商業博弈。
<picture>/srcset 標準推遲,polyfill 複雜,藝術指導(不同屏幕裁剪不同圖)更難落地。
Service Worker 雖強大,但更新機制、緩存清理、用戶感知仍不成熟。用戶可能永遠用著舊版本,開發者無法強制刷新。
結論:HTML5 不是萬能鑰匙。根據業務屬性——是否涉密、是否需離線、是否依賴硬件、是否跨平台——在 Web App / Hybrid / Native 三條賽道中理性選擇,而非盲目追新。