第50次《中国互联网络发展状况统计报告》展示了很多有意思的数据。
其中,截至2022年6月,我国网民规模为10.51亿,互联网普及率达74.4%。
网民人均每周上网时长为29.5个小时,较2021年12月提升1.0个小时。
得益于国产智能手机和移动互联网的发展,手机上网比例以绝对的优势领先,占比达到99.6%。
无到论作为产品经理还是开发人员都需要认识将来的电脑将会变成更适合办公和专业人士使用的工具,而手机才是普通大众的最终选择。
从游戏行业,英雄联盟-> 王者荣耀,绝地求生->刺激战场,到电商行业。可以看出未来移动端开发将会占据主导地位。
面向普通用户的移动端软件设计,需要考虑性能和UI美化、开发效率等多种因素,因此移动端发展至今也诞生了多种开发类型与技术。
Native APP
又称为原生APP 例如 Ios直接用 Object-C、Swift 语言进行开发。Android 使用 Java、kotlin进行开发。
Web App
就是 html 开发的网页,说是一种APP但实际上就是指的在浏览器上的页面
Hybrid App
又称为 混合APP、Html5套壳,是使用Web技术开发页面,然后打包成 APP,打开的是一个APP,实际上里面是嵌套了一个浏览器。
对于开发者或管理人员而言而言,可以根据产品需求、性能要求和项目时间来进行技术选型,
移动领域的开发,面临不同操作系统需不同开发语言,同一操作系统存在不同版本,同一版本存在不同机型等难题,给移动开发增加了很大难度。 在移动开发领域,跨平台开发技术成为很多企业和开发者的首选,可以有效解决不同操作系统不同机型终端的开发难题,为企业节省时间成本和人员成本。
uni-app 使用Vue 作为界面开发,内部框架提供了一套面向不同平台特性调用的封装,只需要在js中调用相应的函数就可以调用相应平台的功能,如原生应用:读写手机存储、顶部通知等功能。
开发者编写一套代码,可发布到iOS、Android、Web(响应式)、以及各种小程序(微信/支付宝/百度/头条/QQ/钉钉/淘宝)、快应用等多个平台。
如下图所示,一套代码,同时运行到iOS模拟器、Android模拟器、H5、微信开发者工具、支付宝小程序Studio、百度开发者工具、字节跳动开发者工具、QQ开发者工具(底部8个终端选项卡代表8个终端模拟器):
前端使用 React 框架编写,React Native 提供了一套面对 Android和Ios 的封装,让你在JS中直接通过调用函数就可以调用手机的原生功能
Hybrid 又称为混合APP,基本上都是这种设计,界面采用Html,框架将底层功能封装为JS进行调用。
React Native 很适合有React开发经验的工程师去使用。
Google推出,理念是:轻松、快速地构建漂亮的移动应用; 使用C、C ++、Dart和Skia(2D渲染引擎)构建;旨在帮助开发人员轻松实现恒定的60fps Flutter的历史最早可以追溯到2014年10月,其前身是Google内部孵化的Sky项目
Flutter利用Skia绘图引擎,直接通过CPU、GPU进行绘制,不需要依赖任何原生的控件。
Andriod操作系统中,编写的原生控件中实际上也是依赖于Skia进行绘制,所以Flutter在某些Andriod操作系统上甚至还要高于原生-因为原生Andriod中的Skia必须随着操作系统进行更新,而Flutter SDK中总是保持最新的
框架 | uniAPP | React Native | Flutter |
---|---|---|---|
学习成本 | 低 | 低 | 高 |
性能 | 低 | 中 | 高 |
优点 | 跨平台比较多,包括了各种小程序一套代码可到处运行 | 使用React+JS的方式,既保证了一定性能,也便于Web开发人员学习 | 性能高 android=原生 ios<原生 |
缺点 | 广而不精, 平台太多而导致不能保证每套API的健壮性没有插件时需要自己开发 | 有一定学习成本,需要学习Dart语言 | |
适用场景 | 需要做多套小程序在不同平台运行,或对APP的性能要求不高 | 只要求Android和Ios平台运行,并且拥有一定React经验 | 对性能要求较高的APP,如大型商城或游戏 |
支持平台 | iOS、Android、Web(响应式)、以及各种小程序(微信/支付宝/百度/头条/飞书/QQ/快手/钉钉/淘宝)、快应用等 | Ios、Android | Ios、Android |
尽管目前 React、Flutter 也相继支持了Windows、Mac。但是毕竟不是主流,而且没有必要非要让移动应用跨平台到PC端,设计尺寸和布局即使有响应式也会非常奇怪。