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

71 阅读2分钟

跨端是什么

传统开发痛点

1.各端功能几乎一致,但各端却需要单独配置开发人员。 2.开发、维护成本高。 3.安卓、IOS发版周期长。

跨端的优势

研发效率高

学习成本低,多端一致性高。相较于原生安卓或iOS技术,想要开发,需要学习很多东西。跨端开发无疑是有很大优势的。

用户体验好

不仅有较高的稳定性,而且性能体验好

动态化

支持动态化下发,满足日益增长的业务需求

跨端技术方案

Hybrid方案

通过webview容器进行渲染,使用桥接层与原生api打交道。利于前端开发者进行开发。但浏览器渲染效果相较于native App要差很多。为了能更好的调用native api。桥梁的设计也需要下功夫。

原生渲染方案

使用js开发,但通过原生组件进行ui渲染。 React Native就是其中的代表。React Native的核心叫做Javascript Interface(简称为JSI),它是由c++编写的轻量级框架,通过它,js对象可以获得c++对象,并调用对应的方法。再由c++对象调用iOS的底层ObjectC和Android的底层Java。实现了JS和Native的通信。并且JSI允许线程之间的同步相互执行,不需要 JSON 序列化等耗费性能的操作;JSI 是基于 C++ 编写的,以后如果针对电视、手表等其他系统,也可以很方便地移植。

自渲染方案

自渲染方案的典型是flutter技术。 flutter另辟蹊径,基于c++研发了自己的渲染引擎skia和编程语言dart。渲染效果接近原生,但需要一定的学习成本。 我本人在大一的时候刚学完前端基础,在互联网上探索更广阔的世界时就了解并学习了flutter。当时配环境,搭虚拟机弄了好久。粗略学了些皮毛,现在只记得光记得写了一堆widget。后来还是放下了flutter,继续学习由前端三大件为基础的“主流技术”。但也一直关注flutter,看到过它的一些突破,比如getx的出现、桌面端兼容等等。现在在青训营又遇到flutter,想找个时间重新开始学一学这门优秀的框架。

小程序方案

我也开发过一些小程序,但今天才明白小程序的底层是如何实现的,明白了渲染线程和逻辑线程如何打交道。