精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

寫給前端的跨平臺方案、跨端引擎的本質

開發 前端
近些年來,前端領域的跨端技術越來越多了:react native、weex、flutter、electron、kraken 等等。那么多跨端方案,他們有沒有通用的思路?我們能不能從這么多方案中找出本質的原理?

[[401770]]

本文轉載自微信公眾號「神光的編程秘籍」,作者神說要有光zxg。轉載本文請聯系神光的編程秘籍公眾號。

近些年來,前端領域的跨端技術越來越多了:react native、weex、flutter、electron、kraken 等等。

那么多跨端方案,他們有沒有通用的思路?我們能不能從這么多方案中找出本質的原理?

本文會嘗試探究探究以下問題:

  • 什么是跨平臺
  • 有哪些方案是跨平臺的
  • 跨端和跨平臺的區別是什么
  • 前端領域有哪些跨端方案
  • 跨平臺、跨端的通用原理是什么

什么是跨平臺

我們知道,cpu 有不同的架構和指令集,上層也有不同的操作系統,一個系統的可執行文件在另一個系統上就是不可執行的,比如 windows 的 exe 文件在 mac 上就不能直接執行。不同的系統就是不同的運行平臺。可執行文件是不跨平臺的。

不同平臺提供的 api 不同,所以代碼邏輯可能也不同,需要不同平臺單獨維護代碼。這樣就帶來了幾個問題:

  • 多平臺各自開發,怎么保證功能是一致的
  • 多平臺各自開發,那是不是得各自測試,開發和測試的人力都是多份的

所以出現了跨平臺的一些技術,目標是一份代碼跑在任意平臺。

我們先來看一些各領域的跨平臺方案:

瀏覽器

操作系統不同,瀏覽器上跑的網頁的代碼確實同一份。瀏覽器就是一種歷史悠久的跨平臺方案。

網頁跨平臺不意味著瀏覽器也是跨平臺的,瀏覽器的可執行文件還是每個平臺單獨開發和編譯的,但是他們支持的網頁解析邏輯一樣,這樣上面跑的網頁就是跨平臺的。

瀏覽器提供了一個容器,屏蔽了底層差異,提供了統一的 api(dom api),這樣就可以實現同一份代碼跑在不同平臺的統一的容器里。這個容器叫做瀏覽器引擎,由 js 引擎、渲染引擎等構成。

docker

docker 是一種虛擬化技術,可以在操作系統之上加一個虛擬層,在這層之上劃分一到多個容器,容器里再去跑系統、app,這樣可以實現硬件和軟件的分離,動態分配硬件資源給容器,并且方便 app 運行環境的整體遷移(保存成鏡像)。

docker 很明顯也是一種跨平臺技術,同一個鏡像可以跑在任何操作系統的 docker 上。只要不同操作系統實現同樣的容器即可。

jvm

java 是一門編譯 + 解釋的語言,java 源碼編譯成字節碼,然后字節碼直接在 vm 上解釋執行。

java 為什么這么火呢?主要是因為跨平臺。

c、c++ 這種語言寫的代碼需要編譯成不同操作系統上的可執行文件來跑,而且每個平臺的代碼可能還不一樣,需要寫多份。

java 因為提供了 jvm 容器,只要把源碼編譯成 jvm 能解釋的字節碼就行了,而且 jdk 提供了統一的 api,分別由不同操作系統的底層 api 來實現,這樣對于 java 代碼來說,不同操作系統的代碼是一致的。

jvm 也是通過容器的技術實現了一份代碼跑在多個平臺,而且 jre 提供了統一的 api,屏蔽掉了底層的差異。

node、deno

node 和 deno 也是跨平臺的技術,通過提供一套一致的 api,讓其上的 js 代碼可以跨平臺。這些 api 也是不同平臺各自實現的。

electron

electron 內置了 chromium,并為其注入了 node 的 api 和一些 GUI 相關的 api,是基于兩大跨平臺技術綜合而成的跨平臺方案。基于這些方案的組合使得 electron 支持用前端技術開發桌面端。

跨平臺方案的優缺點

跨平臺方案的優點很明顯,就是一份代碼跑在不同平臺的同樣的容器內,不用不同平臺單獨開發,節省成本。

但是跨平臺方案也有缺點:

  • 因為多了一層容器,所以性能相比直接調用系統 api 會有所下降
  • 為了實現多平臺的一致,需要提供一套統一的 api,這套 api 有兩個難題:
    • api 怎么設計。要綜合不同平臺的能力,取一個合適的集合來實現。設計上有一定難度。node、deno、java 都抽象了操作系統的能力,提供了各自的跨平臺 api
    • 部分 api 很難做到多平臺的一致性
    • 當容器沒有提供的能力需要擴展的時候比較麻煩,比如 js 引擎的 bridge、 jvm 的 jni、node 的 c++ addon 等都是為這個容器擴展能力的方式

前端領域的跨端方案

跨平臺指的是跨操作系統,而跨端是指客戶端。

客戶端的特點就是有界面、有邏輯,所以包含邏輯跨端和渲染跨端。主要的客戶端有 web、安卓、ios、iot 設備等。

現在主流的跨端方案有 react native、weex、flutter、kraken 以及各家自研的跨端引擎等。

react native

跨端包括邏輯跨端和渲染跨端,rn 的邏輯跨端是基于 js 引擎,通過 bridge 注入一些設備能力的 api,而渲染跨端則是使用安卓、ios 實現 react 的 virtual dom 的渲染。

其中 native api 和組件(灰色畫出的部分)并沒有做到雙端一致,而且有的時候擴展圖中灰色部分需要原生配合,混雜 rn 代碼和自己擴展的代碼導致代碼比較難管理。最著名的事件就是 airbnb 從最大的 react native 支持者到棄用 react native。

weex

weex 也是類似的思路來實現跨端的,不過他對接的上層 ui 框架是 vue,而且努力做到了雙端的組件 和 api 的一致性(雖然后續維護跟不上了)。架構和上圖類似。

flutter

flutter 是近些年流行的跨端方案,跨的端包括安卓、ios、web 等。它最大的特點是渲染不是基于操作系統的組件,而是直接基于繪圖庫(skia)來繪制的,這樣做到了渲染的跨端。邏輯的跨端也不是基于 js 引擎,而是自研的 dart vm 來跨端,通過 dart 語言來寫邏輯,

kraken

跨端包括兩部分,渲染跨端和邏輯跨端。有時候只需要渲染跨端、有時候只需要邏輯跨端,有的時候需要完整的跨端引擎,這 3 種情況都有各自的適用場景。

kraken 就是一個跨端渲染引擎,基于 flutter 的繪圖能力實現了 css 的渲染,實現了渲染的跨端。

自研渲染引擎

跨端引擎很依賴底層實現的組件和 api,用開源方案也一樣得擴展這部分,所以有一定規模的團隊都會選擇自研。

自研跨端引擎會和 rn、weex 不同:

  • 渲染部分不需要實現 virtual dom 的渲染,而是直接對接 dom api,上層應用基于這些 dom api 實現跨端渲染。這樣理論上可以對接任意前端框架。
  • 邏輯部分也是基于 js 引擎,通過 binding 直接注入一些 c++ 實現的 api,或者運行時通過 bridge 來注入一些安卓、ios 實現的 api。

自研跨端引擎的好處是組件和 api 可以自己擴展,更快的響應業務的需求。其中組件和 api 的雙端一致性,以及統一的 api 的設計都是難點。

跨端的通用原理是什么

其實跨端和跨平臺的思路類似,都是實現一個容器,給它提供統一的 api,這套 api 由不同的平臺各自實現,保證一致的功能。

具體一些的話,跨端分為渲染和邏輯跨端,有的時候只需要單獨的渲染跨端方案(比如 karen)和邏輯跨端方案,有的時候需要完整的跨端引擎。

weex、react native 的渲染部分都是通過實現了 virtual dom 的渲染,用安卓、ios 各自的渲染方式實現,邏輯部分使用 js 引擎,通過 bridge 注入一些安卓、ios 的 api。

flutter 則是直接使用 skia 繪圖庫繪制,并且邏輯跨端使用 dart vm。

但是不管具體實現怎樣,思路都大同小異:跨端引擎需要實現一個渲染引擎、實現一個 vm,基于這套架構實現各種組件和 api,跨端容器上層對接一個 ui 框架,再上層的業務代碼可以基于容器的 api 實現跨端的渲染和邏輯

web container

這兩天 web container 比較火,其實也是一種跨平臺技術,它是在瀏覽器里面實現的容器,通過 wasm 實現了 node 的 api,這樣在這個容器里面可以跑 node 代碼。其實思路比較常見,但是是一個新場景。

瀏覽器容器之上又跑了個容器,容器套娃。

總結

我們聊了跨平臺和跨端的區別,跨平臺是指跨操作系統,而跨端則是指跨客戶端。

跨平臺技術聊了 docker、瀏覽器、jvm、node、deno、electron、web container 等,他們都是跨平臺(操作系統)的方案,跨平臺有優點也有缺點,缺點就在于 api 的設計比較難,node、deno、java 等都有自己的一層 api 設計;api 一致性的保障也比較困難;其次就是擴展方式復雜一些(jvm 的 jni、node 的 c++ addon 等)。

跨端方案聊了 react native、weex、flutter、kraken 等,有的是綁定了 react、vue 等前端框架,直接從 virtual dom 渲染,有的是實現了 dom api,可以對接任意前端框架。當然可以單獨做渲染或邏輯跨端。渲染跨端或者用安卓、ios 提供的方式,或者自己繪制,邏輯跨端或者用 js 引擎(可以對接前端框架)或者用 dart vm。

希望這篇文章可以讓你理解跨端和跨平臺的容器的思路和優缺點,遇到一些新技術(比如 web container)也能快速的理解。

 

責任編輯:武曉燕 來源: 神光的編程秘籍
相關推薦

2022-02-24 18:51:04

跨端框架方案

2016-08-27 22:02:11

前端跨端全棧

2014-05-26 16:52:29

移動前端web組件

2023-03-05 18:36:52

ChatGpt跨平臺ORM

2024-03-14 11:06:37

JavaScript引擎探索

2019-10-25 10:42:51

框架Web開發

2015-05-13 10:09:39

移動跨平臺開發

2014-08-06 14:56:15

2024-05-22 09:54:19

2020-08-13 15:36:14

移動端跨平臺小程序

2024-08-13 15:50:57

2014-09-26 22:21:33

2022-05-20 11:09:15

Flybirds多端測試UI 自動化測試

2016-11-01 21:51:03

phpjavascript

2025-01-26 08:35:01

First UI移動端開發

2016-11-29 13:03:46

微信客戶端跨平臺組件

2020-03-23 13:16:05

前端跨平臺開發

2014-10-14 11:25:56

CrossApp開發引擎移動App

2011-07-06 11:16:32

Unity3DCocos2dSparrow Fra

2014-06-04 10:37:20

CrossApp開源跨平臺開發引擎
點贊
收藏

51CTO技術棧公眾號

亚洲一二三四视频| 亚洲一区三区电影在线观看| 日本少妇在线观看| 亚洲永久精品唐人导航网址| 欧美性色19p| 视频一区二区在线| 国产夫妻在线观看| 亚洲精品孕妇| 色噜噜久久综合伊人一本| 色婷婷狠狠18禁久久| av日韩电影| 亚洲婷婷综合色高清在线| 国产一区二区三区四区五区加勒比| 99精品在线播放| 亚洲五月综合| 亚洲一区999| 成人一区二区三区仙踪林| 丝袜美腿诱惑一区二区三区| 亚洲视频在线一区二区| 国产视频一区二区三区四区| 在线视频 91| 亚洲美洲欧洲综合国产一区| xxxxx91麻豆| 91视频啊啊啊| 视频一区日韩精品| 精品视频在线看| 亚洲不卡中文字幕无码| 成人av福利| 久久精品一二三| 国产视频在线观看一区| 99国产精品久久久久99打野战| 性欧美xxxx大乳国产app| 欧美精品激情在线观看| 美国一级片在线观看| 亚洲区小说区| 亚洲电影av在线| 男插女视频网站| 国产亚洲人成a在线v网站 | 蜜桃传媒一区二区| 亚洲精品成人区在线观看| 久久er99热精品一区二区| 欧洲亚洲妇女av| 日韩久久久久久久久| 欧美日本一区| 不卡av电影在线观看| 亚洲av无码国产精品麻豆天美| 国产亚洲成av人片在线观黄桃| 9191久久久久久久久久久| 一区二区三区韩国| 欧美91看片特黄aaaa| 午夜亚洲福利老司机| 成人av在线不卡| 91麻豆国产福利在线观看宅福利| 亚洲欧美自拍偷拍色图| 一区二区视频在线播放| 9色在线视频网站| 国产精品亲子伦对白| 午夜精品一区二区三区四区| 国产专区在线| 国产肉丝袜一区二区| 欧美高清性xxxxhd | 久久国产三级| 欧美美女黄视频| 五月激情五月婷婷| 色综合久久久| 欧美一级欧美三级| 韩国三级与黑人| jazzjazz国产精品麻豆| 亚洲成年人在线| 波多野结衣影院| 在线成人动漫av| 一区二区中文字幕| 亚洲激情图片网| 亚洲精品一区二区妖精| 久久中文字幕在线| 久久精品视频久久| 免费在线亚洲| 国产精品欧美在线| 国产精品视频久久久久久| 国产美女主播视频一区| 99久久无色码| 五月天婷婷激情网| 欧美韩国一区二区| 久久观看最新视频| av日韩中文| 日本福利一区二区| 欧美性受xxxxxx黑人xyx性爽| 免费观看亚洲天堂| 日韩精品在线第一页| 中文字幕有码在线播放| 亚洲激情中文| 7777免费精品视频| 在线观看国产一区二区三区| 国产精一区二区三区| 精品蜜桃传媒| 自拍视频在线播放| 亚洲妇熟xx妇色黄| 在线免费观看av的网站| 99亚洲乱人伦aⅴ精品| 亚洲男人的天堂在线| 色欲一区二区三区精品a片| 红桃视频国产精品| 国产精品一区二区三区久久久| www.午夜激情| 久久久久99精品一区| 少妇久久久久久被弄到高潮| 成人性生活av| 欧美变态凌虐bdsm| 国产探花视频在线播放| 亚洲天堂激情| 国产在线视频一区| 欧美3p视频在线观看| 亚洲激情av在线| 国产97色在线 | 日韩| 中文字幕一区二区三区日韩精品| 正在播放欧美一区| 国产成人无码一区二区三区在线| 精品一区二区久久| 欧美日韩精品久久久免费观看| 国产视频一区二区| 欧美亚洲高清一区二区三区不卡| 国产婷婷在线观看| 亚洲成人二区| 国产精品久久久久久久9999| 日本xxxxwww| 亚洲摸摸操操av| 牛夜精品久久久久久久| 欧美天堂社区| 国内精品久久久久伊人av| 国产精品久久久久久久久久久久久久久久久久 | 亚洲特级片在线| 99久久激情视频| 林ゆな中文字幕一区二区| 欧美不卡视频一区发布| 一区二区www| 国产精品美女久久久久久久网站| 国产一区二区在线视频播放| 成人激情自拍| 欧美激情中文网| 精品人妻一区二区三区四区不卡| 国产精品色婷婷久久58| 成人在线免费播放视频| 蜜臀久久99精品久久一区二区| 久久免费在线观看| 亚洲av无码乱码在线观看性色 | 日韩黄色高清视频| 欧美成人aaaaⅴ片在线看| 国产电影精品久久禁18| 无码毛片aaa在线| 国产视频一区二区在线播放| 日韩中文字幕精品| 在线视频播放大全| 国产精品国产三级国产aⅴ中文| 国产区二区三区| 日韩大片在线观看| 国产精品自产拍高潮在线观看| 黄色av免费在线看| 欧美在线视频全部完| 老司机福利在线观看| 日韩电影在线免费看| 亚洲国产一区二区精品视频 | 色天使在线视频| 亚洲免费激情| 欧美高清性xxxxhdvideosex| 成人开心激情| 欧美黄页在线免费观看| 亚洲精品国产第一综合99久久| 亚洲综合激情视频| 亚洲h色精品| 国产91精品一区二区绿帽| segui88久久综合| 日韩hd视频在线观看| 精品久久久久久久久久久国产字幕| 久久久国产精品午夜一区ai换脸| 黄色在线视频网| 91精品国产乱码久久久久久 | 欧美高清69hd| 日韩美女精品在线| 成人一区二区三区仙踪林| 国产亚洲毛片在线| 亚洲不卡1区| 国产69精品久久| 色综合久久悠悠| 欧美日韩国产综合视频| 欧美日韩不卡在线| 九九热只有精品| 久久久久久久久久久99999| 久久婷五月综合| 欧美日本中文| 日韩福利在线| 亚洲网址在线观看| 国产成+人+综合+亚洲欧美丁香花| 欧美jizz18性欧美| 欧美精品一区二区三区很污很色的 | 国产美女被下药99| 日本一本在线免费福利| 亚洲一区第一页| www.com在线观看| 日韩欧美在线网址| 亚洲成人生活片| 久久久久久久久免费| 永久av免费在线观看| 久久国产日韩| 日韩欧美猛交xxxxx无码| 黑丝美女一区二区| 国产精品swag| 亚洲视频自拍| 欧美一区二区三区图| 国产黄a三级三级三级av在线看 | 在线观看国产免费视频| 看电视剧不卡顿的网站| 国产精品自拍片| 久久精品亚洲人成影院| 欧美久久久久久一卡四| 日韩欧美中文字幕一区二区三区| 国产精品欧美日韩一区二区| 国产精选在线| 不卡av在线播放| www.视频在线.com| 亚洲乱码一区二区| 亚洲成人第一区| 欧美理论片在线| 一级黄色av片| 五月激情丁香一区二区三区| av激情在线观看| 国产精品免费网站在线观看| 国产精品旅馆在线| 小向美奈子av| 久久色中文字幕| 李丽珍裸体午夜理伦片| 国产精品123区| 欧美午夜精品理论片| 日韩中文字幕区一区有砖一区| 国产精品久久中文字幕| 欧美国产三级| 色哺乳xxxxhd奶水米仓惠香| 97在线精品| 无码免费一区二区三区免费播放| 免费一区二区三区视频导航| 九色91国产| 国产精品色呦| 国产免费一区二区| 精品人人人人| 精品国产乱码久久久久久久软件| 7777精品| 国产精品一区二区欧美| 操欧美女人视频| 国产伦精品一区二区三区免费视频 | 亚洲va天堂va国产va久| 久久午夜鲁丝片午夜精品| 亚洲影视在线播放| 久久久精品国产sm调教网站| 一区二区三区av电影| 欧美黄色免费观看| 亚洲成av人在线观看| 国产精品成人久久| 欧美日韩国内自拍| 亚洲自拍一区在线观看| 色婷婷久久久久swag精品| 亚洲欧美偷拍一区| 欧美无人高清视频在线观看| 欧美性受xxx黑人xyx性爽| 欧美婷婷六月丁香综合色| 一级黄色片免费| 91精品久久久久久久99蜜桃| 国产高清第一页| 亚洲精品一区二区三区福利| 亚洲一区二区三区日韩| 美女少妇全过程你懂的久久| 日韩高清国产精品| 日本欧美肥老太交大片| 天天爱天天做天天操| 亚洲色图欧美| 欧美一级视频免费看| 羞羞视频在线观看欧美| 污污网站免费看| 国产乱一区二区| av av在线| 国产日韩在线不卡| 加勒比婷婷色综合久久| 亚洲电影一级黄| 国产女主播喷水视频在线观看| 欧美日韩综合在线| 性中国xxx极品hd| 亚洲免费小视频| 欧美黑人激情| 国产69精品久久久久9| 欧美成人精品三级网站| 亚洲精品免费av| 久操精品在线| 国产内射老熟女aaaa| 久久成人亚洲| 日本女人黄色片| 久久新电视剧免费观看| 欧美成人777| 日本久久一区二区| 国产福利第一页| 国产一级揄自揄精品视频| 免费污视频在线观看| 日韩免费av一区二区| 视频二区欧美| 视频一区国产精品| 精品电影一区| 五月天激情播播| 99精品欧美一区二区蜜桃免费| 久久久久久成人网| 综合一区在线| 久久精品视频在线播放| 成人爽a毛片免费啪啪动漫| 国产精品成人播放| 久久精品66| 亚洲激情免费视频| 日本欧美一区二区| 最新在线黄色网址| 一区二区三区在线不卡| 探花国产精品一区二区| 亚洲免费中文字幕| 蜜桃成人365av| 成人免费在线视频网址| 精品国产123区| 久久久免费视频网站| 成人av在线影院| 欧美成人免费观看视频| 欧美日韩高清一区二区| 免费福利在线观看| 91国内精品久久| 久久午夜影院| 亚洲色欲久久久综合网东京热| 久久99国内精品| 亚洲aaa视频| 日韩欧美在线视频| 五月婷婷狠狠干| 高清在线视频日韩欧美| 亚洲超碰在线观看| 性做爰过程免费播放| 久久www免费人成看片高清| 国产又粗又猛又爽又黄av| 欧美性69xxxx肥| 外国精品视频在线观看 | 欧美一级生活片| 91九色在线porn| 国产精品久久久久久一区二区| 精品在线播放| 久久9精品区-无套内射无码| caoporen国产精品视频| 精品小视频在线观看| 日韩精品一区二区三区在线播放 | 欧美中文字幕在线观看| 超碰在线亚洲| 日本精品久久久久久久久久| 国产福利一区在线观看| 五月天丁香激情| 日韩欧美一卡二卡| 在线观看三级视频| 国产精品国产精品国产专区蜜臀ah | 国产成人综合视频| 538精品在线观看| 精品国产亚洲在线| av人人综合网| 麻豆av一区二区三区| 另类天堂av| 免费看日本黄色片| 7777精品伊人久久久大香线蕉的 | 精品人妻一区二区三区日产乱码 | 九九热精品在线观看| 精品sm捆绑视频| 一本大道色婷婷在线| 日韩精品一区二区三区外面| 日本va欧美va瓶| 黑人狂躁日本娇小| 欧美大片免费久久精品三p| 国产盗摄精品一区二区酒店| 九色91国产| 美女性感视频久久| 欧美老熟妇一区二区三区| 精品美女在线播放| 中文字幕一区久| 一区二区三区四区视频在线| 国产精品羞羞答答xxdd| 亚洲国产精品午夜在线观看| 亚洲色图35p| 中文幕av一区二区三区佐山爱| 欧美精品在欧美一区二区| 2024国产精品| 国产精品欧美激情在线| 国产麻豆一精品一av一免费| 少妇熟女视频一区二区三区 | 色综合影院在线| 精品中文在线| 男人天堂999| 亚洲视频图片小说| 香蕉视频国产在线| 成人动漫网站在线观看| 伊人久久久大香线蕉综合直播| 国产ts在线播放| 欧美一区二区视频观看视频 | 欧美 日韩 国产一区二区在线视频| 午夜福利三级理论电影| 欧美中文字幕不卡| 超碰97免费在线|