受益于開源技術的發展,以及響應快速開發的實際業務需求,跨平臺開發不僅限于移動端跨平臺,桌面端雖然在市場應用方面場景不像移動端那么豐富,但也有市場的需求。
相對于個人開發者而言,跨平臺框架的使用,主要為了滿足以下三個主要能力:
- 生產力提升:框架能夠幫助開發者實現快速開發,這是降本增效的根本。如果不能實現「快速」,那也就比自己從零開始寫代碼快不了太多了。
- 框架打包后的體積輕量:開發者大部分是普通用戶,不會安裝基礎環境(不會運維,不會運維,不會運維)。
- 跨平臺:許多開發者日常開發還是以mac做為主力開發機,所以強烈需要跨平臺(跨移動平臺,跨移動及桌面平臺)。
今天,我們就在本篇文章中盤點下,跨平臺桌面應用開發的5大主流框架:Electron、wxPython/ target=_blank class=infotextkey>Python、FinClip、Tauri、Flutter。

Electron
相信這個框架大家都不陌生。
首先,Electron 本身是基于 Node.js 的,這樣就可以利用 Node.js 的現成資源。
其次,Electron 是跨平臺的,換句話說,它可以同時開發 Web 應用和桌面應用,一些常規的資源,如:UI,代碼(JS)等資源都可以共享,為開發者大大減少了工作量,甚至企業也無需重復投入人力來開發系統。
再有,Electron 不僅支持 Web API,完成與 Web 應用相同的工作,還允許調用很多操作系統底層 API 來與硬件設備交互,甚至可以用 C++、Go 來編寫本地模塊,這樣一來就可以完成很多 Web 應用無法做到的事情。
小結:使用語言html,js,css等,功能強大,界面絢麗,跨平臺,開發成本低,可以說是集優點于一身。除了,性能不敢恭維~~

Electron
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技術,效率非常高。

Tauri
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 也是比較少的,需要開發人員自己來寫。
作者:FinBird
鏈接:https://www.jianshu.com/p/bb7e44e07887
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。






