跨端是什么
传统开发痛点
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,想找个时间重新开始学一学这门优秀的框架。
小程序方案
我也开发过一些小程序,但今天才明白小程序的底层是如何实现的,明白了渲染线程和逻辑线程如何打交道。