侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

如何正确选型,React Native 还是 Native?

前端  /  管理员 发布于 6年前   276

随着 H5 标准的发布以及推广,使得移动应用的开发也受到了很大影响,出于效率、成本等原因,移动应用的开发不再完全依赖于 “原生”。近日越发火热的混合应用(Hybrid App)介于 Web 应用和原生应用之间,兼具了 “原生应用良好用户交互体验” 和 “Web 应用跨平台开发”的两大优势。而 Facebook 开源的 react Native 跨平台移动应用开发框架,使开发者只使用 JavaScript 就能编写原生移动应用。那么问题来了,如果你想构建属于你自己的 App,那么究竟要怎么选型呢?是选择 react Native 还是原生应用开发?


前言

因为我们的主要客户都是非技术背景。他们总是向我们咨询许多框架、语言和平台之间的区别,比如:

React Native 与 Swift

Swift 与 React Native

React Native 与 Android

由此我们了解到,还有一些不懂技术的人想要构建一款 App,但他们感到很困惑。 因为他们不了解这些技术术语、平台或语言。

因此,我们决定写一篇博文,来解释为什么当你寻找混合模式(Hybrid)应用和原生(Native)应用开发时,理解 React Native 和原生 App 的区别更为重要。


React Native 与原生应用的开发历程

当谈到 开发移动应用 时,只有两种方式可供企业选择。

要么他们可以选择原生应用开发,要么他们可以选择在跨平台开发中构建自己的应用。

你可能会问跨平台应用和原生应用在开发之间有什么不同?

是这样的,跨平台应用允许开发人员编写一次代码,就可以在所有平台上运行,但原生应用需要单独编码(即 iOS 平台的 Swift 或 Object-C,Android 的 平台 Java 或 Kotlin)。

因此,原生应用开发需要更多的时间、资金和资源来构建应用程序。

但这并不意味着它是指示你选择跨平台开发应用的绿色信号灯。这两者各有利弊。

在本文中,我们将讨论 React Native 与原生应用哪个更好一些。


原生移动应用

让我们先从教科书上对原生应用(Native App)的定义开始。原生应用是为特定平台构建的,可在特定的设备和操作系统上运行。正如我之前所解释的,这些特定的平台可以是 Android 或 iOS。这些应用程序能够利用特定设备及其操作系统可用的所有硬件和软件功能。例如,如果我们使用 Apple 的 iOS 应用程序,他们是用 Object-C 或 Swift 编写的。因此,这些 iOS 应用程序不适用于 Android 或 Windows 平台,反之亦然。

原生应用的优势在于,能够使用操作系统提供的功能以及安装在特定平台上的软件。

原生应用开发需要使用编程语言和 集成开发环境 (IDE)工具。例如,Xcode 工具在 iOS 中使用的是 Object-C 语言,而 Android Studio 在 Android 中使用的是 Java 和 Kotlin 语言。


原生平台上开发应用程序的利与弊原生应用开发的优点

内置组件,如摄像头、麦克风、指南针、加速度计等,可无缝工作。这是因为原生应用是与设备的这些组件一起构建的。

编写文档对于原生应用来讲很容易,因为仅 iOS 和 Android 本身就至少有 2500 本书。此外,互联网上还有数以百计的文章和博文。

原生应用有着快速响应的体验,因为它们的功能是根据特定平台构建的。

由于在构建 App 时须遵循相应 App store 的指导原则,因此可以保持安全性。

用户界面 / 用户体验对于每个平台都是独一无二的。因此,根据平台的特定用户界面 / 用户体验构建 App,将能够为用户提供更加个性化的体验。

App store 支持原生应用开发,因为这样做等于是助长它们的市场。因此,你将从各自的 App store 获得更多的支持,让用户更容易访问你的 App。

在原生应用开发中,可以充分利用 API 访问,而无需在功能上寻找任何额外的映射。这就降低了 App 对更新的依赖程度。

如果你使用原生应用开发,来自其他开发社区的第三方库是你获得的额外好处。

更严格的语言:Android 和 iOS 的所有本机语言都被认为是严格的语言,学习其他语言很容易。

请记住,不管适应一门语言需要花费多长时间,你都要完全适应自己所选择的本机语言。

原生应用开发的缺点

必须使用不同的代码库在不同平台上构建 App。为 Android 平台构建的 App 无法在 iOS 平台上运行,反之亦然。因此,你必须使用不同的代码库和特定的平台团队。

比混合应用(Hybrid App)开发更耗时,因为任何一次完成的工作都只适用于这个单独的平台。因此,你需要一个全新的团队,为另一个平台采取不同的方法,从头开始。

成本上升,因为基本上,你要为两个不同的平台(Android 和 iOS)构建两个不同的 App。因此,要获得这两个平台,你需要支付几乎两倍的开发成本(如果不是更多的话)。


React Native

React Native 是由 Jordan Walke 在 Facebook 举办的黑客马拉松项目中开发的。它起源于 React.js,最初是为了解决 Facebook 的跨平台应用程序相关的特定问题而构建的。因此,这个应用与其他“移动网络应用”不同,它是一款真正的移动应用,使用 JavaScript 开发的,不影响任何质量。

React Native 应用开发的优点

让我们来看看 React Native 应用的好处。

开源提供了对代码的更多理解,并通过其他功能改进了框架。

一次编写,随处运行,可以在多个平台上运行的代码类型。因此,你只需构建一次多平台 App 即可。

热更新有助于持续运行应用,同时将最新代码部署到应用中进行更新。

与原生应用开发相比,React Native 可以缩短上市时间,因为只需构建一个应用而不是至少两个。

对于 React Native 来说,扩展是件很自然的事。它完全有能力处理一个 App 越来越多的工作,并可轻松地处理更新到更高级别的功能。

降低应用开发的时间消耗。因为相同的代码可以用来构建面向不同平台的应用。

确保节约成本。由于同样的代码用于 iOS 和 Android,使得应用开发成本是原生应用开发的一半。

高质量的移动应用是一种保证,因为 React Native 专注于图形处理单元(GPU),这点与原生应用不同。

中央处理器(CPU)。CPU 有助于 React Native 在内存类别中提供更好的性能。

Web 到移动开发:对于一个 Web 开发人员来说,从 Web 到移动开发是很困难的,但 React Native 有助于这一过渡,因为它本质上将是一个 JavaScript 框架。

React Native 应用开发的缺点

获取不同 App store 的许可证难度更大。与原生应用相比,这些 App store 提供了更多的支持。

目前,React Native 普遍缺少一些自定义模块。大多数公共库存在于 React Native 中,但根据你的相应项目,也可能存在例外情况。在这种情况下,你需要为此类模块找到或构建自己的解决方案。

原生应用开发人员需要更多指定给原生应用构建的模块,如访问摄像头、推送通知和其他设备传感器。

与原生应用相比,社区支持较少。此外,所需资源也比原生开发更少。


何时选择原生应用

当你遇到以下情景时,你应该尝试这种原生应用开发:

不想担心 API 和语言的变更。

想要原生应用的用户体验。

需要创建基于物联网的应用程序。

想要在任何平台(Android 或 iOS)上构建 App。

正在寻找频繁的更新。


何时选择 React Native

你想构建一款电子商务 App。

构建像 Instagram 和 Facebook 这样的社交媒体 App。

你需要尽快进入市场。

你的项目预算较少。


总结

总而言之,这要取决于你的规模和项目的紧迫性。如果你想尽早使用移动应用,那么 React Native 是最佳选择。

然而,如果你预算充裕,而且也不想在 App 的用户界面和功能上妥协,那么,原生应用应该就是你的选择。

英文原文: https://www.excellentwebworld.com/react-native-vs-native
译文:https://www.infoq.cn/article/T3yPFdi88*GKZwHR2bPT



  • 上一条:
    图标使用新姿势- react 按需引用 svg 的实现
    下一条:
    vue-cli3 实现多页面应用
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • 使用 Alpine.js 排序插件对元素进行排序(0个评论)
    • 在js中使用jszip + file-saver实现批量下载OSS文件功能示例(0个评论)
    • 在vue中实现父页面按钮显示子组件中的el-dialog效果(0个评论)
    • 使用mock-server实现模拟接口对接流程步骤(0个评论)
    • vue项目打包程序实现把项目打包成一个exe可执行程序(0个评论)
    • 近期文章
    • 在go中实现一个常用的先进先出的缓存淘汰算法示例代码(0个评论)
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • 在go + gin中gorm实现指定搜索/区间搜索分页列表功能接口实例(0个评论)
    • 在go语言中实现IP/CIDR的ip和netmask互转及IP段形式互转及ip是否存在IP/CIDR(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-10
    • 2016-11
    • 2017-06
    • 2017-07
    • 2017-08
    • 2017-09
    • 2017-10
    • 2017-11
    • 2018-03
    • 2018-04
    • 2018-05
    • 2018-06
    • 2018-09
    • 2018-11
    • 2018-12
    • 2019-02
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2021-04
    • 2021-05
    • 2021-07
    • 2021-08
    • 2021-09
    • 2021-10
    • 2021-11
    • 2022-08
    • 2022-09
    • 2022-10
    • 2022-11
    • 2022-12
    • 2023-01
    • 2023-02
    • 2023-03
    • 2023-04
    • 2023-05
    • 2023-06
    • 2023-07
    • 2023-09
    • 2023-10
    • 2023-11
    • 2023-12
    • 2024-01
    • 2024-02
    • 2024-03
    • 2024-04
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客