草庐IT

这6款混合开发框架,比原生更香吗?

轻风博客 2023-03-28 原文

 

 

 

 

 

 合适的平台框架往往能够给混合应用的开发,带来事半功倍的效果。本文将向你介绍目前6种最为实用的开发框架。  
众所周知,根据使用场景的不同,我们往往需要针对智能手机、平板电脑以及可穿戴设备等不同平台,开发相应的应用。如果为每一类应用都去编写独特的程序代码的话,不但耗时,而且无法实现代码的重用。因此,我们需要引入混合应用开发的机制。
通常,我们可以使用各种现成的框架,去编写一个混合应用,然后将其存储在原生的容器中,以实现在不同的平台上,部署此类原生应用。可见,合适的平台框架,能够给混合应用的开发,带来事半功倍的效果。下面,我将向你介绍目前6种最为实用的开发框架。

 

React Native

 

 

 


作为一个JavaScript框架,React Native可以被用于开发跨平台的移动应用。由于该框架带有一种可用于开发用户界面的独特语言—JSX,因此用户可通过React编写出HTML和CSS。同时,它的用户界面组件也被设计成为能够给最终用户带来快速且愉快的体验形式。
与其他大多数需要重新编译代码、或重新启动应用,才能见效的开发框架不同,React Native的诱人之处在于,它能够快速展示应用被更改的效果。
由于React Native在每个平台上都会使用JavaScript引擎,因此你可以去访问由库和开源工具所组成的庞大生态系统。同时,它也允许用户无缝地将部分应用代码移植到另一个平台上。
对于某些具有动态、复杂或高级设计的接口来说,React Native可能并非完美的框架。由于可供你使用的自定义模型数量比较有限,因此你往往需要针对应用中重要的复杂性部分,从头开始开发与构建。初学者则需要花费一段时间,去掌握该框架的全面功能。
总的说来,React Native不但缩短了开发时间,而且能够与第三方应用相兼容,值得大家学习。

 

Ionic


曾为NHS(英国国家医疗服务体系)和西南航空等组织提供数百万强大应用的Ionic,是业界领先的混合应用工具包。它允许用户使用单一的代码库,为多个平台开发出混合移动应用。
Ionic拥有一套为移动优化了的HTML库、CSS背景模式以及JavaScript组件。这些基本工具都能够帮助用户构建出用户友好的、交互式的多平台应用。
Ionic的另一个优势是,它包含了一套针对摄像头、GPS以及健康套件的额外功能,以便你增加自己的应用功能集。同时,你也可以在编写代码时,通过测试每个组件,以尽早地发现各种错误与缺陷。
由于Ionic包含了一组高效的响应式部件,因此它在保证了灵活的用户体验的同时,也节省了你在开发过程中花费的宝贵时间和精力。
不过,Ionic最大的局限在于,其开发出的应用程序严重依赖于原生的插件。虽然此类插件旨在达到与原生应用相当的性能,但是并非所有实例都可以用到它们。也就是说,你可能很难为自己正在开发的应用找到其合适的插件。

 

Xamarin

 

 


作为相对较新的原生编译框架,Xamarin可以被用来开发出那些需要保持原有的外观和用户体验的高性能应用。2016年,微软收购了Xamarin项目社区,并使之成为微软生态系统中,用于开发应用程序的流行工具。
由于Xamarin能够使用C语言,以及基于.NET层面的其他原生库,来开发应用程序,因此它可以在不牺牲性能的情况下,将带有原生库的高端应用,部署到不同平台的程序中。这与其他流行的混合框架相比,显然提供了更好的用户体验。
不过,与原生应用相比,Xamarin在性能上存在着一定的局限性。因此,它不一定是某些复杂应用的最佳选择。同时,由于该框架中也不提供热重载的相关功能,因此其某些功能可能无法在特定的平台上被实时更新。
总的说来,作为混合开发需求的一项不错的选择,Xamarin具有强大的支持、全面的资源,并能够让你的应用具有接近原生的性能。

 

Flutter

 

 


根据Google的定义,Flutter通过一个直观的UI工具箱(其中包括插件库和创新的用户界面),让用户控制应用的组件,进而实现类似原生的性能。例如,Flutter的App Builder就能够让你混合和匹配各种功能。而使用其hotloader特性,你可以在调试代码时,即时进行更改,进而简化了整个开发过程。此外,由于Flutter能够支持开发出不限于Android或iOS的应用,因此它已得到了广泛的使用。
对于初学者来说,由于Flutter使用的是Dart,这种并非针对应用开发的流行语言,因此其学习曲线较为陡峭。而且,虽然由其提供的内置小部件(widgets)对于应用而言非常重要,但是一旦缺少了第三方库,就意味着开发者需要额外地用自己的代码去实现。
总的说来,Flutter仍然是不错的选择。它不但能够通过一流的UI元素来提供字体选项,而且可以通过各种小部件,来改善应用的整体性能与用户体验。

 

NativeScript

 

 


作为一个开源的框架,NativeScript可以让用户使用JavaScript和CSS等Web技能来构建应用程序。而凭借着出色的特性和整体性能,NativeScript能够与最新的移动版本、资源库以及命令行界面相兼容。
该架构的一项实用特性是它可以实时地更新应用,而无需手动刷新。当然,与大多数其他混合应用框架不同,NativeScript并不使用Web技术。
总的说来,该框架不仅功能丰富,便于使用,而且性价比高,能够给开发人员带来流畅的使用体验。

 

Apache Cordova

 

 


Cordova使用CSS3、JavaScript以及HTML5,来创建跨平台的应用。通过扩展其HTML5和CSS3特性,该框架增加了诸如:加速器、指南针、麦克风以及文件系统等额外功能,从而能够与目标设备协同工作。
同时,凭借着此类额外功能,开发者既可以快速、灵活地构建原生应用,又能够访问第三方的插件和工具箱。
虽然Cordova自身已包含了大量的平台插件与功能,但是就算你没找到合适的插件,也可以轻松地编写出自己的插件,并通过JavaScript代码的形式连接到系统级的代码中,以确保提供原生的性能。
与Ionic类似,该框架也包含了近似原生的小部件、选项卡以及可重排的列表等特性。同时,由于Apache Cordova能够提供两种工作流方法以及一种跨平台的工作流方法(即:CLI),因此由其开发的应用程序可以在不同的移动操作系统上运行。
此外,CLI还提供一个独特的接口以协助开发者将插件植入应用之中。也就是说,以平台为中心的工作流,可以帮助你先构建单个平台应用,然后再将其修改为并不复杂的形式。

 

选择合适的框架
综上所述,不同的混合框架有着适合不同应用场景的独特卖点。例如,NativeScript的主要吸引力在于,你不需要事先了解应用会运行在iOS还是Android平台上。你更应该仔细考虑的是,待开发应用的并发性、兼容性以及成本等因素,并据此来选择适合的框架。

原文链接:

https://www.makeuseof.com/hybrid-app-development-best-frameworks/

 

译者 | 陈峻

有关这6款混合开发框架,比原生更香吗?的更多相关文章

  1. ruby - 使用 C 扩展开发 ruby​​gem 时,如何使用 Rspec 在本地进行测试? - 2

    我正在编写一个包含C扩展的gem。通常当我写一个gem时,我会遵循TDD的过程,我会写一个失败的规范,然后处理代码直到它通过,等等......在“ext/mygem/mygem.c”中我的C扩展和在gemspec的“扩展”中配置的有效extconf.rb,如何运行我的规范并仍然加载我的C扩展?当我更改C代码时,我需要采取哪些步骤来重新编译代码?这可能是个愚蠢的问题,但是从我的gem的开发源代码树中输入“bundleinstall”不会构建任何native扩展。当我手动运行rubyext/mygem/extconf.rb时,我确实得到了一个Makefile(在整个项目的根目录中),然后当

  2. ruby-on-rails - 在混合/模块中覆盖模型的属性访问器 - 2

    我有一个包含模块的模型。我想在模块中覆盖模型的访问器方法。例如:classBlah这显然行不通。有什么想法可以实现吗? 最佳答案 您的代码看起来是正确的。我们正在毫无困难地使用这个确切的模式。如果我没记错的话,Rails使用#method_missing作为属性setter,因此您的模块将优先,阻止ActiveRecord的setter。如果您正在使用ActiveSupport::Concern(参见thisblogpost),那么您的实例方法需要进入一个特殊的模块:classBlah

  3. Ruby Sinatra 配置用于生产和开发 - 2

    我已经在Sinatra上创建了应用程序,它代表了一个简单的API。我想在生产和开发上进行部署。我想在部署时选择,是开发还是生产,一些方法的逻辑应该改变,这取决于部署类型。是否有任何想法,如何完成以及解决此问题的一些示例。例子:我有代码get'/api/test'doreturn"Itisdev"end但是在部署到生产环境之后我想在运行/api/test之后看到ItisPROD如何实现? 最佳答案 根据SinatraDocumentation:EnvironmentscanbesetthroughtheRACK_ENVenvironm

  4. ruby - 是否可以覆盖 gemfile 进行本地开发? - 2

    我们的git存储库中目前有一个Gemfile。但是,有一个gem我只在我的环境中本地使用(我的团队不使用它)。为了使用它,我必须将它添加到我们的Gemfile中,但每次我checkout到我们的master/dev主分支时,由于与跟踪的gemfile冲突,我必须删除它。我想要的是类似Gemfile.local的东西,它将继承从Gemfile导入的gems,但也允许在那里导入新的gems以供使用只有我的机器。此文件将在.gitignore中被忽略。这可能吗? 最佳答案 设置BUNDLE_GEMFILE环境变量:BUNDLE_GEMFI

  5. ruby - 在 Windows 机器上使用 Ruby 进行开发是否会适得其反? - 2

    这似乎非常适得其反,因为太多的gem会在window上破裂。我一直在处理很多mysql和ruby​​-mysqlgem问题(gem本身发生段错误,一个名为UnixSocket的类显然在Windows机器上不能正常工作,等等)。我只是在浪费时间吗?我应该转向不同的脚本语言吗? 最佳答案 我在Windows上使用Ruby的经验很少,但是当我开始使用Ruby时,我是在Windows上,我的总体印象是它不是Windows原生系统。因此,在主要使用Windows多年之后,开始使用Ruby促使我切换回原来的系统Unix,这次是Linux。Rub

  6. ruby-on-rails - 在 Rails 开发环境中为 .ogv 文件设置 Mime 类型 - 2

    我正在玩HTML5视频并且在ERB中有以下片段:mp4视频从在我的开发环境中运行的服务器很好地流式传输到chrome。然而firefox显示带有海报图像的视频播放器,但带有一个大X。问题似乎是mongrel不确定ogv扩展的mime类型,并且只返回text/plain,如curl所示:$curl-Ihttp://0.0.0.0:3000/pr6.ogvHTTP/1.1200OKConnection:closeDate:Mon,19Apr201012:33:50GMTLast-Modified:Sun,18Apr201012:46:07GMTContent-Type:text/plain

  7. 世界前沿3D开发引擎HOOPS全面讲解——集3D数据读取、3D图形渲染、3D数据发布于一体的全新3D应用开发工具 - 2

    无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD

  8. 【鸿蒙应用开发系列】- 获取系统设备信息以及版本API兼容调用方式 - 2

    在应用开发中,有时候我们需要获取系统的设备信息,用于数据上报和行为分析。那在鸿蒙系统中,我们应该怎么去获取设备的系统信息呢,比如说获取手机的系统版本号、手机的制造商、手机型号等数据。1、获取方式这里分为两种情况,一种是设备信息的获取,一种是系统信息的获取。1.1、获取设备信息获取设备信息,鸿蒙的SDK包为我们提供了DeviceInfo类,通过该类的一些静态方法,可以获取设备信息,DeviceInfo类的包路径为:ohos.system.DeviceInfo.具体的方法如下:ModifierandTypeMethodDescriptionstatic StringgetAbiList​()Obt

  9. 微信小程序开发入门与实战(Behaviors使用) - 2

    @作者:SYFStrive @博客首页:HomePage📜:微信小程序📌:个人社区(欢迎大佬们加入)👉:社区链接🔗📌:觉得文章不错可以点点关注👉:专栏连接🔗💃:感谢支持,学累了可以先看小段由小胖给大家带来的街舞👉微信小程序(🔥)目录自定义组件-behaviors    1、什么是behaviors    2、behaviors的工作方式    3、创建behavior    4、导入并使用behavior    5、behavior中所有可用的节点    6、同名字段的覆盖和组合规则总结最后自定义组件-behaviors    1、什么是behaviorsbehaviors是小程序中,用于实现

  10. TimeSformer:抛弃CNN的Transformer视频理解框架 - 2

    Transformers开始在视频识别领域的“猪突猛进”,各种改进和魔改层出不穷。由此作者将开启VideoTransformer系列的讲解,本篇主要介绍了FBAI团队的TimeSformer,这也是第一篇使用纯Transformer结构在视频识别上的文章。如果觉得有用,就请点赞、收藏、关注!paper:https://arxiv.org/abs/2102.05095code(offical):https://github.com/facebookresearch/TimeSformeraccept:ICML2021author:FacebookAI一、前言Transformers(VIT)在图

随机推荐