精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

欧美精品丝袜中出| 欧美国产乱子伦 | 91系列在线观看| 九九热精品免费视频| 爽爽窝窝午夜精品一区二区| 欧美日韩在线三级| 国产一区二区三区小说| 精品视频一二三| 国产乱一区二区| 欧美一级在线播放| 亚洲xxxx3d动漫| 久久综合影院| 亚洲第一网站男人都懂| 中文字幕av专区| 女人高潮被爽到呻吟在线观看| 国产精品美女视频| 久久大片网站| 朝桐光av在线一区二区三区| 日韩二区三区四区| 97欧美精品一区二区三区| frxxee中国xxx麻豆hd| 日韩人体视频| 亚洲成人av中文字幕| 精品综合久久久久| 香蕉成人影院| 欧美性生活大片免费观看网址| 成人在线免费高清视频| 国产在线一二三区| 91免费观看国产| 国产精品一区二区欧美| aaa一区二区| 久久国产精品99久久人人澡| 欧美性视频精品| 国产无遮挡裸体免费视频| 天天射天天综合网| 自拍视频国产精品| 人妻视频一区二区| 久久av网址| 国产视频精品免费播放| 香港三日本8a三级少妇三级99| 国产精品日本一区二区不卡视频| 欧美性受xxxx| 天天爱天天操天天干| 欧美色网一区| 色综合视频在线观看| 亚欧无线一线二线三线区别| www欧美xxxx| 亚洲精品成a人| 国内精品国产三级国产99| 欧美高清视频| 最新久久zyz资源站| 亚洲韩国在线| 免费黄网站在线播放| 国产精品成人一区二区艾草| 在线一区日本视频| 国产一区久久精品| 亚洲免费观看高清完整| 99久久99久久精品| 蜜臀av在线| 婷婷综合另类小说色区| 1024av视频| 欧美7777| 欧美日韩国产片| 999在线精品视频| 一区二区三区在线资源| 精品久久久久久久人人人人传媒 | 久久精品电影网| 三上悠亚作品在线观看| 午夜精品婷婷| 97国产在线观看| 国产精品suv一区| 免费在线视频一区| 91在线播放国产| 成人高潮片免费视频| 不卡电影免费在线播放一区| 久久99精品久久久久久久青青日本| 你懂的在线网址| 国产精品久久久久精k8| 在线视频一二三区| av在线加勒比| 色噜噜夜夜夜综合网| 亚洲高清免费在线观看| 欧美专区一区| 日韩精品久久久久| 国产精品麻豆一区| 国产在线不卡| 国产激情视频一区| 国产成人精品一区二区无码呦 | 国产精品国产精品国产专区蜜臀ah| 国产成人自拍一区| 欧美国产精品v| 中文字幕日韩精品无码内射| 91精品论坛| 欧美一区二区视频免费观看| 亚洲国产果冻传媒av在线观看| 禁断一区二区三区在线| 欧美精品日韩www.p站| 二区视频在线观看| 激情图区综合网| 精品亚洲第一| 精品国产99久久久久久| 日韩欧美999| 亚洲精品无码久久久久久久| 九九精品久久| 久久免费精品日本久久中文字幕| 一区二区乱子伦在线播放| 成人av网址在线| 一区二区三区av| 黄色软件视频在线观看| 欧美一区二区免费视频| 公肉吊粗大爽色翁浪妇视频| 伊人久久综合| 91视频免费在线| 国产专区在线| 国产极品美女在线| 免费在线看一区| 精品欧美国产| 日本天码aⅴ片在线电影网站| 欧美色电影在线| 久久无码人妻精品一区二区三区| 欧美aa国产视频| 国产日韩精品综合网站| 青青草视频在线免费观看| 亚洲一区中文日韩| www.com污| 凹凸成人精品亚洲精品密奴| 青青草一区二区| 蜜桃91麻豆精品一二三区| 亚洲欧洲另类国产综合| 无限资源日本好片| 国产午夜一区| 欧美壮男野外gaytube| 成人久久精品人妻一区二区三区| 最新不卡av在线| 日韩大片一区二区| 国产中文精品久高清在线不| 欧美在线视频a| 亚洲人妻一区二区| 舔着乳尖日韩一区| 欧美熟妇精品一区二区蜜桃视频| 欧美 日韩 国产一区二区在线视频 | 精品国产国产综合精品| 麻豆精品新av中文字幕| 亚洲免费久久| 日韩成人在线电影| 综合136福利视频在线| 亚洲精品91天天久久人人| 久久久久国产精品免费免费搜索| 免费在线观看视频a| 精品女人视频| 2019av中文字幕| 你懂的在线观看视频网站| 欧美色视频日本版| 亚洲图片另类小说| 免费av网站大全久久| 自拍偷拍亚洲色图欧美| 麻豆精品一区| 久久久久久久色| 亚洲色图21p| 日本久久一区二区三区| 亚洲一级片在线播放| 久久er精品视频| 99久热在线精品视频| 视频一区日韩| 91av国产在线| av资源网站在线观看| 9191精品国产综合久久久久久| 最新一区二区三区| 成人一区在线看| 91传媒久久久| 久久精品国产68国产精品亚洲| 成人免费视频网| 国产经典三级在线| 亚洲无线码在线一区观看| 国产又粗又猛又黄又爽无遮挡| 亚洲激情成人在线| 中文字幕日韩三级片| 免费人成精品欧美精品| 日韩在线视频在线| 精品一区在线| 91九色露脸| 在线手机中文字幕| 久久精品一本久久99精品| 成人爽a毛片一区二区| 一本大道久久精品懂色aⅴ| 亚洲少妇xxx| 成人美女视频在线观看| 久久综合久久色| 中文字幕一区二区三区在线视频| 精品乱色一区二区中文字幕| 亚洲精品成人一区| 91精品国产色综合| av在线看片| 亚洲欧美中文日韩在线v日本| 99国产精品久久久久久久成人 | 理论片在线不卡免费观看| 色欲av永久无码精品无码蜜桃| 在线精品视频免费观看| 日本三级网站在线观看| 国产精品久久久久国产精品日日| 95视频在线观看| 精品一区二区三区在线观看 | 日本免费在线一区| 91精品国产高清自在线| 激情成人四房播| 国产视频久久网| www.av日韩| 欧美高清视频www夜色资源网| 91久久国产视频| 亚洲乱码日产精品bd| 日韩丰满少妇无码内射| 成人aa视频在线观看| 91亚洲一区二区| 麻豆精品视频在线观看免费| 亚洲熟妇av一区二区三区漫画| 欧美日韩理论| 中文字幕欧美人与畜| 欧美精品一区二区三区精品| 久久久久久久久一区二区| 一区二区三区视频播放| 亚洲综合日韩在线| 色综合久久久| 国产精品久久久久久久久久久久久| 国产污视频在线播放| 欧美大片在线影院| 成人在线播放| 久热精品视频在线| 欧洲不卡av| 日日狠狠久久偷偷四色综合免费| 可以直接在线观看的av| 精品网站999www| 天堂网2014av| 亚洲国产成人精品久久久国产成人一区 | 一区二区久久| 国产91xxx| 亚洲福利国产| 日韩网站在线免费观看| 亚洲国产日本| 国产色一区二区三区| 亚洲高清自拍| 成人免费性视频| 亚洲国产综合在线看不卡| 黄色三级中文字幕| 激情五月***国产精品| 日韩黄色片在线| 亚洲午夜视频| 免费无码毛片一区二三区| 在线日本高清免费不卡| 青青草视频在线免费播放| 一本色道久久综合亚洲精品高清 | 三级黄色在线视频| 久久久国际精品| 免费一级黄色录像| 国产精品毛片无遮挡高清| 欧美肥妇bbwbbw| 亚洲精品久久嫩草网站秘色| 久久久综合久久| 精品福利在线观看| 中文字幕国产在线观看| 色婷婷综合久久久久中文一区二区 | 欧美日韩在线大尺度| 日韩亚洲欧美一区二区| 国一区二区在线观看| 日本一区午夜艳熟免费| 一区二区日韩免费看| 成年网站在线免费观看| 日韩黄色在线观看| 亚洲制服中文字幕| 国产精品12区| 日批在线观看视频| 2017欧美狠狠色| 性色国产成人久久久精品| 一区二区三区在线视频免费观看| 久草精品视频在线观看| 日韩欧中文字幕| 亚洲一级在线播放| 精品欧美乱码久久久久久| 日本中文字幕电影在线观看| 色偷偷偷亚洲综合网另类| 91麻豆免费在线视频| 777777777亚洲妇女| 成人国产精选| 国产一区二区在线观看免费播放| 免费成人高清在线视频theav| 色涩成人影视在线播放| 欧美激情aⅴ一区二区三区| 成人中文字幕在线播放| 美女在线视频一区| zjzjzjzjzj亚洲女人| 国产校园另类小说区| 欧美三级免费看| 91黄色在线观看| 精品国产999久久久免费| 亚洲欧美日韩中文视频| 大片免费在线观看| 国产精品aaa| 97视频一区| 一区二区三区欧美成人| 日韩午夜在线| 在线播放av中文字幕| 91久色porny| 久久精品第一页| 欧美日韩国产高清一区二区三区 | 中文字幕66页| 久久综合久久综合久久| wwwav国产| 欧美网站大全在线观看| 天天色棕合合合合合合合| 日韩一级裸体免费视频| 欧美成人a交片免费看| 国产精品一区二区三区四区五区| 五月婷婷六月综合| 成人黄色一区二区| 91视频精品在这里| 免费在线看黄网址| 欧美男女性生活在线直播观看| 亚洲欧洲视频在线观看| 久久免费精品视频| 亚洲成av人片在线观看www| 亚洲国产精品久久久久久女王| 国产精品嫩草99av在线| 91精产国品一二三| 亚洲日本韩国一区| 亚洲视频久久久| 亚洲午夜精品久久久久久久久久久久| 123区在线| 风间由美久久久| 国产综合自拍| 丰满人妻一区二区三区53视频| 国产精品成人免费| 亚洲视频久久久| 一本色道久久综合狠狠躁篇的优点 | 日韩av片永久免费网站| 外国成人在线视频| a在线视频观看| 91在线一区二区| 久久亚洲天堂网| 日韩av在线精品| 美女av在线免费看| 就去色蜜桃综合| 校园春色综合网| 欧美熟妇一区二区| 精品色蜜蜜精品视频在线观看| 特黄aaaaaaaaa真人毛片| 57pao成人国产永久免费| 香蕉久久精品日日躁夜夜躁| 欧美 日韩 国产 高清| 91农村精品一区二区在线| 国产女同在线观看| 亚洲精品日韩久久久| 神马久久资源| 亚洲国产一区在线| 久草中文综合在线| 亚洲二区在线播放| 欧美成人国产一区二区| h片在线观看下载| 久久影院理伦片| 日本 国产 欧美色综合| 五月婷婷综合激情网| 日韩午夜三级在线| 182在线播放| 欧洲精品久久| 久久精品国产网站| 真实国产乱子伦对白在线| 欧美大片在线观看一区| 黄在线观看免费网站ktv| 欧美主播一区二区三区美女 久久精品人| 免费av网站大全久久| 青青草原在线免费观看| 亚洲精美色品网站| 日韩免费小视频| 99精品一区二区三区的区别| 不卡一区在线观看| 成人午夜精品视频| 九色精品免费永久在线| 免费视频亚洲| 狠狠操狠狠干视频| 亚洲动漫第一页| jizz亚洲| 国产精品成人一区二区三区| 久久九九免费| 日本青青草视频| 国产视频欧美视频| 国产一区一区| 国产精品丝袜久久久久久消防器材| 中日韩免费视频中文字幕| 亚洲AV无码乱码国产精品牛牛| 日韩av色在线| 欧美日本不卡高清| 亚洲欧洲久久久| 精品欧美黑人一区二区三区| 韩国精品主播一区二区在线观看 | 9999精品成人免费毛片在线看| 热舞福利精品大尺度视频| 国产成人av福利| 中文字幕人妻一区二区三区视频| 久久久久久久久亚洲| 欧美成人milf| 国产黄片一区二区三区| 精品成人在线观看|