译者 | 陈峻
审校 | 孙淑娟
众所周知,根据使用场景的不同,我们往往需要针对智能手机、平板电脑以及可穿戴设备等不同平台,开发相应的应用。如果为每一类应用都去编写独特的程序代码的话,不但耗时,而且无法实现代码的重用。因此,我们需要引入混合应用开发的机制。
通常,我们可以使用各种现成的框架,去编写一个混合应用,然后将其存储在原生的容器中,以实现在不同的平台上,部署此类原生应用。可见,合适的平台框架,能够给混合应用的开发,带来事半功倍的效果。下面,我将向你介绍目前6种最为实用的开发框架。
1、React Native
作为一个JavaScript框架,React Native可以被用于开发跨平台的移动应用。由于该框架带有一种可用于开发用户界面的独特语言—JSX,因此用户可通过React编写出HTML和CSS。同时,它的用户界面组件也被设计成为能够给最终用户带来快速且愉快的体验形式。
与其他大多数需要重新编译代码、或重新启动应用,才能见效的开发框架不同,React Native的诱人之处在于,它能够快速展示应用被更改的效果。
由于React Native在每个平台上都会使用JavaScript引擎,因此你可以去访问由库和开源工具所组成的庞大生态系统。同时,它也允许用户无缝地将部分应用代码移植到另一个平台上。
对于某些具有动态、复杂或高级设计的接口来说,React Native可能并非完美的框架。由于可供你使用的自定义模型数量比较有限,因此你往往需要针对应用中重要的复杂性部分,从头开始开发与构建。初学者则需要花费一段时间,去掌握该框架的全面功能。
总的说来,React Native不但缩短了开发时间,而且能够与第三方应用相兼容,值得大家学习。
2、Ionic
曾为NHS(英国国家医疗服务体系)和西南航空等组织提供数百万强大应用的Ionic,是业界领先的混合应用工具包。它允许用户使用单一的代码库,为多个平台开发出混合移动应用。
Ionic拥有一套为移动优化了的HTML库、CSS背景模式以及JavaScript组件。这些基本工具都能够帮助用户构建出用户友好的、交互式的多平台应用。
Ionic的另一个优势是,它包含了一套针对摄像头、GPS以及健康套件的额外功能,以便你增加自己的应用功能集。同时,你也可以在编写代码时,通过测试每个组件,以尽早地发现各种错误与缺陷。
由于Ionic包含了一组高效的响应式部件,因此它在保证了灵活的用户体验的同时,也节省了你在开发过程中花费的宝贵时间和精力。
不过,Ionic最大的局限在于,其开发出的应用程序严重依赖于原生的插件。虽然此类插件旨在达到与原生应用相当的性能,但是并非所有实例都可以用到它们。也就是说,你可能很难为自己正在开发的应用找到其合适的插件。
3、Xamarin
作为相对较新的原生编译框架,Xamarin可以被用来开发出那些需要保持原有的外观和用户体验的高性能应用。2016年,微软收购了Xamarin项目社区,并使之成为微软生态系统中,用于开发应用程序的流行工具。
由于Xamarin能够使用C语言,以及基于.NET层面的其他原生库,来开发应用程序,因此它可以在不牺牲性能的情况下,将带有原生库的高端应用,部署到不同平台的程序中。这与其他流行的混合框架相比,显然提供了更好的用户体验。
不过,与原生应用相比,Xamarin在性能上存在着一定的局限性。因此,它不一定是某些复杂应用的最佳选择。同时,由于该框架中也不提供热重载的相关功能,因此其某些功能可能无法在特定的平台上被实时更新。
总的说来,作为混合开发需求的一项不错的选择,Xamarin具有强大的支持、全面的资源,并能够让你的应用具有接近原生的性能。
4、Flutter
根据Google的定义,Flutter通过一个直观的UI工具箱(其中包括插件库和创新的用户界面),让用户控制应用的组件,进而实现类似原生的性能。例如,Flutter的App Builder就能够让你混合和匹配各种功能。而使用其hotloader特性,你可以在调试代码时,即时进行更改,进而简化了整个开发过程。此外,由于Flutter能够支持开发出不限于Android或iOS的应用,因此它已得到了广泛的使用。
对于初学者来说,由于Flutter使用的是Dart,这种并非针对应用开发的流行语言,因此其学习曲线较为陡峭。而且,虽然由其提供的内置小部件(widgets)对于应用而言非常重要,但是一旦缺少了第三方库,就意味着开发者需要额外地用自己的代码去实现。
总的说来,Flutter仍然是不错的选择。它不但能够通过一流的UI元素来提供字体选项,而且可以通过各种小部件,来改善应用的整体性能与用户体验。
5、NativeScript
作为一个开源的框架,NativeScript可以让用户使用JavaScript和CSS等Web技能来构建应用程序。而凭借着出色的特性和整体性能,NativeScript能够与最新的移动版本、资源库以及命令行界面相兼容。
该架构的一项实用特性是它可以实时地更新应用,而无需手动刷新。当然,与大多数其他混合应用框架不同,NativeScript并不使用Web技术。
总的说来,该框架不仅功能丰富,便于使用,而且性价比高,能够给开发人员带来流畅的使用体验。
6、Apache Cordova
Cordova使用CSS3、JavaScript以及HTML5,来创建跨平台的应用。通过扩展其HTML5和CSS3特性,该框架增加了诸如:加速器、指南针、麦克风以及文件系统等额外功能,从而能够与目标设备协同工作。
同时,凭借着此类额外功能,开发者既可以快速、灵活地构建原生应用,又能够访问第三方的插件和工具箱。
虽然Cordova自身已包含了大量的平台插件与功能,但是就算你没找到合适的插件,也可以轻松地编写出自己的插件,并通过JavaScript代码的形式连接到系统级的代码中,以确保提供原生的性能。
与Ionic类似,该框架也包含了近似原生的小部件、选项卡以及可重排的列表等特性。同时,由于Apache Cordova能够提供两种工作流方法以及一种跨平台的工作流方法(即:CLI),因此由其开发的应用程序可以在不同的移动操作系统上运行。
此外,CLI还提供一个独特的接口以协助开发者将插件植入应用之中。也就是说,以平台为中心的工作流,可以帮助你先构建单个平台应用,然后再将其修改为并不复杂的形式。
7、选择合适的框架
综上所述,不同的混合框架有着适合不同应用场景的独特卖点。例如,NativeScript的主要吸引力在于,你不需要事先了解应用会运行在iOS还是Android平台上。你更应该仔细考虑的是,待开发应用的并发性、兼容性以及成本等因素,并据此来选择适合的框架。
原文链接:https://www.makeuseof.com/hybrid-app-development-best-frameworks/
译者介绍
陈峻 (Julian Chen),51CTO社区编辑,具有十多年的IT项目实施经验,善于对内外部资源与风险实施管控,专注传播网络与信息安全知识与经验。