今天来聊聊 Hybird app 技术
最近听到身边的朋友经常聊到鸿蒙,也聊到开发周期紧、任务重,应对纯血鸿蒙 2024 年 Q4 的正式商用,不知道该如何开发更合适。
于是有感而发,在这里说一下个人现在比较看好的混合应用(hybird app)开发技术。
什么是混合应用开发?
混合应用(通常指的是 App 开发)是一种结合了 Web 应用程序和原生应用程序的应用程序。它使用 Web 技术(例如 HTML、CSS 和 JavaScript,或者说用最近比较火的小程序技术)来开发应用程序的 UI 界面和业务逻辑,并使用原生应用程序的 API 来访问设备的功能。
混合 App 开发通常使用以下两种模式:
WebView 模式:在这种模式下,混合应用程序使用 WebView 控件来加载 Web 页面。Web 页面包含应用程序的 UI 界面和业务逻辑。WebView 控件可以访问设备的某些功能,例如摄像头和地理位置。
混合模式:顾名思义,就是使用 WebView 控件来加载 Web 页面,也使用原生代码来实现部分功能。原生代码可以访问设备的所有功能。
这种开发方式的优势还是挺明显的,例如开发成本低(write once, run everywhere)、开发效率高(开发周期短、易于学习)等。最“燃”的就是用户体验同样好,因为混合应用程序可以利用原生应用程序的 UI 元素和功能,因此可以为用户提供良好的用户体验。
相比于一些性能方面不如原生技术,个人认为,大部分的业务应用更多需要考虑开发周期的问题,交互和性能的需求其实没有那么的高。
Hybird App 开发关键在于跨端研发
换个方向思考,大部分应用使用的是跨端框架来开发,所以 Hybird 开发的关键还是选合适的跨端开发框架。
国内常用的,分 App 跨端及桌面跨端。App 跨端常用的是:Flutter,VUE,React Native,FinClip 等;桌面跨端包括:Electron、FinClip、Flutter 等。
这里挑上述两类都有的跨端框架介绍下。
FinClip
FinClip是凡泰极客研发的一套小程序容器技术,也可以说是小程序沙箱 Runtime/Engine,提供 Runtime 基于浏览器内核,采用动态语言(JS)和声明式 View 构建(XML),兼容互联网主流小程序技术,可采用 Vue、react 基础上的 DSL 框架。
与 Electron、Flutter、Tauri 等跨端平台不同的是,FinClip 严格意义上讲是一项容器技术。与跨端平台不仅不冲突,还可以完美融合。移动端跨平台开发框架中,不管是通过 Flutter、Taro、 kbone 等开发出来的小程序均可在 FinClip 当中运行。
这种小程序容器技术,将视图层与逻辑层分离也带来了许多好处:
1、方便多个小程序页面之间的数据共享和交互。在小程序的生命周期中具有相同的上下文可以为具备原生应用程序开发背景的开发人员提供熟悉的编码体验;
2、Service 和 View 的分离和并行实现可以防止 JS 执行影响或减慢页面渲染,这有助于提高渲染性能;
3、因为 JS 在 Service 层执行,所以 JS 里面操作的 DOM 将不会对 View 层产生影响,所以小程序不能操作 DOM 结构的,这也使得小程序的性能比传统的 H5 更好。
之所以在平台桌面应用开发框架中介绍,就是除了FinClip移动端跨端开发的能力,它还支持在手机以外,如 Windows、Mac、Linux、统信、麒麟等平台下运行小程序,这意味着,移动端、PC 端、IOT 等智能终端都能运行小程序了。同时,它还提供一个完善的后台管理系统,统一管理小程序的上架和下架、监测小程序的使用详情,换句话说,借助该工具,可以借助微信小程序生态的成熟度,快速引入业务生态来壮大、丰富自己的业务场景,实现技术和业务双降本增效。
Flutter
Flutter 是一个由 Google 开发的跨平台应用开发框架,最初只用于移动端为 Android、iOS 开发应用。2022 年 5 月,Google 在 Google I/O 2022 发布了 Flutter 3.0 版本,宣布对 Windows、macOS、Linux 桌面操作系统提供支持。
Flutter Desktop 是使用 Dart 编写界面逻辑的,Dart 语言容易学习和上手、开发成本低。此外,Flutter 的组件比较丰富,并且支持 Win 10 操作系统(之前的操作系统就不太支持了)。但因为桌面端才刚刚发布稳定版支持,生态和稳定性都有待考量,还有 API 也是比较少的,需要开发人员自己来写。
除了上述两类框架之外,市面上还有其他主流跨端框架,如:React Native,Xamarin,Weex 等。这些跨端框架都有一些通用的优势所在:
跨平台开发,可以同时构建 iOS 和 Android 应用程序。
使用 JavaScript 和 React 开发,具有较低的学习曲线。
具有原生性能,并且可以通过原生代码进行优化。
活跃的开发者社区和大量的第三方库和工具支持。
虽然其在某些情况下可能需要依赖原生模块或编写原生代码来处理特定的功能,以及在一些性能敏感的场景中,可能无法达到完全的原生性能等缺陷,但这些都完全不影响大部分混合应用开发的执行和用户体验。
评论