随着移动互联网的发展,很多互联网公司出于成本的考虑,想要更迅速的更省成本的进行开发,不再满足Android端一套代码,iOS端一套代码,于是跨平台技术应运而生。

在此背景下,很多大公司觊觎这份时代大礼,纷纷推出相关的技术,纵观过去,跨平台技术产生的框架有很多,不过大多都没落了,成为了跨平台技术的发展的一个过度产物。

跨平台技术的分类没有标准的答案,通常把它们分类为4种,分别Web App、Hybrid App、原生渲染、自绘UI。下面分别介绍它们。

Web App

Web App是指基于Web的应用,运行于网络和标准浏览器上,相当于一个网页然后加一个App的壳。2014年HTML5的标准规范制定完成,在网络舆论上Web App大有取代Native App的气势,但Web App有以下缺点:

性能低,操作体验不好
无法调用原生API,很多功能无法实现,
依赖于网络,网速慢时体验很差,并且没有离线功能,优化不好的话会消耗流量
只能做为一个临时的入口,用户留存率低

Hybrid App

除了采用原生和Web开发App,还可以采用HTML5+原生来进行混合开发,这就是Hybrid。

Hybrid App的原生UI组件用来展示交互复杂和渲染要求高的界面,其他的可以交给HTML5来展示。Webview是Hybrid技术的核心,它是APP中的一个组件,主要用于加载H5页面,是一个小型的浏览器内核。

Hybrid App虽然开发效率高,可以跨平台,但是Hybrid体验比不上原生,对于需要快速试错、快速占领市场的团队来说,Hybrid App是一个不错的选择,后期团队稳定下来后,最好还是要做体验更好的原生APP或者使用其他体验更好的跨平台技术。

原生渲染

原生渲染指的是由JavaScript开发并且由原生控件渲染,代表技术有React Native和Uni-app。

React Native

Facebook曾在移动端步履维艰,他们认为可以不借助任何原生开发手段来实现Facebook的移动应用,因此在早期选择了HTML5,后来发现HTML5的效率始终无法和原生相比,因此在2015年发布了React Native。

React Native是Facebook早先开源的 Web UI框架React在原生移动应用平台的衍生产物,底层对Android和iOS平台的原生代码进行封装,通过使用JavaScript就可以编写出原生代码。

Uni-app

Dlcoud在2019年发布Uni-app,并在后续时间持续加大投入力度,可以编译到不同的平台,Android、IOS、小程序等。Uni-app本身内置了一个改进过的原生渲染引擎,即自带渲染引擎,可以编译到多个端,极大的提高了效率,非常快速。

自绘UI

自绘UI指的是通过在不同平台实现一个统一接口的渲染引擎来绘制UI,而不依赖系统平台的原生控件,这样做可以保证不同平台UI的一致性。不用像React Native一样,随着不同平台系统版本的变化,开发者还需要处理不同平台的差异,甚至有些特性只能在单个平台上实现,这样无法保证不同平台UI的一致性。自绘UI框架的代表有Flutter。

Flutter是谷歌的移动UI框架,可以快速在Android和iOS上构建高质量的原生用户界面, 它的前身是谷歌试验项目Sky。

Futter提出了一切皆Widget的概念,除了基本的文本、图片、卡片、输入框等Widget,布局方式和动画等也都是Widget。通过使用不同类型的Widget,就可以实现复杂度的界面。

Flutter框架采用了分层设计,此设计的目标是帮助开发者使用更少的代码完成更多工作。例如,Material层是由widgets层的普通widget组成的,而widgets层本身是通过来自rendering层的低级对象构建的。

目前在Flutter基础上开发的框架已经开始出现,这也证明了业界普遍开始认可Flutter,并开始进行尝试。