热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Native_如何正确选型,ReactNative还是Native?

篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何正确选型,ReactNative还是Native?相关的知识,希望对你有一定的参考价值。

篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何正确选型,React Native还是Native?相关的知识,希望对你有一定的参考价值。






作者 | Mayur Panchal


译者 | 刘志勇


编辑 | Yonie


随着 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 语言。



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

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


原生应用开发的优点



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


  • 编写文档对于原生应用来讲很容易,因为仅 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还是Native?



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



 活动推荐

上半年大前端技术干货集合,GMTC 2019 全球大前端技术大会将于 6 月 20-23 日在北京国际会议中心召开。学习热门前端技术,听这一场大会就够了,部分精彩议题如下:


【腾讯】从代码保护出发详谈业务安全前端对抗


【阿里】基于 Serverless 的淘宝前端研发模式升级


【美团】基于跨平台框架 Flutter 的动态化平台建设


【京东】京东购物小程序工程化之路


【百度】基于精准测试及 AI 技术的前端质量保证实践


欢迎点击“阅读原文”和扫描图中二维码了解详细日程,购票咨询:18514549229(同微信)





推荐阅读
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了Flutter添加APP启动StoryView相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 本文介绍了RxJava在Android开发中的广泛应用以及其在事件总线(Event Bus)实现中的使用方法。RxJava是一种基于观察者模式的异步java库,可以提高开发效率、降低维护成本。通过RxJava,开发者可以实现事件的异步处理和链式操作。对于已经具备RxJava基础的开发者来说,本文将详细介绍如何利用RxJava实现事件总线,并提供了使用建议。 ... [详细]
  • JavaScript和Python是用于构建各种应用程序的两种有影响力的编程语言。尽管JavaScript多年来一直是占主导地位的编程语言,但Python的迅猛发展有 ... [详细]
  • rust编程这篇文章是关于我通过解决Twitch上尚未解决的所有CtCI问题来学习Rust的经验。英国科学博物馆集团AdaLovelace的肖像Rust徽标,由Moz ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • 本文介绍了JavaScript进化到TypeScript的历史和背景,解释了TypeScript相对于JavaScript的优势和特点。作者分享了自己对TypeScript的观察和认识,并提到了在项目开发中使用TypeScript的好处。最后,作者表示对TypeScript进行尝试和探索的态度。 ... [详细]
  • Vue基础一、什么是Vue1.1概念Vue(读音vjuː,类似于view)是一套用于构建用户界面的渐进式JavaScript框架,与其它大型框架不 ... [详细]
  • React 小白初入门
    推荐学习:React官方文档:https:react.docschina.orgReact菜鸟教程:https:www.runoob.c ... [详细]
  • 这篇文章主要讲解了“如何应对Android面试”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何应对 ... [详细]
  • 1、DashAPI文档Dash是一个API文档浏览器,使用户可以使用离线功能即时搜索无数API。程序员使用Dash可访问iOS,MacOS, ... [详细]
  • 微信回应「10 元就能在朋友圈改定位」;谷歌官方首次提及 Android 11;Node 8.16.2 发布 | 极客头条...
    微信回应「10元就能在朋友圈改定位」;谷歌官方首次提及Android11;Node8.16.2发布|极客头条,Go语言社区,Golang程序员人脉社 ... [详细]
  • 在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板
    本文介绍了在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板的方法和步骤,包括将ResourceDictionary添加到页面中以及在ResourceDictionary中实现模板的构建。通过本文的阅读,读者可以了解到在Xamarin XAML语言中构建控件模板的具体操作步骤和语法形式。 ... [详细]
  • 本文介绍了Python爬虫技术基础篇面向对象高级编程(中)中的多重继承概念。通过继承,子类可以扩展父类的功能。文章以动物类层次的设计为例,讨论了按照不同分类方式设计类层次的复杂性和多重继承的优势。最后给出了哺乳动物和鸟类的设计示例,以及能跑、能飞、宠物类和非宠物类的增加对类数量的影响。 ... [详细]
  • elixirerlang通过AyandaDubeFIPS(联邦信息处理标准)[1]是由NIST(美国国家标准技术研究院)定义 ... [详细]
author-avatar
上官王木木
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有