跨端开发入:Flutter、 ReactNative、PWA、小程序。

什么是跨端开发?

在上古时代,人们主要通过电脑浏览器上网冲浪,Web技术占据了主导地位。然而,随着移动互联网时代的到来,各种设备和平台如安卓、苹果、鸿蒙等纷纷涌现。为了应对这种多样性,开发人员渴望能够编写一套代码,适用于多个平台。于是,跨端开发(Cross-platform development)应运而生。

技术选型

跨端技术存在“不可能三角”即:用户体验(性能、功能)、低成本(作为web开发者的开发成本)、生态标准。在实际项目中得根据具体情况来进行权衡和取舍,下面列举各个技术的优缺点和常见应用场景。

原生开发

原生开发是指使用特定平台的原生编程语言和开发工具,针对特定的操作系统(如iOS、Android、Windows等)进行应用程序的开发。原生开发利用操作系统提供的底层API和功能,可以直接访问设备的硬件和操作系统特性,并以最高级别的性能和功能完整性构建应用程序。
image.png
优点:

  1. 最佳性能:原生应用可以直接访问设备的底层功能和硬件资源,因此提供了最高级别的性能和效率。原生应用在运行速度、响应性和流畅度方面通常表现出色。
  2. 完全控制:开发人员可以完全控制应用程序的外观、功能和行为,可以自定义用户界面、动画效果和交互方式,以实现最佳的用户体验。
  3. 平台特性支持:原生开发可以充分利用操作系统提供的特性和API,访问设备的各种功能,如相机、传感器、地理位置等。这样可以为应用程序提供更丰富的功能和更好的用户体验。
  4. 生态系统支持:原生开发拥有成熟的开发工具、文档和第三方库支持,有着强大的生态系统。开发人员可以更轻松地找到所需的工具、资源和解决方案,加快开发进程。

缺点:

  1. 高成本和开发时间:原生开发需要针对每个平台编写独立的代码,这增加了开发工作量和时间。开发团队需要具备多平台的技能,同时进行平台特定的调试和测试。
  2. 跨平台兼容性:由于不同平台存在差异,应用程序在不同平台上可能需要进行适配和调整,以确保一致的用户体验。这增加了跨平台兼容性的挑战和复杂性。
  3. 更新和发布:对于每个平台,原生应用需要独立进行更新和发布,这需要遵循各个平台的审核和发布流程,增加了管理和维护的工作量。
  4. 技术门槛:原生开发通常需要掌握特定平台的编程语言、开发工具和生态系统,对于新手来说可能需要一定的学习和熟悉时间。

案例:

  1. 对性能要求极高的手游,例如王者荣耀、和平精英、原神、元气骑士等。(游戏的核心功能一般都是原生开发,一些附加功能比如抽奖页面等可能会用mrn)
  2. iOS应用 NightVision(夜视仪)。因为用到了苹果的激光雷达扫描仪,只能用iOS开发。
  3. 剪映、淘宝、keep、知乎等

Flutter

使用dart语言,编写一次代码,编译成多种适配不同平台的原生代码
image.png
优点:

  1. 跨平台开发
  2. 快速开发和热重载:Flutter 提供了热重载功能,使开发人员能够在实时预览应用程序变化的同时快速开发和调试。这加快了开发迭代和调试的速度,提高了开发效率。
  3. 较高性能:Flutter 使用自己的渲染引擎,称为Skia,它直接绘制应用程序界面,无需使用操作系统的中间层,从而提供高性能和响应性。
  4. 响应式编程风格:Flutter 使用响应式编程风格,可以通过使用”widget”来构建用户界面,使应用程序界面与数据状态保持同步,便于状态管理和数据更新。

缺点:

  1. 需要学习新的编程语言:Flutter 使用 Dart 作为主要的编程语言,开发人员需要学习 Dart 的语法和特性,如果之前没有接触过 Dart,可能需要一定的学习成本。
  2. 平台特定功能支持:尽管 Flutter 提供了许多跨平台的功能和组件,但在处理某些特定平台功能时,可能需要依赖平台特定的插件或代码。这可能需要额外的开发工作和适配。

案例:QQ、快手、咸鱼、百度网盘等

ReactNative

使用js语言开发,并使用 React Native 框架提供的组件和 API 来访问不同平台的底层设备功能

image.png
优缺点和flutter很像,区别在于flutter更贴近原生开发,ReactNative对web前端开发者更友好。相比Flutter,ReactNative更适用于以下几个场景:

  • 已有前端页面,想尽快移植时
  • 有大量前端开发者,Native 人员不足时
  • 有真正跨多端场景时,iOS/Native/Web/Desktop

案例:抖音、支付宝、京东、美团等

PWA

PWA(渐进式 Web 应用程序,Progressive Web App),本质是将一个浏览器网页,通过ServiceWorker等技术让其具备离线访问、推送等原生特性,从而将web页面模拟出原生app的感觉

image.png
PWA最大的问题在于功能受限,只能使用浏览器提供的一些API,但开发成本是最低的,只要在web网站上配置一下manifest和ServiceWorker就能用。google浏览器对PWA支持最好,所以国外较为流行,由于_各种原因_,国内PWA基本凉凉。

案例:网页版的微博、豆瓣、Twitter、Wikipedia、Telegram、DuckDuckGo.

小程序

小程序开发(类似web开发),使用各平台(微信、支付宝、飞书、美团等)提供的工具和框架,在这些app中预留的位置上进行二次开发

image.png
优点:

  1. 跨平台兼容性:小程序可以在多个平台上运行,包括微信、支付宝、百度等。开发人员可以使用一套代码同时构建适用于不同平台的小程序,减少了开发和维护的工作量。
  2. 无需安装:小程序无需用户进行下载和安装,可以直接通过扫描二维码或搜索即可访问。这减少了用户的操作步骤和安装空间,提供了更快捷的使用体验。
  3. 用户触达和传播:小程序可以通过微信等平台的推荐、分享和搜索功能,更容易被用户发现和传播。这提供了更多的用户触达机会和应用推广渠道。
  4. 快速开发和迭代:小程序开发使用前端技术(如HTML、CSS、JavaScript),具备较短的开发周期和快速的迭代能力。开发人员可以使用熟悉的工具和技术栈进行开发,加快了开发进度。

缺点:

  1. 功能受限:相比原生应用程序,小程序在功能上受到一定的限制。小程序无法直接访问设备的底层功能和硬件,某些高级功能和接口可能无法实现。小程序的界面设计受到平台的限制和规范,可能较难实现与原生应用程序相同水平的个性化设计和用户体验。
  2. 平台依赖:小程序的开发和发布依赖于特定的平台(如微信、支付宝等)。这可能使开发者对平台的更新、政策变更和限制感到不确定性。
  3. 可发现性差:尽管小程序可以通过平台的推荐和搜索功能进行传播,但相对于在应用商店中发布的原生应用程序,小程序的可发现性可能较差。

案例:

  1. 各景区的购票系统
  2. 线上点餐系统
  3. 小游戏

参考文章:

# 团队框架终极选型:Flutter 还是 React Native

# 再谈移动端跨平台框架 Flutter 与 React Native

# 跨端技术总结

# 现代应用开发模式:PWA vs 小程序

# 国内大厂都在使用哪些移动跨平台框架

© 版权声明
THE END
喜欢就支持一下吧
点赞0

Warning: mysqli_query(): (HY000/3): Error writing file '/tmp/MYApUuK7' (Errcode: 28 - No space left on device) in /www/wwwroot/583.cn/wp-includes/class-wpdb.php on line 2345
admin的头像-五八三
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

图形验证码
取消
昵称代码图片