桌面端跨端框架调研

Electron

官网:www.electronjs.org/

GitHub Stars: 115.7K

UI层面使用WebView,支持Vue、React等主流框架。

使用NodeJS作为中间层和系统通信,也可以使用C++/Rust等底层语言。

谁在维护框架?

GitHub、微软、开源贡献者在维护

框架的缺陷是什么?

  • 一套代码支持Windows、MacOs、Linux
  • WebView和Node.js为核心,其他语言作为扩展,降低开发门槛
  • 有庞大的npm生态社区

框架的劣势是什么?

  • 打包后体积大、内存占用高
  • 启动速度慢,需要加载完整Chromium引擎
  • 大型项目需要专门去做性能优化

Tauri 2.0

UI层面使用WebView,支持主流前端框架Vue、React等。

Tauri使用Rust与系统通信。

官网:v2.tauri.app/

GitHub Stars: 90.1K

Discord 社区:总人数20K,活跃3K

项目发起时间:2019年初、2022年6月发布1.0版本

谁在维护框架?

基于开发者社区,这个是GitHub贡献者的数据

框架优势是什么?

  • 一套代码支持Windows、MacOs、Linux
  • 基于WebView+Rust让整体体积相对其他框架小得多
  • 性能和内存安全更好,因为使用了Rust
  • 对于擅长Web的团队开发效率更高,但是Rust也是团队的局限
  • 社区发展得很快,有很多贡献者

框架的缺陷是什么?

  • Rust学习较为陡峭
  • 生态并不是那么完善,某些功能要自己使用Rust写

Flutter Desktop

使用Dart语言、UI基于Flutter自带的组件库。

官网:flutter.dev/

GitHub Stars: 169K

谁在维护框架?

Google的Flutter团队、GitHub开源贡献者在维护

框架的优势是什么?

  • 一套代码可兼容桌面端+移动端
  • 高性能的渲染能力,拥有自带的组件库
  • 热重载可以实时查看代码变化

框架的缺陷是什么?

  • 桌面端资源占用率较高、打包体积较大 10MB+
  • 社区资源对桌面端的支持有限,但是能满足大部分需求
  • Dart语言是强类型语言,有一定学习成本
  • 平台排错、调试不太方便

React Native

用React实现多端软件的开发

官网:reactnative.dev/

GitHub Stars: 121K

谁在维护框架?

Meta(Facebook)团队、微软在维护、以及社区贡献者。

框架的优势是什么?

  • Web工程师上手很快
  • 一套代码支持Windows、MacOS、Android、IOS
  • npm大部分非UI相关包可直接使用

框架的缺陷是什么?

  • Linux支持薄弱
  • 跨平台调试工具不够成熟
  • 针对桌面优化的UI组件较少
  • ReactNative对桌面端的专注度不够,比较偏向移动端

总结

追求高性能的团队Flutter或Tauri提供最好的长期回报。

追求稳定的团队可以尝试使用Electron。

React Native的优势则是和React开发相差不大,熟悉React开发的可以快速上手,但性能一般。

我们团队选择Tauri,原因是Flutter调试不太方便,可以快速尝试一下Tauri。

相关推荐
北海-cherish3 小时前
vue中的 watchEffect、watchAsyncEffect、watchPostEffect的区别
前端·javascript·vue.js
AALoveTouch3 小时前
网球馆自动预约系统的反调试
javascript·网络
2501_915909064 小时前
HTML5 与 HTTPS,页面能力、必要性、常见问题与实战排查
前端·ios·小程序·https·uni-app·iphone·html5
white-persist5 小时前
Python实例方法与Python类的构造方法全解析
开发语言·前端·python·原型模式
新中地GIS开发老师6 小时前
Cesium 军事标绘入门:用 Cesium-Plot-JS 快速实现标绘功能
前端·javascript·arcgis·cesium·gis开发·地理信息科学
Superxpang6 小时前
前端性能优化
前端·javascript·vue.js·性能优化
左手吻左脸。6 小时前
解决el-select因为弹出层层级问题,不展示下拉选
javascript·vue.js·elementui
李白的故乡6 小时前
el-tree-select名字
javascript·vue.js·ecmascript
Rysxt_6 小时前
Element Plus 入门教程:从零开始构建 Vue 3 界面
前端·javascript·vue.js
隐含6 小时前
对于el-table中自定义表头中添加el-popover会弹出两个的解决方案,分别针对固定列和非固定列来隐藏最后一个浮框。
前端·javascript·vue.js