從iOS Basecam3探索混合應(yīng)用開發(fā)的最佳實(shí)踐
推薦 + 挑錯(cuò) + 收藏(0) + 用戶評(píng)論(0)
Hybrid 的定義
首先,我們需要清楚理解什么是”hybrid”。這個(gè)詞在很多不同的場(chǎng)合中被使用,但這對(duì)于我們而言幾乎沒有任何意義。在我們的開發(fā)中,我們所指的”混合”是具有大量 web 渲染內(nèi)容的標(biāo)準(zhǔn)原生應(yīng)用。我們沒有使用通過 HTML/CSS 來模擬原生控件的框架,也沒有使用將另一種編程語言編譯成原生開發(fā)語言的框架,亦或者是通過一份代碼庫(kù)開發(fā)一個(gè)跨平臺(tái)的 App 的框架。
對(duì)于我們而言,這意味著我們需要使用 Xcode+Swift,并且要遵守開發(fā)平臺(tái)關(guān)于導(dǎo)航和展示的所有規(guī)范。在 App 中構(gòu)建的內(nèi)容大多由 UINavigationController、UIViewController、UITabViewController、UISplitViewController 等組成。在這些容器中,有很多內(nèi)容是通過 UITableView 或 UICollectionView 組建的,當(dāng)然了更多的是通過 WKWebView。
深入理解
在 iOS 版本的 Basecamp 3 App 中我們使用的全部是 Swift 3.1,并且通過最新版本的 Xcode 進(jìn)行編譯。我們只有很少的依賴,并且這些都是通過 Carthage 進(jìn)行管理。Turbolinks 是我們能夠使用混合架構(gòu)的核心庫(kù)。Turbolinks 不僅可以用在 Web 上,在 iOS 和 Android 的原生應(yīng)用上也可以進(jìn)行使用。此框架主要解決了原生應(yīng)用和 Turbolinks.js 之間的通訊問題,并且允許開發(fā)者在多個(gè)界面間共享單個(gè) WKWebView。
路由/導(dǎo)航
除了 Turbolinks,我們還需要許多其他的組建進(jìn)行支持。在 iOS 應(yīng)用中大多數(shù)都是通過 URL 進(jìn)行的導(dǎo)航。一個(gè) URL 可以有很多來源(web 鏈接、推送通知、來自另一個(gè) App 的通用鏈接、本地跳轉(zhuǎn)等),但是它們都要通過路由進(jìn)行中轉(zhuǎn)。路由需要清楚地知道對(duì)于一個(gè)給定的 URL 下一步操作是什么。如果 URL 是另一個(gè)域,應(yīng)用還可能打開 Safari;如果是圖像/視頻,則需要展示一個(gè)媒體視圖,又或者是在大多數(shù)情況下,應(yīng)用都是創(chuàng)建一個(gè)新的控制器進(jìn)行展示。大多數(shù)的控制器都需要被推入當(dāng)前導(dǎo)航控制器的棧中,但是我們也支持通過模態(tài)的方式彈出一個(gè)視圖(類似新的/編輯視圖) 以及在合適的時(shí)候替換當(dāng)前視圖。
橋接
組成混合架構(gòu)的最后一個(gè)組件是橋接(盡管我們有許多其他的組件,但它們都和混合模塊沒關(guān)系)。這是一個(gè)在 App 不同部分之間進(jìn)行通訊的統(tǒng)稱術(shù)語,比如原生-》web通訊(或web-》原生)。其中最核心的代碼是一份嵌入到本地 App 的 Java 文件(用 Type 編寫)并且通過 WKUser 注入到 web 視圖中。這種橋接方式給原生代碼提供了一個(gè)在不需要直接查詢 DOM 和進(jìn)行復(fù)雜 JS 操作的情況下與 web 視圖進(jìn)行通訊的 API。利用 WKMessageHandle,我們可以通過橋接來響應(yīng)從 Web 發(fā)送的消息。
以上是一個(gè)關(guān)于橋接的例子。我們使用橋接來隱藏一些在 web 上需要顯示但在 Basecamp 界面中不需要的元素。由于我們給頂層導(dǎo)航控制器提供了一個(gè)標(biāo)簽條,所以我們需要隱藏 web 界面最下面的部分。同時(shí),也不需要 web 的導(dǎo)航記錄了因?yàn)槲覀円呀?jīng)有了一個(gè)導(dǎo)航控制器。最后,我們隱藏了 Web 的編輯/書簽/動(dòng)作菜單并且提供了一個(gè)原生版本的界面。
非常好我支持^.^
(0) 0%
不好我反對(duì)
(0) 0%
下載地址
從iOS Basecam3探索混合應(yīng)用開發(fā)的最佳實(shí)踐下載
相關(guān)電子資料下載
- iOS17.1可能明天發(fā)布,iOS17.1主要修復(fù)哪些問題? 380
- 華為全新鴻蒙蓄勢(shì)待發(fā) 僅支持鴻蒙內(nèi)核和鴻蒙系統(tǒng)應(yīng)用 719
- 蘋果手機(jī)系統(tǒng)iOS 17遭用戶質(zhì)疑 731
- iPhone12輻射超標(biāo)?蘋果推送iOS 17.1解決此事 750
- 傳華為囤積零部件 目標(biāo)明年智能手機(jī)出貨7000萬部;消息稱 MiOS 僅限國(guó)內(nèi),小米 28208
- 蘋果推送iOS17.0.3,解決iPhone15Pro系列存在機(jī)身過熱 216
- Testin云測(cè)兼容和真機(jī)服務(wù)平臺(tái)中上線iPhone 15系列手機(jī) 208
- 利爾達(dá)推出搭載HooRiiOS的Matter模組 145
- 運(yùn)放參數(shù)解析:輸入偏置電流(Ibias)和失調(diào)電流(Ios) 128
- 昆侖太科發(fā)布支持國(guó)產(chǎn)飛騰騰銳D2000芯片的開源BIOS固件版本 448