91网首页-91网页版-91网在线观看-91网站免费观看-91网站永久视频-91网站在线播放

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

Mobile Bridge:讓 WebView 擁有原生體驗

admin
2025年5月24日 13:11 本文熱度 127

作者:@Mauricio de Meirelles

https://shopify.engineering/mobilebridge-native-webviews


前言

如何解決傳統 WebView 所面臨的三大核心問題 —— 性能、外觀和集成性,以及 Mobile Bridge 如何成為我們移動開發策略中的關鍵轉折點,甚至幫助我們加速向 React Native 的遷移。今日前端早讀課文章由 @Mauricio de Meirelles 分享,@飄飄編譯。

?

Shopify 的移動應用大約有 600 個界面,雖然這些界面都對商家使用移動端體驗有所貢獻,但并不是每個界面對日常操作都同樣重要。

對于那些關鍵界面,我們毫無疑問地選擇使用原生或 React Native 來開發,以確保提供最好的使用體驗。但如果將同樣的開發方式應用到其他不那么關鍵的界面上,代價就非常高昂,同時還會嚴重拖慢開發進度。

我們的挑戰很明確:我們需要一種高效的方式,把這些 “非關鍵” 界面集成到移動應用中,而不需要再為 Web 和移動端分別開發。

WebView 看起來是一個合理的選擇,但它往往難以提供良好的用戶體驗 —— 經常顯得慢、不流暢,而且跟原生界面風格不一致,容易讓人感覺脫節。

我們不滿足于這些限制,而是把它當作一次機會:我們是否能 “重塑” WebView,讓它更快、更美觀、看起來更像原生界面?這也正是我們創建 Mobile Bridge 框架的出發點。這個框架專門用來增強 WebView,讓網頁內容可以無縫融入我們的移動應用。

在這篇文章中,我們會分享我們是如何解決傳統 WebView 在性能、外觀和集成方面的主要問題,以及 Mobile Bridge 如何成為我們移動開發策略中的關鍵工具,甚至幫助我們加速向 React Native 的遷移。

WebView 的難題

WebView 一直不被看好,主要是因為用戶一眼就能看出它不是 App 的原生部分。它們看起來脫節、運行緩慢,給人不好的使用體驗。

為了改善這些問題,我們啟動了一個項目,設定了三個關鍵目標:

  • 讓 WebView 更快
  • 讓 WebView 看起來像原生界面
  • 讓 WebView 用起來像原生界面
1、讓 WebView 更快 ??

我們首先著手找出 WebView 為什么加載緩慢。結果發現,主要問題出在認證流程上。每次加載 Web 頁面時,WebView 都要經過好幾次跳轉來完成身份驗證,這就導致了明顯的延遲。

為了解決這個問題,我們提出了一個簡單的方案:在應用啟動時,就在后臺預加載并完成 WebView 的身份認證。

為此,我們分別為 iOS 和 Android 構建了原生模塊,可以實現以下功能:

  • 在后臺預加載 WebView(無需等待)
  • 使用過的 WebView 不再丟棄,而是保留在緩存中
  • 重復利用緩存的 WebView,用戶就不會再遇到無謂的等待

通過這種方式,我們將 WebView 的加載時間提升了大約 6 倍 ——P75(75% 用戶體驗到的加載時間)從 6 秒縮短到 1.4 秒,這其中包括了網絡延遲和頁面渲染時間。

左圖為優化前,右圖為優化后

2、讓 WebView 看起來更像原生界面

在解決了性能問題之后,我們開始著手提升 WebView 的外觀和使用感受,重點是去除那些讓它看起來不像原生界面的元素。我們主要改進了以下幾個方面:

  • 縮放功能:我們通過注入 JavaScript 來禁用頁面縮放功能。
  • 文本選擇:通過添加 CSS 樣式,取消了文本可選中功能。
  • 不必要的界面元素:我們隱藏了 WebView 中一些在移動端不需要的后臺管理界面組件,比如標題組件(Title component)和頁面底部(Page footer)。
  • Polaris 樣式覆蓋:我們對 Polaris(Shopify 的 UI 組件庫)中的組件進行了樣式調整,使它們在視覺上更貼合原生應用的設計風格。

經過這些改進,我們的 WebView 在視覺風格和交互方式上更加接近原生界面,遵循了統一的用戶體驗設計標準。

優化前(左)與優化后(右)對比圖

3、讓 WebView 用起來更像原生界面

想要讓 WebView 真正 “用起來像原生應用”,關鍵是要實現 Web 與移動端之間的簡單通信。它們需要能夠輕松地共享數據、追蹤用戶操作,并快速做出響應,比如知道用戶何時導航、完成了什么操作,或者頁面發生了哪些變化。

為此,我們開發了 Mobile Bridge 框架,它基于 Shopify 的 @remote-ui/rpc 庫,能夠在 Web 與移動端之間建立順暢的雙向通信通道。

解決頁面標題和操作問題

我們首先處理的是標題欄的問題。在原生應用中,頁面的標題和操作按鈕(如 “保存”、“編輯”)通常顯示在導航欄,而不是頁面本身。為了讓 WebView 與這一原生模式一致,我們在 Mobile Bridge 中設計了可以設置標題欄和操作按鈕的 API。

接著,我們修改了 Polaris 的 Page 組件,讓它將自己的標題和操作按鈕傳送給 Mobile Bridge,然后由 Mobile Bridge 將它們渲染到原生導航欄中。這樣一來,WebView 瞬間看起來更像原生界面了。

優化前(左)與優化后(右)對比

解決 WebView 中的導航問題

導航功能是另一個關鍵挑戰。在瀏覽器中,點擊鏈接通常會重新加載整個頁面,但原生應用則是將新頁面 “壓入” 導航堆棧中。如果我們每次導航都創建一個新的 WebView,就會導致用戶的會話數據和動態內容丟失,體驗既慢又令人沮喪。

為了解決這個問題,我們開發了一個名為 TransportableView 的新組件。它可以讓我們在屏幕之間 “移動” 現有的 WebView,而不丟失任何狀態或數據。TransportableView 可以把當前 WebView 實例直接轉移到另一個屏幕上使用,這樣即使用戶返回上一個頁面,也不會丟失任何內容或連接。

處理返回導航的問題

TransportableView 成功解決了 “前進導航” 的問題,因為我們總是在 WebView 進入新頁面時展示一個全屏加載動畫,用戶不會看到前一頁的內容短暫出現。

但如果是 “返回導航” 呢?如果不加處理,用戶在返回或預覽某些頁面時可能會看到空白或損壞的界面,這就破壞了我們想要實現的原生體驗。

為了解決這個問題,我們在 WebView 移動前會快速拍一張當前界面的 “快照”。當用戶返回時,先顯示這張靜態圖片,確保界面內容是完整的。等到實際的 WebView 完全加載好之后,我們再將這張快照移除。

iOS 上快照的捕捉與還原示意圖:

以原生方式處理彈窗(Modal)

Web 頁面中的彈窗通常是覆蓋在當前內容之上的,而在移動應用中,彈窗通常作為獨立的屏幕出現,并伴隨原生的過渡動畫。為了與這一行為保持一致,我們將彈窗處理為原生屏幕,并通過和前文頁面跳轉相同的方式來傳遞 WebView。

其中一個關鍵優化是:我們對 Polaris 的 Modal 組件進行了自定義處理,讓它在原生動畫完成之后再開始渲染內容。這樣能保持過渡過程流暢,避免內容閃爍。

優化前(左)與優化后(右)對比圖

更進一步的優化

在做完上述優化后,我們的 WebView 已經有了巨大的提升,但我們并沒有就此止步。為了讓體驗更加無縫,我們還把已有的原生功能直接集成到了 WebView 中。

一個很好的例子就是日期選擇器(Date Picker)。我們的很多分析類頁面都采用 WebView,而日期選擇器是查看報表的重要交互。雖然 Web 上的日期選擇器在瀏覽器中運行良好,但在 App 里卻不夠 “原生”。既然我們已有原生版本的日期選擇器組件,我們就通過 Mobile Bridge 把它集成進 WebView。

這種將原生與 Web 元素融合的方式,讓用戶體驗變得更加自然、順暢。

優化前(左)與優化后(右)對比圖

我們還讓 WebView 可以無縫調用原生功能?,F在,Web 內容不僅能直接觸發原生界面,還能輕松地獲取返回結果。

在我們目前的應用中,已有一些實際應用場景,例如:

  • “添加到錢包” 功能:支持 iOS 和 Android,用戶可以直接從 WebView 觸發
  • 原生條碼掃描器:用于庫存管理,集成在 WebView 中,商家可以快速掃描條碼自動填寫字段,大大提升工作效率

條碼掃描器(左)和添加到錢包功能(右)

這種混合式方案讓我們能夠快速推出基于 Web 的新功能,同時為用戶提供更豐富、更接近原生體驗的使用感受。

Mobile Bridge 的未來發展

目前,Mobile Bridge 可以讓 Web 觸發原生界面元素,但這些原生元素必須事先在 App 中實現。這在一定程度上限制了發布速度,也讓舊版本的 App 無法享受到新功能的升級。

為了解決這個問題,我們正在嘗試使用 Shopify 的 remote-dom 技術,讓 Polaris 組件可以通過 Web 代碼在 App 中以原生方式渲染。

這種方式可以讓我們在保留業務邏輯在 Web 端的同時,把界面組件交由原生端渲染。這樣不僅帶來更大的靈活性,還顯著提升了整個混合應用的用戶體驗。

下面是我們基于這一方案構建的原型示例,你能猜出哪一部分是 WebView,哪一部分是原生的嗎?

Mobile Bridge:Shopify 的變革者

Mobile Bridge 所帶來的改進是如此顯著,以至于 WebView 現在已經成為我們移動端開發戰略中不可或缺的一部分。我們大量使用 WebView 來實現重要但非關鍵的功能,從而避免在 Web 和移動端重復開發。

而對于應用中所有關鍵功能,我們仍然堅持使用原生或 React Native 來提供最優質的體驗。

我們已經將 Mobile Bridge 開源為一個獨立的庫,并開始將其整合進 Shopify 的其他產品中,比如 Balance、POS 和 Shop。這意味著更多應用也能采用這種強大的混合開發模式,從而享受到更快的開發周期和更好的用戶體驗。

Mobile Bridge 徹底改變了我們對 Web 與移動集成方式的看法 —— 它讓我們可以擁有 Web 開發的靈活性與速度,同時為用戶提供接近原生的流暢體驗。它還釋放了大量工程資源,讓我們能將更多精力投入到提升關鍵原生界面的質量上。


閱讀原文:原文鏈接


該文章在 2025/5/26 12:30:08 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved

主站蜘蛛池模板: 日韩欧美亚 | 三区噜噜噜 | 欧美午夜日韩 | 国在线视频 | 日韩高清在线播放不 | 日韩午夜片电影 | 97人人免费操| 日本在线理 | 日本中文字幕 | 最新欧美日韩 | 国产精品一区欧美 | 国产高清不卡 | 爱豆在线观看 | 蜜桃福利导航 | 国产日韩精品视频 | 果冻传媒网站入口 | 国产玉足脚交 | 97视频免费 | 国产精品+欧美激情 | 国产福利电影网 | 乱中年女人伦一 | 日韩欧美亚洲中 | 91伊人 | 91一区二| 国产另类亚洲日韩 | 91香蕉网站在线 | 人人影视网 | 91国语| 国产高清不卡在线 | 成人影片网址 | 伦午夜视频观看 | 精品国产日韩无影视 | 国产99@热| 国产真实乱对白精彩 | 国产美女极品在线 | 国产综合在线视频 | 人妖hd| 午夜福利理论片 | 精品国产偷自产在线 | 精品美女| 日韩精品专 |