几种常用到的 Hybrid App 技术框架

几种,常用,hybrid,app,技术,框架 · 浏览次数 : 11

小编点评

**5种主流的 hybrid 应用框架** | 框架名称 | 开发语言 | 开发目标 | 开发效率 | 优势 | 缺点 | |---|---|---|---|---| | React Native | JavaScript | iOS、Android | 低 | 混合开发,可利用 Web 技术 | 需要使用不同的代码库,性能可能较低 | | Flutter | Dart | iOS、Android | 高 | 跨平台开发,可利用 Web 技术 | 开发效率可能较低 | | Ionic | Angular | iOS、Android | 低 | 可用 Web 技术开发部分,利用原生代码处理核心功能 | 开发效率可能较高 | | Xamarin | C# | iOS、Android | 高 | 开发共享代码库,可用于开发 iOS 和 Android 应用 | 开发效率可能较高 | | PhoneGap/Cordova | HTML、CSS、JavaScript | iOS、Android | 低 | 可用 Web 技术构建跨平台应用程序,无需原生代码 | 开发效率可能较高 |

正文

移动操作系统在经历了诸神混战之后,BlackBerry OS、Symbian OS、Windows Phone 等早期的移动操作系统逐渐因失去竞争力而退出。目前,市场上主要只剩下安卓和 iOS 两大阵营,使得 iOS 和安卓工程师成为抢手资源。然而,由于两者系统的差异,开发同一个应用需投入两倍的工作量,不仅增加了人力成本,而且由于不同团队的开发,细节实现和应用一致性也面临问题。

 

因此,迫切需要一种能够一次开发,可以在两个平台上运行的技术方案。作为一种既能够在原生应用程序环境中运行,也能够在 Web 浏览器中运行的应用程序,Hybrid App 应需而生。今天给大家介绍 5 种主流的 hybrid 款架给大家作为参考。

 

先简单说说主流的 hybrid app 框架有以下几个:

 

React Native:由 Facebook 开发,使用 JavaScript 和 React 来构建原生移动应用程序。它允许开发人员使用相同的代码库来开发 iOS 和 Android 应用,同时提供接近原生性能的体验。

 

Flutter:由 Google 开发,使用 Dart 语言。Flutter 使用自己的渲染引擎,可以创建高性能、美观且具有自然动画的跨平台应用程序。

 

 

Ionic:基于 Web 技术(HTML、CSS 和 JavaScript),使用 Angular 框架。Ionic 提供了一组 UI 组件和工具,使开发人员能够构建跨平台移动应用程序。

 

Xamarin:由 Microsoft 推出,使用 C#语言。Xamarin 允许开发人员使用共享的 C#代码库来开发 iOS 和 Android 应用,并且提供与原生应用相似的性能。

 

PhoneGap/Cordova:由 Adobe 赞助的 Apache 项目,使用 HTML、CSS 和 JavaScript。PhoneGap 是 Cordova 的商业版本,这两个框架都使用 Web 技术来构建跨平台应用程序,并通过 WebView 将 Web 应用程序封装为原生应用。

 

FinClip:最后介绍由国内技术团队开发,主要提供小程序容器技术以及配套的小程序应用管理平台,APP 嵌入该组件可获得小程序运行和上架管理能力,也是目前为数不多可以商用的小程序容器,用来实现 Hybrid+小程序的开发方案。

 

各种框架各有优缺点,适用的方案也是不同的。下面就分别介绍一下 5 种主流的 Hybrid 方案:

原生 + webview 方案

这是最常见的 Hybrid 方案之一。应用的主要框架由原生代码构建,同时在应用的某些部分内嵌入 WebView 组件,用于显示 Web 页面或加载 Web 应用。Web 页面通过 WebView 运行,并可以与原生代码进行通信。这样,开发人员可以使用 Web 技术(如 HTML、CSS、JavaScript)来构建应用的一部分,同时利用原生代码处理应用的核心功能和性能要求。

 

但 webview 也有其缺点,web 应用的体验无法达到原生应用的体验。但其开发效率高,被很多 app 所使用,做一些非核心业务的页面。

纯 webview 方案

在这种方案中,应用几乎完全由 Web 技术构建,没有太多的原生代码。整个应用基本上是一个嵌入在 WebView 中的 Web 应用。这种方案的优势在于可以使用 Web 技术快速开发跨平台应用,但缺点是可能受限于 WebView 的性能和功能,无法完全发挥原生应用的优势。

 

常见的框架比如最早的 phonegap,以 web 开发为主,并通过原生插件来提供原生功能,像摄像头、通讯录、地理定位、存储等功能。现在常用的有 ionic 框架,支持 angular、react、vue 框架进行开发。

原生+小程序方案

小程序方案应该是微信最早发布的,并且大规模使用的。这个方案结合了原生应用和小程序(微信小程序、支付宝小程序等)。小程序是一种基于 Web 技术的轻量级应用,可以在特定的平台上运行。在原生应用中,可以嵌入小程序的界面,并通过通信桥接实现原生和小程序之间的交互。这使得开发人员可以充分利用小程序的开发速度和原生应用的功能和性能。

 

随着微信小程序方案的逐渐成熟,目前国内大厂的 app 也都在应用这个方案:支付宝小程序、百度小程序、头条小程序等等。但目前大厂的小程序容器都是自研的,并没有开放给外部去使用。

web 技术 转换原生组件

在这种方案中,开发人员使用 Web 技术(如 React Native、NativeScript)来构建原生组件,这些组件可以在原生应用中使用。这样,开发人员可以利用熟悉的 Web 技术构建界面和某些功能,然后将其转换为原生组件,以实现更好的性能和体验。

 

react native 可以和原生应用进行混合开发,也可以只采用 react native 进行开发。现在很多的 app 也都会采用 rn 混合这种方案,只有少量的 webview 页面。

Flutter 自绘引擎

react native 也并不是完美的解决方案,由于其为使用 js 编写 ui 界面,在渲染的时候进行将 js 转换为原生的 ui,所以进行复杂计算面,大数据量,或者动画时,就会产生一定的性能问题,增加应用的耗电量或页面卡顿等问题。

 

而 flutter 的出现颠覆了这一切,它并没有采用 js 转原生组件的方式,而是使用 google 的 dart 语言和自带的 skia 渲染引擎来开发 ui 界面。这就相当于他开发一个浏览器,并且还规定了开发 ui 组件的语言(dart)和 api,全部都是自己的,所以高性能成为了其最大的优势,完全可以和原生开发体验相差无几。

 

flutter 最开始时只支持 Android 和 iOS 两个平台,现在不仅增加了 web 平台,桌面端 Windows、macOS 和 Linux 应用程序,还有智能设备、可穿戴设备和车载设备等嵌入式应用。颇有有一统天下的格局,这种产品恐怕也只有 Google 能够做出来。

与几种常用到的 Hybrid App 技术框架相似的内容:

几种常用到的 Hybrid App 技术框架

移动操作系统在经历了诸神混战之后,BlackBerry OS、Symbian OS、Windows Phone 等早期的移动操作系统逐渐因失去竞争力而退出。目前,市场上主要只剩下安卓和 iOS 两大阵营,使得 iOS 和安卓工程师成为抢手资源。然而,由于两者系统的差异,开发同一个应用需投入两倍的工作

【pandas基础】--数据类型

数据类型是计算机编程中将不同类型的数据值分类和定义的方式。 通过数据类型,可以确定数据的存储方式和内存占用量,了解不同类型的数据进行各种运算的能力。 使用`pandas`进行数据分析时,最常用到的几种类型是: 1. 字符串类型,各类文本内容都是字符串类型 2. 数值类型,包括整数和浮点数,可用于计算

SpringBoot项目实现日志打印SQL明细(包括SQL语句和参数)几种方式

前言 我们在开发项目的时候,都会连接数据库。有时候遇到问题需要根据我们编写的SQL进行分析,但如果不进行一些开发或者配置的话,这些SQL是不会打印到控制台的,它们默认是隐藏的。下面给大家介绍几种常用的方法。 第一种、代码形式 Mybatis框架是Java程序员最常用的数据库映射框架,MyBatis

[转帖]简单聊聊运维监控的其他用途

https://www.cnblogs.com/charlieroro/p/16434344.html 说到监控,一般都会聊到这三个基本维度:metrics、log和tracing,以及这几种常用的工具:Prometheus+grafana+alertmanager、ELK、jaeger。 监控通常

如何实现一个优秀的 HashTable 散列表?

本文已收录到 AndroidFamily,技术和职场问题,请关注公众号 [彭旭锐] 提问。 前言 大家好,我是小彭。 在前几篇文章里,我们聊到了 Java 中的几种线性表结构,包括 ArrayList、LinkedList、ArrayDeque 等。今天,我们来讨论另一种常用的基础数据结构,同时也是

Java并发篇:6个必备的Java并发面试种子题目

免费体验AI绘画:https://www.topgpt.one;文章涉及了几个常见的并发编程相关的主题。首先,线程的创建和生命周期是面试中常被问及的话题,面试官可能会询问如何创建线程、线程的状态转换以及如何控制线程的执行顺序等。其次,synchronized关键字是用于实现线程同步的重要工具,面试中可能会涉及到它的使用场景以及与其他同步机制的比较。此外,抽象队列同步器(AQS)是Java并发编程中

测试员最佳跳槽频率是多少?进来看看你是不是符合

最近笔者刷到一则消息,一位测试员在某乎上分享,从月薪5K到如今的20K,他总共跳了10次槽,其中还经历过两次劳动申诉,拿到了大几万的赔偿,被同事们称为“职场碰瓷人”。 虽说这种依靠跳槽式的挣钱法相当奇葩,但不得不说,跳槽成为了职场上越来越常见的现象。在智联招聘调查数据中我们看到,93.2%的白领有跳

简述几种常用的排序算法

摘要:归并排序和快速排序是两种稍微复杂的排序算法,它们用的都是分治的思想,代码都通过递归来实现,过程非常相似。理解归并排序的重点是理解递推公式和 merge() 合并函数。 本文分享自华为云社区《深入浅出八种排序算法》,作者:嵌入式视觉 。 归并排序和快速排序是两种稍微复杂的排序算法,它们用的都是分

[转帖]Linux内核映像vmlinux、Image、zImage、uImage区别

本文介绍几种常用的Linux内核映像的区别。 一、vmlinux vmlinux:Linux内核编译出来的原始的内核文件,elf格式,未做压缩处理。 该映像可用于定位内核问题,但不能直接引导Linux系统启动。 使用readelf命令查看RockPI 4A单板Linux内核编译的vmlinux,内容

[转帖]Linux内核映像vmlinux、Image、zImage、uImage区别

https://zhuanlan.zhihu.com/p/466226177 本文介绍几种常用的Linux内核映像的区别。 一、vmlinux vmlinux:Linux内核编译出来的原始的内核文件,elf格式,未做压缩处理。 该映像可用于定位内核问题,但不能直接引导Linux系统启动。 使用rea