受益于开源技术的发展,以及响应快速开发的实际业务需求,跨平台开发不仅限于移动端跨平台,桌面端虽然在市场应用方面场景不像移动端那么丰富,但也有市场的需求。

相对于个人开发者而言,跨平台框架的使用,主要为了满足以下三个主要能力:

  1. 生产力提升:框架能够帮助开发者实现快速开发,这是降本增效的根本。如果不能实现「快速」,那也就比自己从零开始写代码快不了太多了。

  2. 框架打包后的体积轻量:开发者大部分是普通用户,不会安装基础环境(不会运维,不会运维,不会运维)。

  3. 跨平台:许多开发者日常开发还是以Mac做为主力开发机,所以强烈需要跨平台(跨移动平台,跨移动及桌面平台)。

今天,我们就在本篇文章中盘点下,跨平台桌面应用开发的5大主流框架:Electron、wxPython、FinClip、Tauri、Flutter。

Electron

相信这个框架大家都不陌生。

首先,Electron 本身是基于 Node.js 的,这样就可以利用 Node.js 的现成资源。

其次,Electron 是跨平台的,换句话说,它可以同时开发 Web 应用和桌面应用,一些常规的资源,如:UI,代码(JS)等资源都可以共享,为开发者大大减少了工作量,甚至企业也无需重复投入人力来开发系统。

再有,Electron 不仅支持 Web API,完成与 Web 应用相同的工作,还允许调用很多操作系统底层 API 来与硬件设备交互,甚至可以用 C++、Go 来编写本地模块,这样一来就可以完成很多 Web 应用无法做到的事情。

小结:使用语言html,js,css等,功能强大,界面绚丽,跨平台,开发成本低,可以说是集优点于一身。除了,性能不敢恭维~~

​wxPython

wxPython和pyqt 两者类似,都是用python语言开发。前者是对wxWidgets的封装,后者是对大名鼎鼎的qt的封装。wxWidgets 是基于操作系统的 API 来做桌面应用的,也就是说,在 Windows 下开发一个桌面应用时,看起来就像是传统的 Windows 桌面软件的风格,在 Mac 下则是 Mac 的风格,而前面三个都有自己的自绘引擎。

也就是说,使用wxWidgets 在三个平台上都是按照三个平台自己的 API 来绘制这个按钮的。wxWidgets 提供了非常多的操作系统的 API,并且可以做到静态链接,但小问题比较多。

Tauri

“Build an optimized, secure, and frontend-independent application for multi-platform deployment.”

从Tauri官网的宣传语可以看出Tauri主打的几个卖点:

  • optimized:性能高、体积小

  • secure:安全性强

  • frontend-independent:前端独立

  • multiplatform:跨平台

Tauri框架是由Rust语言实现的,同时Tauri应用的后端也是由Rust来编写的。Rust是由Mozilla主导开发的通用、编译型的系统编程语言。Rust语言自身有如下的一些特性:

  • 性能高(optimized):Rust的性能和C/C++的性能不相上下,由于Rust的「所有权」机制,Rust不需要GC,同时也能避免如C/C++之类需要手动管理内存的语言忘记释放内存导致的内存泄露的问题;

  • 安全性强(secure):Rust设计了一个所有权系统,其中所有值都有一个唯一的所有者,并且值的作用域与所有者的作用域相同。值可以通过不可变引用(&T)、可变引用(&mut T)或者通过值本身(T)传递。任何时候,一个变量都可以有多个不可变引用或一个可变引用,这实际上是一个显式的读写锁。Rust编译器在编译时强制执行这些规则,并检查所有引用是否有效。能够有效避免C/C++等语言中的悬垂指针等问题;

  • FFI编译友好(multiplatform):FFI是可以用一种编程语言写的程序能调用另一种编程语言写的代码的机制,使用Rust可以方便地提供接口给其他语言调用;

Rust语言的一些特性,也增强了Tauri框架的可靠性和框架价值。此外,hello word打包后果然只有10m,而且开发还是能用html+css技术,效率非常高。

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 也是比较少的,需要开发人员自己来写。

如果大家还有实用的、性价比高的跨平台桌面应用开发框架,欢迎在评论区留言、交流。

盘点 | 跨平台桌面应用开发的5大主流框架相关推荐

  1. vue 拖动 datatransfer 问题_electron-vue跨平台桌面应用开发实战教程(四)——窗口样式amp;打开新窗口...

    > 本文我们讲解下怎么修改窗口样式,系统默认的窗口非常普通,通常与设计不符,所以我们要自定义,接下来我们讲解下怎么去掉原有样式,怎么实现实现窗口的最小化,最大化和关闭按钮.还有怎么打开一个新页 ...

  2. 跨平台桌面应用开发工具Electron v11.0.4

    介绍: Electron是GitHub发布的跨平台桌面应用开发工具,支持Web技术开发桌面应用,其本身是基于C++开发的,GUI核心来自于Chrome,而JavaScript引擎使用v8. v11.0 ...

  3. electron-vue跨平台桌面应用开发实战教程(三)——动态修改窗口大小

    前边两篇文字简单介绍了一下怎么搭建electron-vue项目,主进程的基本配置,主进程和渲染进程之间的通讯.本文我们主要来讲解下如何动态的修改窗口大小. 通常很多桌面应用,初次打开都需要登录,登录窗 ...

  4. vue+electron 跨平台桌面应用开发实战教程

    一.创建项目 1.1 安装vue-cli 先查看是否已经安装了vue-cli,vue-cli的版本是什么? 查看版本命令:vue --version 如果版本叫老,可以直接卸载,再安装最新版本 卸载命 ...

  5. QT跨平台桌面软件开发技术汇总

    QT国产化和跨平台一直推进,从去年到今年已经经历了3个QT小项目,本人也从visual studio IDE   切换到 Visual Studio  +  QT  IDE的跨平台大军之中,独立承担项 ...

  6. vue 调用c++_electron-vue跨平台桌面应用开发实战教程(七)——ffi调用C++(macOS平台)...

    electron功能很强大,但是有一些跟操作系统底层交互的功能,electron无法实现,这个时候我们就可以调用原生来配合完成对应功能,本文主要讲解在macOS平台下,调用C++的dylib文件 在开 ...

  7. java开发的主流_盘点2019年Java开发中7项主流、热门的IT技术!

    作为历史最为悠久的编程语言,Java历经数十年依然盘踞在编程榜前三的位置,与它强大的功能和广泛的运用分不开.Java技术的更新迭代是开发者应该关注的问题,下面千小编就为大家盘点2019年互联网企业在J ...

  8. 邮箱开发(二) - 各大主流邮箱服务器信息和端口号

    网易163免费邮箱相关服务器信息: 服务器名称 服务器地址 SSL协议端口号 非SSL协议端口号 IMAP imap.163.com 993 143 SMTP smtp.163.com 465/994 ...

  9. 桌面应用开发有哪些主流框架?

    受益于开源技术的发展,以及响应快速开发的实际业务需求,跨平台开发不仅限于移动端跨平台,桌面端虽然在市场应用方面场景不像移动端那么丰富,但也有市场的需求. 相对于个人开发者而言,跨平台框架的使用,主要为 ...

最新文章

  1. 2022-2028年中国电动汽车充换电站市场深度调研及投资前景预测报告(全卷)
  2. h264中profile和level的含义
  3. HDU - 5637 Transform (思维、bfs预处理)
  4. pandas 笔记:multi-index
  5. UIView 的基础
  6. day10_控制文件
  7. BugkuCTF-MISC题MuMuMisc的简单题
  8. Redis数据结构之有序集合
  9. 【BZOJ4008】亚瑟王,概率DP
  10. 社区团购还是两看,从消极这个角度
  11. java 定义接口school_Java接口介绍
  12. SFB 项目经验-15-配置会议邀请中企业信息
  13. 【CF Contest-1251 E2】Voting (Hard Version)【贪心】
  14. Ubuntun 18.04 NVIDIA显卡驱动安装
  15. 安装运行太极框架Android搞机操作root
  16. Opengl三视图的坐标变换
  17. Nginx中root与alias区别
  18. 抖音小程序实践二:常用权限申请
  19. 前端开发如何配置一个新电脑 VScode
  20. 夜间车尾灯检测的方法

热门文章

  1. ISD1700系列语音芯片使用注意事项
  2. Linux 彩蛋,你玩过几个?
  3. 炉石服务器在维护吗,炉石传说:深夜服务器疑“再次崩溃”!这次还会有“补偿”吗?...
  4. yunfile php,yunfile解析出真实地址,却不能下载,访问会出错...
  5. Java项目:酒吧后台管理系统(java+SSM+JSP+HTML+mysql)
  6. 基于云计算智慧校园综合解决方案
  7. 微信小程序论文管理系统+后台管理系统
  8. 刷脸时代真的来了?R5人脸识别智能锁告诉你
  9. 在Jupyter notebook中加入虚拟环境kernal
  10. Android处理屏幕旋转时的解决方案