成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

AppHost:大前端融合下的 Hybrid 開發(fā)解決方案

XBaron / 1587人閱讀

摘要:接口管理獨(dú)立于的版本號,使用特性嗅探實(shí)現(xiàn)新舊的兼容,簡單直觀。其中在網(wǎng)易有錢上使用了年多,支持了網(wǎng)易有錢的不斷增長的業(yè)務(wù)需求,期間解決了很多遇到的通有的問題。目前還沒有在線上系統(tǒng)中使用,目前正逐步將整體接入網(wǎng)易嚴(yán)選和網(wǎng)易推手。

目前移動端開發(fā)還處于一個(gè)高速發(fā)展的階段,為了應(yīng)對快速增長業(yè)務(wù)需求,移動開發(fā)需要更高迭代響應(yīng)速度,從前期涌現(xiàn)出了以 React Native、Weex 為代表的 web 技術(shù)棧,到現(xiàn)在的 flutter 為代表的容器棧,這些跨度開發(fā)框架試圖提高開發(fā)效率的同時(shí),也擁有優(yōu)秀的運(yùn)行效率,目前看起來正在接近這個(gè)目標(biāo)。
這些技術(shù),加上 native 開發(fā)技術(shù),在不同應(yīng)用場景下,我們可以選擇最合適的技術(shù)棧,而最古老的跨端技術(shù)方案 - Hybrid, 在中小型項(xiàng)目和不復(fù)雜的需求中,依然是最合適的選擇,目前在網(wǎng)易嚴(yán)選主站,商品詳情、促銷活動、第三方頁面展示還是用 Hybrid 實(shí)現(xiàn)的。 AppHost 提供的就是傳統(tǒng)意義上用 web 技術(shù)為 native 開發(fā)業(yè)務(wù)功能的能力。

AppHost 是一套解決 H5 和 native 協(xié)作開發(fā)的整體框架和服務(wù)。試圖解決 native 和 H5 目前迭代頻繁、時(shí)間倉促造成質(zhì)量不高,業(yè)務(wù)膨脹后代碼混亂,兩端聯(lián)調(diào)困難,多端協(xié)作彼此割裂等痛點(diǎn)。
作為一種 JSBridge 的實(shí)現(xiàn)方法,AppHost 像一座橋,將 native 和 H5 開發(fā)打通;
一邊是提供設(shè)計(jì)良好的 native framework 和相關(guān) protocol ,提高 native 接口的交付能力和開發(fā)質(zhì)量;
一邊是為 H5 開發(fā)的頁面和 native 聯(lián)調(diào),提供輔助調(diào)試工具和性能調(diào)優(yōu)工具,讓前端開發(fā)者對 H5 in App 的調(diào)試體驗(yàn)像調(diào)試原生瀏覽器一樣,從而提高質(zhì)量和提升開發(fā)效率。

Hybrid 的接口開發(fā)生命周期


這是實(shí)際工作中 JSBridge 面對的工作,很多是重復(fù)、乏味,又容易出錯的。常見場景——“新需求里需要增加新的接口”的流程是這樣的:

新增一個(gè)文件或者在舊文件上編寫代碼,新開接口和屬性

在 Android、native 和 H5 共有的接口文檔上補(bǔ)充 API 接口。如果有需要,需要升級 JSBridge 接口的版本號

將改動通知 Android、H5 等相關(guān)方

增加測試用例(testcase 應(yīng)該 iOS 、Android、 QA、前端,共建測試用例)

如果有必要需要告知,QA 增加自動化測試用例

前端需要考慮版本號升級之后,需不需要對新舊 native App 做兼容實(shí)現(xiàn)

AppHost 處理負(fù)責(zé) JSBridge 接口從 0 到 N 個(gè)、1歲到 5歲、出生到死亡周期,以及 JSBridge 之間的關(guān)系管理、對外提供數(shù)據(jù)支持等工作,所以它是解決方案,而不是個(gè)技術(shù)方案(如WebViewJavascriptBridge只是技術(shù)方案)。

AppHost 的功能總覽

分兩部分,AppHost Core 為 native 開發(fā)提供基礎(chǔ)模塊和基本功能封裝;AppHost Debug Service 為 native、H5 前端、QA 等人員提供調(diào)試服務(wù)。下面詳細(xì)介紹功能。

AppHostCore

webview 核心,包含常見需求的實(shí)現(xiàn)邏輯,包括

native 和 H5 的通訊協(xié)議,封裝了 native 端解析、H5 端發(fā)送邏輯。native 開發(fā)人員只需要面向業(yè)務(wù)編碼,然后通知 H5; H5 開發(fā)面向業(yè)務(wù)開發(fā),只需關(guān)心兩個(gè)接口。

新增接口用繼承 AppHostResponse 的方式實(shí)現(xiàn),解決業(yè)務(wù)需求增長、代碼無序膨脹的問題。特別的,支持業(yè)務(wù)接口的延遲加載,不使用的接口,不會初始化。

Cookie管理,最煩人的 Cookie 丟失和 Cookie 同步問題,已經(jīng)內(nèi)部妥善處理

一些人性化的小優(yōu)化。更合理的進(jìn)度條、瀏覽歷史滾動記憶、增強(qiáng)的 native 執(zhí)行 js 代碼能力、基本的 API 接口調(diào)用鑒權(quán)等等。

JSBridge 接口管理

獨(dú)立于 App 的版本號,H5 使用特性嗅探實(shí)現(xiàn)新舊 App 的兼容,簡單直觀。

API 接口簽名,可實(shí)現(xiàn) API 參數(shù)粒度的接口升級和開關(guān)管理。

資源加載

加載遠(yuǎn)程 URL,單向同步 Cookie 到 WKWebView。

本地文件夾資源,可實(shí)現(xiàn)用離線包渲染動態(tài)頁面。

某些業(yè)務(wù)場景下,可實(shí)現(xiàn) HTML 里的 xhr、js、css 資源請求攔截,不需要動用私有 webkit API。

API 接口文檔一體化和 testcase 自動化

對于“native 為 H5 提供接口” 這件事情,如前述,需要多方的協(xié)調(diào)同步,很容易出現(xiàn):接口文檔過時(shí)、文檔缺失、接口查找麻煩、接入新 API 不直觀、測試不方便,QA 回歸不充分,或者是多個(gè)環(huán)節(jié)重復(fù)寫測試用例等壞情況。
AppHost 的 API 文檔模塊,將這些環(huán)節(jié)需要的文檔和測試用例,全部集中到開發(fā)階段完成,后續(xù) H5 查詢的 API 文檔、QA 走查用例、自動化測試,全部自動生成。保證接口文檔的最新,省去多個(gè)環(huán)節(jié)的重復(fù)建設(shè),內(nèi)置的自動化測試支持,方便 QA 使用腳本回歸測試。

AppHost Debug Service

Remote Debugger 通過電腦瀏覽器提供 Debug Service

電腦瀏覽器具有訪問方便、可展示區(qū)域大、輸入快捷方便、易于集成第三方調(diào)試工具的特點(diǎn)。相同的調(diào)試功能,理論上也可以集成在手機(jī) App端,但是體驗(yàn)會大打折扣,是個(gè)低效的調(diào)試方案。

幫助系統(tǒng)和文檔。

在瀏覽器端 Console ,實(shí)現(xiàn)了一個(gè)小型命令行程序,指導(dǎo)用戶如何使用本 Remote Debugger;同時(shí)還提供 即時(shí)查詢 API 接口 名稱、參數(shù)解釋、示例代碼等功能,讓你的工作流不需要切換到打開的API 文檔文件或者瀏覽器,保持操作上下文。

REPL(Read-Eval-Print Loop)環(huán)境

Console 里實(shí)現(xiàn)了完整 webview 執(zhí)行環(huán)境,將傳統(tǒng)語言的探索、調(diào)試新特性的體驗(yàn)帶到 Remote Debugger,如同 Bash 的 shell prompt和 ruby 的irb 那樣。在這里輸入的所有命令如同在遠(yuǎn)端 webview 的 console 里執(zhí)行一樣。當(dāng)然還有Off mobileOn mobile 來切換當(dāng)前命令是本地執(zhí)行還是遠(yuǎn)端 webview 執(zhí)行。

輔助功能

Console 提供了左側(cè)快捷命令;內(nèi)置了命令的歷史記憶,實(shí)現(xiàn)上下箭頭遍歷;支持 :clear ,清除當(dāng)前界面等功能

擴(kuò)展性

和 Safari 的 Develop 工具配合

我們知道 Safari Develop 工具是在頁面打開后才會出現(xiàn)。如果我們有個(gè)頁面由 302 跳轉(zhuǎn),我們想抓到想要的請求是做不到的。接入 AppHost 之后,我們保持Safari Develop 工具打開的狀態(tài),在 Remote Debugger 輸入命令 ,讓當(dāng)前 webview 加載初始 URL,這樣我們就可以抓到從 302 跳轉(zhuǎn)開始后的網(wǎng)絡(luò)請求了。

集成 weinre。

通過:weinre -- 命令,不需要改動被調(diào)試頁面的源碼,即可提供 weinre 調(diào)試服務(wù),而且一次注入當(dāng)前 App 啟動后全程有效,后續(xù)頁面無需再注入。用這個(gè)特性,甚至可以調(diào)試第三方頁面。

支持 console.log。這個(gè)無需贅言,曾經(jīng)的` https://jsconsole.com/ 是首選的遠(yuǎn)程調(diào)試服務(wù)。AppHost 內(nèi)置此功能。

演示
6.1 基本操作演示

6.2 **查看嚴(yán)選首頁的 onload 事件時(shí)間**

6.3 **使用 weinre 調(diào)試嚴(yán)選頁面**

AppHost 愿景目標(biāo)

AppHost 來自作者近年 webview 開發(fā)實(shí)踐總結(jié),真切的感受到這套設(shè)計(jì)在面對業(yè)務(wù)快速發(fā)展、技術(shù)重構(gòu)需求、多端協(xié)作等方面的優(yōu)越性,特整理分享出來,不僅面向我們以后的業(yè)務(wù)開發(fā),也希望拋磚引玉,和各位同行共享知識,以

指導(dǎo) native 端業(yè)務(wù)成長、保持 App 可擴(kuò)展、可維護(hù)

輔助 H5 快速開發(fā)、性能調(diào)優(yōu),提高產(chǎn)品體驗(yàn)

在此,希望 AppHost 能幫你解決在 webview 相關(guān)開發(fā)過程中遇到的常見問題,讓你更多的時(shí)間花在如何完善業(yè)務(wù)邏輯,加快 App 成長上面,為你的開發(fā)工作帶來切實(shí)的幫助,避免 996,享受工作和生活樂趣。

采用AppHost 的 App 有哪些?

目前 AppHost 只有 iOS 端。其中 AppHost Core 在網(wǎng)易有錢上使用了 3 年多,支持了網(wǎng)易有錢的不斷增長的業(yè)務(wù)需求,期間解決了很多 WKWebView 遇到的通有的問題。 AppHost Debug Service 目前還沒有在線上系統(tǒng)中使用,目前正逐步將 AppHost 整體接入網(wǎng)易嚴(yán)選和網(wǎng)易推手。

使用指南

詳細(xì)的技術(shù)方案和接入方式見以下鏈接

AppHostExample 項(xiàng)目,https://github.com/hite/AppHo...

AppHost 項(xiàng)目,https://github.com/hite/AppHost

希望各位同行也能分享各自解決方案,共同提高行業(yè) Hybrid 開發(fā)體驗(yàn)。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/103816.html

相關(guān)文章

  • JavaScript 就要統(tǒng)治世界了?

    摘要:歡迎使用中文文檔架構(gòu)概覽是網(wǎng)易項(xiàng)目團(tuán)隊(duì)開發(fā)的一個(gè)基于進(jìn)行開發(fā)的應(yīng)用層框架,提供了一個(gè)輕量級的容器來編寫簡單可維護(hù)的。 JavaScript 可以……嘛,不就是操作一下 DOM,可以讓元素飛來飛去嗎JavaScript 是……不就是用 jQuery 讓網(wǎng)頁動起來,頂多就是再用用 Ajax 和后端進(jìn)行一下數(shù)據(jù)交換嗎JavaScript 是一門……最討厭和鄙視這種弱類型不需要編譯的腳本語言...

    AbnerMing 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<