写点什么

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

  • 2019 年 6 月 19 日
  • 本文字数:2909 字

    阅读完需:约 10 分钟

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

随着 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



2019 年 6 月 19 日 18:338137
用户头像

发布了 358 篇内容, 共 145.5 次阅读, 收获喜欢 916 次。

关注

评论

发布
暂无评论
发现更多内容

hive学习笔记之七:内置函数,mybatis防止sql注入原理

Java 程序员 后端

IDEA这样配置,好用到爆炸!(1),java基础入门第二版课后答案

Java 程序员 后端

hive学习笔记之八:Sqoop,大厂Offer拿到手软啊

Java 程序员 后端

HTTP-2做错了什么?刚刚辉煌2年就要被弃用了!,mybatis底层工作原理

Java 程序员 后端

复习

IT蜗壳-Tango

10月日更

Intellij IDEA神器那些让人爱不释手的小技巧,java高级程序员面试笔试

Java 程序员 后端

Java 必须掌握的 12 种 Spring 常用注解!你掌握了几种?

Java 程序员 后端

Hello Git快速入门,redis常见数据结构以及使用场景分析

Java 程序员 后端

Helm部署的服务如何修改配置,nginx面试题负载均衡

Java 程序员 后端

hive学习笔记之九:基础UDF,java入门书籍下载

Java 程序员 后端

IDEA-2021首个大版本发布,Java开发者感动哭了(附新亮点演示

Java 程序员 后端

IDEA这样配置,好用到爆炸!,金九银十怎么从中小企业挤进一线大厂

Java 程序员 后端

jackson学习之九:springboot整合(配置文件),jpa和mybatis的区别面试

Java 程序员 后端

Java IO,Java真实项目案例分享

Java 程序员 后端

Java lambda表达式用法介绍,linux教程第四版思考题答案

Java 程序员 后端

Java SSM (springboot+mybatis)美食菜谱分享平台系统设计和实现以及论文报告

Java 程序员 后端

Java 多线程 —— 同步代码块,给大家安排上

Java 程序员 后端

IDEA 一键部署 SpringBoot 项目到远程服务器 Docker 内

Java 程序员 后端

Java 新特性之泛型,kafka的架构图

Java 程序员 后端

HashMap(jdk1,Java程序员进大厂面试必备基础技能

Java 程序员 后端

Jaeger知识点补充,mysqlsql优化视频教程百度网盘

Java 程序员 后端

Java this关键字详解(3种用法),springaop实现原理面试题

Java 程序员 后端

Java 世界里的垃圾回收规则你搞懂了吗?,java编程思想百度云

Java 程序员 后端

1个月连载30个设计模式真实案例(附源码),挑战年薪60W不是梦

Tom弹架构

Java 架构 设计模式

hive学习笔记之三:内部表和外部表(1),贼好用的Java学习路线集合

Java 程序员 后端

Java 的大 Class 到底是什么?,吃透这份Java高级工程师面试497题解析

Java 程序员 后端

hive学习笔记之三:内部表和外部表,java面试手写算法

Java 程序员 后端

HTML笔记 —— 列表,和快手大佬的技术面谈

Java 程序员 后端

IDEA 一键部署 SpringBoot 项目到远程服务器 Docker 内(1)

Java 程序员 后端

jackson学习之八:常用方法注解,为什么阿里的程序员成长如此之快

Java 程序员 后端

Java BSON使用,springboot运行原理理解

Java 程序员 后端

如何正确选型,React Native还是Native?_语言 & 开发_Mayur Panchal_InfoQ精选文章