APP技术
纯原生(Native App):
Native App,原生APP,使用原生(即Android或iOS)开发的APP。应用的性能好是无容置疑的,但是企业大都处于尝试和摸索期,企业需要在短时间内快速推出不同的功能、产品来适应市场的需求和变化。对于有专业开发团队的互联网公司而言推陈出新都是个难题,更不要说在企业中的应用。 其缺点有:
- 开发、更新、维护的周期太长
- 无法跨平台:Android和iOS都需要开发各自平台的版本——开发成本高;
- 升级麻烦:每次升级都要下载安装包,Android还好,反正不需要审核,下载就下载吧,但iOS就麻烦了,发布每个版本还得经过App Store的审核
- Android和iOS很难同步发布。
网页应用(Web App):
通俗来说就是网站。是利用Web技术进行的App开发,Web技术本身需要浏览器的支持才能进行展示和用户交互,因此主要用到的技术是HTML5、Javascript、CSS等,只需要在 Android 和 iOS 直接写个壳就好了,大大减小了开发成本,而且 Web 是实时渲染的,即使有 Bug ,可以直接发布就好了。可是Web App目前的本质是金玉其外败絮其中,功能不但无法和Native App媲美,用户体验更是众所周知的弊端。在当前iOS、Android系统主导的桌面入口的形态下,让用户打开浏览器,再访问某个网址,体验还不好,不人性化的体验与流程导致大量用户流失。
混合开发(Hybrid App):
主要以 JS+Native 两者相互调用为主,从开发层面实现“一次开发,多处运行”的机制,成为真正适合跨平台的开发。Hybrid App兼具了 Native App良好用户体验的优势,也兼具了 Web App 使用 HTML5 跨平台开发低成本的优势。在开发一款 App 产品的时候,为了提高效率、节省成本而利用原生与H5的开发技术的混合应用,更通俗的讲由“HTML5云网站+APP 应用客户端”构成的 App 是混合开发。后来随着微信、支付宝、百度等超级 App 大力发展小程序,我们也逐渐把“小程序+APP应用客户端”纳入到混合开发的范围内。现在比较流行的混合方案主要有三种,主要是在UI渲染机制上的不同:
- 基于 WebView UI 的基础方案,市面上大部分主流 App 都有采用,例如微信JS-SDK、Cordova,通过 JSBridge 完成 H5 与 Native 的双向通讯,从而赋予H5一定程度的原生能力。
- 基于 Native UI 的方案,例如 React-Native、Weex。在赋予 H5 原生API能力的基础上,进一步通过 JSBridge 将js解析成的虚拟节点树(Virtual DOM)传递到 Native 并使用原生渲染。
- 另外还有近期比较流行的小程序方案,也是通过更加定制化的 JSBridge,并使用双 WebView 双线程的模式隔离了JS逻辑与UI渲染,形成了特殊的开发模式,加强了 H5 与 Native 混合程度,提高了页面性能及开发体验。
以上的三种方案,其实同样都是基于 JSBridge 完成的通讯层,第二三种方案,其实可以看做是在方案一的基础上,继续通过不同的新技术进一步提高了应用的混合程度。因此,JSBridge 也是整个混合应用最关键的部分!
Hybrid App(实现方式)
1. React-nective APP:
React Native (简称RN)是Facebook于2015年4月开源的跨平台移动应用开发框架,是Facebook早先开源的JS框架 ,React 在原生移动应用平台的衍生产物,支持iOS和安卓两大平台。RN使用Javascript语言,类似于HTML的JSX,以及CSS来开发移动应用,因此熟悉Web前端开发的技术人员只需很少的学习就可以进入移动应用开发领域。此外,也没有 DOM API。 React Native 由 JavaScript 和 React.JS 的组合组成。此外,它允许开发H人员使用 Swift、Java 或 Objective-C 开发某些部分。
2. uni-APP:
uni-app 是一个使用 Vue.js 开发小程序、H5、App的统一前端框架。实现一套代码可以在多个平台上运行,支持百度小程序、微信小程序、支付宝小程序、H5、App等。UniAPP 采用了一些特殊的技术手段,通过对代码进行处理,在不同平台下使用对应的api,来实现跨平台搭建应用的目的。
3. flutter:
Flutter 由 Google 的工程师团队打造,用于创建高性能、跨平台的移动应用。Flutter 针对当下以及未来的移动设备进行优化,专注于 Android and iOS 低延迟的输入和高帧率。要求开发者有Dart语言基础,了解Dart和Flutter的API、要求精通Flex布局,要求原生开发协作。
4. 小程序:
其实是Hybrid App的实际运用
5. Taro
是一个开放式跨端跨框架解决方案,支持使用 React/Vue/Nerv 等框架来开发 微信 / 京东 / 百度 / 支付宝 / 字节跳动 / QQ 小程序 / H5 等应用。现如今市面上端的形态多种多样,Web、React Native、微信小程序等各种端大行其道,当业务要求同时在不同的端都要求有所表现的时候,针对不同的端去编写多套代码的成本显然非常高,这时候只编写一套代码就能够适配到多端的能力就显得极为需要。
对比
首先说明,Weex已经内嵌到uni-app,所以只要从选择Flutter 、react native 、uniapp中选择即可
1. 业务场景
- 如果要跨多个端,除了 Android 和 iOS,还包括微信、支付宝小程序等等,毋庸置疑,首选uni-app;
- 如果应用只需要考虑 Android 和 iOS,性能体验方面:Flutter > RN > uni-app ;
- 如果要考虑桌面端,flutter 本身就支持桌面端,RN 则需要使用react-native-windows这个项目,uni-app 则需要集成 electron
2. 技术栈学习成本
- React Native:
要求开发者有React基础,要求精通Flex布局,要求熟悉javascript。 - Flutter:
要求开发者有Dart语言基础,了解Dart和Flutter的API、要求精通Flex布局,要求原生开发协作。 - uni-app:
要求开发者有Vue基础,熟悉小程序开发。
3. 各框架生态情况
- 国内的uni-app生态会比react native和flutter好,中国开发者需要的全端推送,比如:UniPush集成了iOS、华为、小米、OPPO等众多原厂推送、各种国内登陆、支付、分享SDK、各种国内地图、各种ui库、以及Echart图表等,都是在uni-app体系里,这方面生态比rn、flutter丰富多了。
uni-app的插件市场也有数千款插件,uni-app确实是最丰富的跨端开发框架生态了。 - 国外的开发者,react native、flutter的生态肯定比uni-app好一些,比如facebook登陆分享、Google地图等。
4. 性能比较
3大引擎的性能排名:Flutter > react native > uniapp
5. ui库
react native和 flutter 在IOS和Android上需要使用2套ui库。
uni-app的开发只需要写一套界面ui,就可以适应不同手机的用户。
总结
uni-app 容易上手,如果应用比较不复杂,可以选用这个。如果只是单纯的做小程序,选用taro比较好,转化成H5 API要处理一些兼容性问题。uni-app转化Android和iOS性能方面不如RN和flutter,使用手机应用时都要通过专门的渠道调原生native,RN的每次操作都要和原生native通信交互,flutter是自绘UI,速度和性能比RN更接近原生,flutter 使用Dart语言。包体积原生比较,Flutter和RN不相上下,由于Flutter和RN框架中需要一些C++依赖库,导致包体积比原生大了很多。Flutter要比RN更加流畅一些,体验感更好。总之每个框架都有相应的优缺点,要根据实际业务和开发团队去选型。
本文作者:yang10086
本文链接:https://www.cnblogs.com/yang10086/p/17669568.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步