跨端技术概述 | 青训营笔记

110 阅读2分钟

这是我参与「第五届青训营」伴学笔记创作活动的第 7 天

跨端技术方案

Hybrid方案

基于WebView渲染,通过JS Bridge把一部分系统能力开放给JS调用。因为JS没有部分调用系统设备的能力,所以需要通过JS Bridge把一部分系统能力开放给JS调用,实现JS调用原本原生JS不能调用的系统API

原生渲染方案-React Native

使用JS开发,通过中间层桥接后使用原生组件来渲染UI界面。与Hybrid方案的区别是该方案用的是原生组件来渲染UI界面,Hybrid方案用的是WebView渲染。
React Native是一个由Facebook于2015年发布的JavaScript框架,它可以让开发者使用JavaScript和React来开发跨平台的移动应用。在此之前只是能开发移动端页面 缺点:CSS样式上会有所缺失
image.png
React Native的思路是最大化地复用前端的生态和Native的生态,和WebView容器的最大区别在于View的渲染体系。React Native抛弃了低效的浏览器内核,转而使用自己的DSL生成中间格式,然后映射到对应的平台,渲染成平台的组件。相对WebView容器,体验会有一定的提升。不过,渲染时需要JavaScript和原生之间的通信,在有些场景可能会导致卡顿(这就是为什么有些H5比较卡顿)。另外就是,渲染还是在Native层,要求开发人员对Native有一定的熟悉度。 React Native主要由JSI、Fabric、TurboModules组成 JSI(JavaScript Interface):一个用C++写成的轻量级框架,它作用就是通过JSI,JS对象可以直接获得C++对象(Host Objects)引用,并调用对应方法。
有了JSI,JS和Native就可以直接通信了,调用过程如下:JS->JSI->C++->ObjectC/Java
JSI是整个架构的核心和基石,所有的一切都是建立在它上面

自渲染方案

利用Skia重新实现渲染管线,不依赖原生组件
Flutter是Google在2018年公布的开源应用开发框架,仅通过一套代码库,就能构建精美的、原生平台编译的多平台应用 image.png
image.png

跨端技术方案对比

image.png