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

ionic性能android,Ionic4VsReactNative_Ionic4ReactNative性能对比

如果您想开发跨平台的App,最常见的就是Ionic和ReactNative框架。两者都有一个充满激情的开发者社区,并分别在大型企业中大量使用。但今天&#

如果您想开发跨平台的App,最常见的就是Ionic和React Native框架。两者都有一个充满激情的开发者社区,并分别在大型企业中大量使用。

但今天,我想集中讨论Ionic和React Native的不同之处,看此贴之前你在互联网上见到的所有的对比可能都是不正确的。因为那是以前的对比,ionic4现在已经正式发布了。

大多数人认为所有跨平台框架的工作方式都是类似的,并且选择跨平台框架非常简单。只需选择最适合使用的框架即可,如果是React开发者,选择React Native; 如果你是一个Angular开发者选择ionic4(先不说这个,ionic4可以和任何JS框架兼容,包括React)。

但是....事情的真相是这个决定并不像人们预期的那么简单。

1、Ionic和React Native相同点:

Ionic:可以让我们用html、css、js的技术开发跨平台可以安装的app、以及PWA、桌面应用程序、移动端web页面

React Native:利用JS框架React,但在运行时呈现本机UI元素,允许您构建iOS和Android应用程序。

通过这种方式,Ionic和React Native都有相同的使命:使用技术X为平台Y构建,其中X和Y传统上不一样。

Ionic和React Native以及所有混合应用程序开发框架(包括Ionic)都允许访问本机设备功能,如摄像头,生物识别,地理定位和离线存储。

2、 Hybrid-Native与Hybrid-Web

为了实现构建特定平台的目标,这些技术中的每一种都具有不同的理念。在我看来,我们可以将这些信念分为两大类:Hybrid-Native和Hybrid-Web。

Hybrid-Native

1、本机UI,共享代码

React Native与Xamarin和NativeScript一起允许您使用一种语言编写用户界面(UI),然后在运行时编排本机UI控件。

它是“跨平台”的,因为React Native框架已将Javascript中的调用映射到管理特定移动平台的本机UI的调用。例如,在移动应用上呈现文本的React Native组件将被转换为两个独立的组件:Android的[TextView]和iOS的[UIView]。因此,您不是跨平台共享组件,而是共享代码。

这就是为什么这种方法的支持者会说你正在构建一个真正的本机应用程序。您的Javascript代码在底层运行并编排本机UI控件,以便您的应用程序UI本机运行(几乎但不完全)。

这意味着React Native必须支持您要使用的基础本机UI组件以及该组件的任何自定义,以便使用该组件或对其进行更改。

例如,假设您想要更改按钮周围的边框。如果React Native没有为该边框打开自定义,则无法直接进入本机实现来手动编程它,您将无法对其进行修改。这并不意味着你不能改变边界,这只是意味着在某些情况下比预期更难做到这一点。

这也意味着,如果您梦想可以在所有数字体验中使用的单个共享可重用UI组件库,那么Hybrid-Native模型(即React Native,Xamarin,NativeScript等)将不会是正确的方法。

2、共享代码库,加上本地代码

React Native项目中的代码重用量取决于您希望在本机层自定义应用程序的程度。如果您坚持使用View,Text,Image和Touchable等基本UI原语,那么您的代码将在每个平台上运行,这意味着您将获得接近100%的代码重用。

另一方面,如果您有很多本机自定义项,那么您的项目将涉及三个独立的代码库:两个用于管理Android和iOS的UI,以及控制器代码将存在的共享代码库。在最近 Airbnb移动团队的一篇文章中,他们解释了这在他们的项目中是如何发挥作用的:

“尽管React Native功能中的代码几乎完全在各个平台上共享,但我们的应用程序中只有一小部分是React Native ...因此,我们在三个平台而不是两个平台上支持代码。”

最后,React Native和其他Hybrid-Native框架是很好的解决方案,具有许多优点。即,能够使用大多数Javascript构建真正的本机UI,同时享受高度的代码共享。特别是,如果您想将跨平台解决方案混合到现有的本机代码库中,拥有现有的本机技能,更喜欢基于JS的本机特定语言,或者只计划定位iOS和Android,我们建议您选择此方法。

Hybrid-Web

1、Web UI,共享组件

ionic采取不同的立场。您的应用程序中使用的UI组件实际上是跨所有平台运行的,而不是您的Javascript代码充当控制本机UI元素的桥梁。在移动应用程序中,这些组件在webview容器中执行。在Progressive Web App中,它们在浏览器中运行。而且,在原生桌面应用程序中,它们可以在像Electron这样的桌面容器中运行。

为什么这很重要?这有几个原因......

1、设计一致性

首先,如果您正在构建设计系统并希望在应用程序和数字体验中实施UX和品牌一致性(例如,这是我们构建的所有应用程序中应该使用的确切按钮) - 只有一种方法可以实现:通过在所有数字平台上共享组件,如移动,桌面,本机和Web。此外,如果您想确保为一个应用程序构建的组件可以在任何项目中重复使用,那么目前使用Web组件是唯一的方法。

2、可移植性

由于Ionic基于HTML,CSS和Javascript,因此您的UI在便携式标准化层上运行。寻找一个完全可自定义的组件,无论您的应用运行在哪个平台上,该组件都会自动运行?Ionic通过使用开放的Web标准使这成为可能。您甚至可以在诸如Progressive Web Apps(PWA)等新平台上运行您的Ionic应用程序,而无需进行任何更改。

3、可定制

Ionic开发人员经常吹嘘的一件事就是能够完全自定义UI的每一点。例如,您可以通过使用Web来完全和完全控制UI,这提供了大量开箱即用的样式属性。从一个简单的`

`标签开始,把它变成你想要的任何东西!

如果您想基于每个平台自定义应用程序的设计,那么在单个代码库中使用易于使用的基于每个平台的CSS样式(Ionic的技术提供)时,这样做会更容易。

4、稳定性

最后,在网络上构建的最大好处可能是平台的稳定性。通过所有现代浏览器支持的开放式Web标准,您可以确信无论您今天写的是什么,明天都可以使用。其他前端工具正在不断发展和变化,而不必过多关注向后兼容性。

一个代码库,随处运行

使用Hybrid-Web方法,您的UI使用HTML / CSS / JS构建,本机功能通过抽象底层平台依赖项的可移植API(或“插件”)进行访问。

而不是整个UI取决于本机平台,只有某些本机设备功能,如相机,是平台相关的。

这允许您的应用程序在网络运行的任何地方运行:iOS,Android,浏览器,桌面/electron,PWA 等等..

这也意味着您的UI层可以在所有平台之间共享。这是非常重要的一点:即使您在Ionic默认的特定于平台的设计之外自定义外观,您也永远不需要将应用程序拆分为多个代码库。

最重要的是,通过使用基于Web的调试工具(如Chrome Developer工具),您还可以同时调试多个平台,从长远来看可以节省您的时间。这实际上是一个巨大的好处。我们经常听说能够在浏览器中构建大量应用程序是使用Ionic构建最实际的好处之一。

总结一下,这里是我推荐Ionic(“Hybrid-Web”)方法进行跨平台开发的场景:

您不仅要为移动设备(iOS和Android)构建应用程序,还要为桌面和浏览器构建应用程序。

您不希望为每个目标平台重写UI。

所有目标平台上的UI自定义和设计一致性至关重要。

您希望为自定义组件或第三方库打开UI的可能性。

您希望从庞大的现有Web开发人才库中招聘并构建一个Javascript组织。

3、Ionic和React Native性能怎么样?

现在让我们来谈谈评估Hybrid-Web方法时房间里的大象。Hybrid-Native的支持者经常会说:“但性能怎么样?!”

事实上,对于绝大多数用例而言,混合框架(Hybrid-Native和Hybrid-Web)将具有相似的性能。(这是进过大量测试的)如果您想了解Ionic应用程序的执行情况,我邀请您查看我们的一个示例应用程序并将其用于旋转。请记住,即使在原生应用中,“糟糕的代码”也会让您的应用变得迟钝。因此,请始终确保在构建时使用最佳实践。

最后,如果性能是您唯一的关注点,那么您也可以完全使用iOS和Android工具集进行原生设置。对于性能敏感的应用程序,在成本和开发时间方面与原生 sdk保持一致可能是值得的。

4、那么这是什么意思?

如果您正在用React Native或任何其他Hybrid-Native框架和Ionic对比性能,或者说其他混合框架比ionic4运行速度快,那么请你采用正确的测试方法。

虽然两者都是可靠的框架,并且可以帮助您构建出色的应用程序,但您的团队或组织的选择取决于您的整体愿景和应用程序的理想功能。此外,您还必须确保根据哪些因素对您进行评估,例如:设计一致性,自定义,平台独立性,可移植性等。

当您考虑选择技术来应对您的应用程序开发活动的首要任务时,您可能会发现一个明显的赢家出现在您的下一个项目的其余部分之上。请记住,选择与您习惯使用的技术堆栈关系不大,而更多地与您的应用程序的值如何与构建它的方法一致。

PS这是一个备忘单,可以帮助您比较跨平台框架之间的选项:

ca9081a95f9053e37bcf642eb3cc84b7.png

来源:https://ionicframework.com/resources/articles/ionic-vs-react-native-a-comparison-guide#hybrid-native-vs.-hybrid-web



推荐阅读
  • ASP.NET2.0数据教程之十四:使用FormView的模板
    本文介绍了在ASP.NET 2.0中使用FormView控件来实现自定义的显示外观,与GridView和DetailsView不同,FormView使用模板来呈现,可以实现不规则的外观呈现。同时还介绍了TemplateField的用法和FormView与DetailsView的区别。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 恶意软件分析的最佳编程语言及其应用
    本文介绍了学习恶意软件分析和逆向工程领域时最适合的编程语言,并重点讨论了Python的优点。Python是一种解释型、多用途的语言,具有可读性高、可快速开发、易于学习的特点。作者分享了在本地恶意软件分析中使用Python的经验,包括快速复制恶意软件组件以更好地理解其工作。此外,作者还提到了Python的跨平台优势,使得在不同操作系统上运行代码变得更加方便。 ... [详细]
  • Spring框架《一》简介
    Spring框架《一》1.Spring概述1.1简介1.2Spring模板二、IOC容器和Bean1.IOC和DI简介2.三种通过类型获取bean3.给bean的属性赋值3.1依赖 ... [详细]
  • 详解react组件通讯方式(多种)
    这篇文章主要介绍了详解react组件通讯方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 20211101CleverTap参与度和分析工具功能平台学习/实践
    1.应用场景主要用于学习CleverTap的使用,该平台主要用于客户保留与参与平台.为客户提供价值.这里接触到的原因,是目前公司用到该平台的服务~2.学习操作 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • Google Play推出全新的应用内评价API,帮助开发者获取更多优质用户反馈。用户每天在Google Play上发表数百万条评论,这有助于开发者了解用户喜好和改进需求。开发者可以选择在适当的时间请求用户撰写评论,以获得全面而有用的反馈。全新应用内评价功能让用户无需返回应用详情页面即可发表评论,提升用户体验。 ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • Spring常用注解(绝对经典),全靠这份Java知识点PDF大全
    本文介绍了Spring常用注解和注入bean的注解,包括@Bean、@Autowired、@Inject等,同时提供了一个Java知识点PDF大全的资源链接。其中详细介绍了ColorFactoryBean的使用,以及@Autowired和@Inject的区别和用法。此外,还提到了@Required属性的配置和使用。 ... [详细]
  • 本文介绍了Java的公式汇总及相关知识,包括定义变量的语法格式、类型转换公式、三元表达式、定义新的实例的格式、引用类型的方法以及数组静态初始化等内容。希望对读者有一定的参考价值。 ... [详细]
  • 本文介绍了H5游戏性能优化和调试技巧,包括从问题表象出发进行优化、排除外部问题导致的卡顿、帧率设定、减少drawcall的方法、UI优化和图集渲染等八个理念。对于游戏程序员来说,解决游戏性能问题是一个关键的任务,本文提供了一些有用的参考价值。摘要长度为183字。 ... [详细]
  • 本文详细介绍了Android中的坐标系以及与View相关的方法。首先介绍了Android坐标系和视图坐标系的概念,并通过图示进行了解释。接着提到了View的大小可以超过手机屏幕,并且只有在手机屏幕内才能看到。最后,作者表示将在后续文章中继续探讨与View相关的内容。 ... [详细]
author-avatar
jiajian123
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有