在线中文字幕精品第5页,精品伦精品一区二区三区视频,亚洲精品动漫在线线,亚洲色国产av天堂,欧美日韩免费一区中文字幕,国产人妻人伦精品久久久电影

您好,歡迎來(lái)到千界官方網(wǎng)站!
  • 千界
搜索
關(guān)鍵詞:微信商城、營(yíng)銷(xiāo)推廣、營(yíng)銷(xiāo)型網(wǎng)站、微信平臺
199-6543-0236
199-6543-0263

聯(lián)系方式contact us

0551-62150759
客服-鑫鑫:3523331237,客服-蒙蒙:858082063,售后-兵兵:443933605
安徽合肥高新區長(cháng)江西路與樊洼路交口藍光禹洲城營(yíng)銷(xiāo)中心1511-1516
新聞資訊
您現在的位置:新聞資訊 -科技前沿

React-Native與小程序的底層框架比較

發(fā)布時(shí)間:2019-10-29 點(diǎn)擊數:1894

RN框架

框架

  • js層 該層提供了各種供開(kāi)發(fā)者使用的組件以及一些工具庫(事件分發(fā)等)。
  • C 層 主要處理java/OC與js的通信(JSBridge)以及執行JavaScript(JS腳本引擎)。
  • Native層(Object C/Java層) 主要包括UI渲染器、網(wǎng)絡(luò )通信等工具庫。根據不同操作系統有不同的實(shí)現。

UI

基于react框架(虛擬dom)

  • 首先Js層通過(guò)jsx編寫(xiě)的Virtual Dom來(lái)構建Component
  • Native層將其轉成真實(shí)DOM插入到原生 App 的頁(yè)面中。
  • 當有變更,通過(guò)diff算法生成差異對象
  • 最終由 Native層將差異對象應用到原生App的頁(yè)面元素上。

通信

基于JSCore實(shí)現js與java/oc交互

  • 把JSX代碼解析成javaScript代碼
  • 返回一個(gè)數組,數組中會(huì )描述OC/Java對象,描述對象屬性和所需要執行的方法,這樣就能讓這個(gè)對象設置屬性,并且調用方法。

優(yōu)缺點(diǎn)

優(yōu)勢

  • 原生渲染->native體驗
  • react方便前端開(kāi)發(fā)
  • hybrid技術(shù)跨平臺開(kāi)發(fā),成本及難度低于原生
  • 熱更新方便迭代

劣勢

  • 支持的樣式是 CSS 的子集,會(huì )滿(mǎn)足不了 Web 開(kāi)發(fā)者日漸增長(cháng)的需求;
  • 現有能力下還存在的一些不穩定問(wèn)題,比如性能、Bug等。
  • 把渲染工作全都交由客戶(hù)端原生渲染,會(huì )有更接近原生的體驗,但實(shí)際上一些簡(jiǎn)單的界面元素使用 Web 技術(shù)渲染完全能勝任

小程序底層框架

雙線(xiàn)程架構

  • 渲染層使用WebView渲染W(wǎng)XML WXSS
  • 邏輯層使用JsCore執行js腳本
  • webview線(xiàn)程隔離,一個(gè)界面一個(gè)webview線(xiàn)程
  • 線(xiàn)程通信經(jīng)由微信native
  • 邏輯層網(wǎng)絡(luò )請求經(jīng)由微信native轉發(fā)

原因

  • UI渲染跟 JavaScript 的腳本執行分別在兩個(gè)線(xiàn)程,從而避免一些邏輯任務(wù)搶占UI渲染的資源。
  • 為了解決管控與安全問(wèn)題,提供一個(gè)沙箱環(huán)境來(lái)運行開(kāi)發(fā)者的JavaScript 代碼(邏輯層),從而阻止開(kāi)發(fā)者使用一些瀏覽器提供的,諸如跳轉頁(yè)面、操作DOM、動(dòng)態(tài)執行腳本的開(kāi)放性接口。
  • 渲染層和邏輯層的分離也給在不同的環(huán)境下(小程序與小程序開(kāi)發(fā)者工具)運行提供了可能性

UI

1.頁(yè)面渲染

1.在渲染層,宿主環(huán)境會(huì )把WXML可以先轉成JS對象,然后再渲染出真正的Dom樹(shù)。

2.在邏輯層發(fā)生數據變更的時(shí)候,需要通過(guò)宿主環(huán)境提供的setData方法把數據從邏輯層傳遞到渲染層

3.對比前后差異,把差異應用在原來(lái)的Dom樹(shù)上,渲染出正確的UI界面

2.組件系統

Exparser組件框架 原生組件

原生組件渲染時(shí)

1.渲染層webview創(chuàng )建組件,插入到DOM樹(shù)中后計算布局(位置與寬高)

2.通過(guò)通信機制通知Native,Native會(huì )根據布局插入一塊原生區域并渲染

3.當webview得知位置或寬高發(fā)生變化時(shí),通知Native做相應的調整

通信

視圖層<->客戶(hù)端(大部分原生組件涉及)

  • iOS 利用WKWebView 的提供 messageHandlers 特性
  • 安卓則是往 WebView 的 window 對象注入一個(gè)原生方法,最終會(huì )封裝成 WeiXinJSBridge 這樣一個(gè)兼容層

邏輯層<->客戶(hù)端

  • iOS平臺可以往JavaScripCore框架注入一個(gè)全局的原生方法
  • 安卓方面則是跟渲染層一致的

開(kāi)發(fā)者工具

  • 開(kāi)發(fā)者工具中,邏輯層實(shí)際上是使用一個(gè)隱藏著(zhù)的標簽來(lái)模擬JSCore的。并通過(guò)將JSCore中不支持的BOM對象局部變量化,使得開(kāi)發(fā)者無(wú)法在小程序代碼中正常使用BOM,從而避免不必要的錯誤
  • 開(kāi)發(fā)者工具底層維護著(zhù)一個(gè)WebSocket服務(wù)器,用于在WebView與開(kāi)發(fā)者工具之間建立可靠的消息通訊鏈路,使得接口調用,事件通知,數據交換能夠正常進(jìn)行,從而使小程序模擬器成為一個(gè)統一的整體

優(yōu)缺點(diǎn)

優(yōu)勢:渲染層和邏輯層分離->渲染快、加載快

劣勢:線(xiàn)程通信延時(shí),setData沒(méi)有diff操作,頻繁操作會(huì )有明顯性能問(wèn)題

總結

相同點(diǎn)

  • 都具有hybrid技術(shù)的優(yōu)點(diǎn)
  • 接近原生的體驗
  • 跨平臺開(kāi)發(fā)
  • 使用Web 相關(guān)技術(shù)框架來(lái)編寫(xiě)業(yè)務(wù)代碼
  • 各自實(shí)現了跨語(yǔ)言通訊方案完成Native(Java/Objective-c/…)端與JavaScript(小程序中為渲染層和邏輯層)的通訊

不同點(diǎn)

渲染

  • 小程序使用瀏覽器內核來(lái)渲染界面(小部分原生組件由客戶(hù)端參與渲染),界面主要由成熟的Web技術(shù)渲染,輔之大量的接口提供豐富的客戶(hù)端原生能力
  • RN是客戶(hù)端原生渲染


在線(xiàn)咨詢(xún)
在線(xiàn)咨詢(xún)
在線(xiàn)咨詢(xún)
在線(xiàn)咨詢(xún)
咨詢(xún)電話(huà)
199-6543-0236
199-6543-0263
0551-62150759
在線(xiàn)咨詢(xún)
在線(xiàn)咨詢(xún)
在線(xiàn)咨詢(xún)
在線(xiàn)咨詢(xún)
在線(xiàn)咨詢(xún)
在線(xiàn)咨詢(xún)
在线中文字幕精品第5页,精品伦精品一区二区三区视频,亚洲精品动漫在线线,亚洲色国产av天堂,欧美日韩免费一区中文字幕,国产人妻人伦精品久久久电影 色欲香天天天综合网站| 亚洲国产精品嫩草影院在线观看| 亚洲成年电影在线播放| 中文字幕一区二区三区不卡| 免费的av不用播放器的| 日韩精品射精管理在线观看| 伊人亚洲综合网成人| 亚洲精品无码成人a片蜜臀| 亚洲午夜精品一区二区蜜桃| 国国产a国产片免费| 一级黄带的精品资源| 亚洲男人天堂最新版| 中文字幕版手机在线播放| 亚洲AV无码精品一区二区入口| 精品人妻无码一区二区三区性| 少妇激情a∨一区二区三区| 日韩精品免费无码专区| 一区二区精品成人| 中国少妇初尝黑人巨高清| 亚洲精品成a人在线观看| 欧美性色一级在线观看| 国产清纯美女爆白浆视频| 国产成人无码aa精品一区| 亚洲加勒比久久88| 亚洲午夜福利精品无码| 亚洲av无码国产在丝袜线观看| 中文字幕在线99| 亚洲一区在线播放| 亚洲一区在线视频| 亚洲一区二区精品| 精品国产鲁一鲁一区二区| 亚洲都市校园激情另类| 一级毛片在线播放| 精品久久久久久中文字幕大豆网| 国产激情久久久久影院| 亚洲免费高清视频一区二区三区| 一色屋精品视频在线观看| 免费无码蜜臀在线观看| 亚洲日韩中文字幕无码一区| 亚洲图片欧美专区一二| 亚洲欧美日韩国产专区一区| http://1937-7-7.com http://szshupai.com http://51hxzk.com http://whzj99.com http://91shuige.com http://qjsyl.com