摘要:起因一天在群里面朋友問了一個這么一個問題看了之后自己梳理了一遍,在此和大家分享一下,這個就要從客戶端開發(fā)的過程來講了原生開發(fā)在移動互聯(lián)網(wǎng)剛興起的時候,最初的開發(fā)模式是通過或開發(fā)原生應(yīng)用,有一些網(wǎng)頁跳轉(zhuǎn)的處理,使用之后增加了,安卓使用的是這個
起因
一天在群里面朋友問了一個這么一個問題:
看了之后自己梳理了一遍,在此和大家分享一下,這個就要從客戶端開發(fā)的過程來講了;
原生開發(fā)在移動互聯(lián)網(wǎng)剛興起的時候,最初的開發(fā)模式是通過swift或java開發(fā)原生應(yīng)用,有一些網(wǎng)頁跳轉(zhuǎn)的處理,ios使用UIWebView(ios8之后增加了WKWebView),安卓使用的是webview;這個時候業(yè)務(wù)模式還不是特別復(fù)雜,用戶也沒有那么多,迭代時間的的長短也不是特別強(qiáng)烈。 隨著業(yè)務(wù)的發(fā)展,這種開發(fā)模式逐漸就出現(xiàn)了一下問題
業(yè)務(wù)逐漸變得龐大,原生開發(fā)需要更多的人員
業(yè)務(wù)變得更加復(fù)雜,多端的功能開發(fā)完全是重復(fù)的
ios審核發(fā)版的時間限制,可能只是一個小的UI的修改,都需要重新發(fā)版
hybrid (native+H5)基于上面的這些困擾,出現(xiàn)了一類似PhoneGap、Ionic的hrbrid應(yīng)用,他們的作用是把h5開發(fā)好的頁面,通過打包封裝處理到webview里面,最后瀏覽操作的其實還是h5,只不過這個過程h5可以調(diào)取一下原生的功能,而這個h5調(diào)用原生功能實現(xiàn)的底層概念叫做jsbridge,或者說jsbridge是native原生與h5通信實現(xiàn)的一個過程。而這PhoneGap、Ionic之類的應(yīng)用的核心就是它們實現(xiàn)了這么一個過程,并且把接口暴露出來,上層h5調(diào)用就好;
簡單來說,PhoneGap框架流程就以下三步:
1、js 通過prompt接口往anroid native 發(fā)送消息
2、android 本地攔截WebChromeClient 對象的 onJsPrompt函數(shù),截獲消息
3、android本地截獲到消息以后,通過Pluginmanager把消息分發(fā)到目的插件,同時通過jsMessageQueue收集需要返回給js的數(shù)據(jù);
引用網(wǎng)上的一張圖,一起來看看PhoneGap底層框架類圖~~
但是這個模式在取決于WebView的解析渲染效率,在頭幾年硬件還不死特別硬的時候,h5的渲染及交互不是特別友好,會出現(xiàn)卡頓;
RN、weex (DSL)由于hybrid的開發(fā)成本一套多用和h5發(fā)版不需要審核的因素,facebook研究處理相應(yīng)模式的框架,把對于性能影響的渲染的步驟做了處理,不管是RN還是Weex,他們的開發(fā)語言都是js、html、css,只不過在編譯的時候,比如RN轉(zhuǎn)換成了相應(yīng)的Virtual DOM之后,在native的底層實現(xiàn)了一套把virtual DOM轉(zhuǎn)換成原生組件的機(jī)制,這個過程是把virtual DOM轉(zhuǎn)換成了類似JSON的語言形式,最后通過自己的解析模式給實現(xiàn)成native的組件,這個性能自然也就會好很多,但是這個實現(xiàn)類似的JSON,也可以叫做DSL,sql語句其實也會DSL,包括html也算是一套DSL語言。
而在ios里面有一個JavaScriptCore的框架,通過它就能實現(xiàn)JS和OC(通過它可以調(diào)用和渲染原生模塊)交互
架構(gòu)的模式還在不斷的演進(jìn),比如最近又流行起來了hybrid的模式。上面的幾個問題通過這篇文章也做了個大概的簡述,更加深入的東西,還需要不斷學(xué)習(xí);
歡迎關(guān)注玄說前端公眾號,后續(xù)將推出系列文章《一個大型圖形化應(yīng)用0到1的過程》,此賬戶也將同步更新
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/98487.html
摘要:的語言的動態(tài)性意味著我們可以使用以上種數(shù)據(jù)類型表示變換過渡動畫實現(xiàn)案例前端掘金以下所有效果的實現(xiàn)方式均為個人見解,如有不對的地方還請一一指出。 讀 zepto 源碼之工具函數(shù) - 掘金Zepto 提供了豐富的工具函數(shù),下面來一一解讀。 源碼版本 本文閱讀的源碼為 zepto1.2.0 $.extend $.extend 方法可以用來擴(kuò)展目標(biāo)對象的屬性。目標(biāo)對象的同名屬性會被源對象的屬性...
閱讀 2654·2023-04-25 15:22
閱讀 2824·2021-10-11 10:58
閱讀 1045·2021-08-30 09:48
閱讀 1851·2019-08-30 15:56
閱讀 1730·2019-08-30 15:53
閱讀 1089·2019-08-29 11:16
閱讀 1048·2019-08-23 18:34
閱讀 1638·2019-08-23 18:12