桌面應用開發有哪些主流框架?

比亞的答案發表於2022-11-25

受益於開源技術的發展,以及響應快速開發的實際業務需求,跨平臺開發不僅限於移動端跨平臺,桌面端雖然在市場應用方面場景不像移動端那麼豐富,但也有市場的需求。
相對於個人開發者而言,跨平臺框架的使用,主要為了滿足以下三個主要能力:

生產力提升:框架能夠幫助開發者實現快速開發,這是降本增效的根本。如果不能實現「快速」,那也就比自己從零開始寫程式碼快不了太多了。

框架打包後的 體積輕量:開發者大部分是普通使用者,不會安裝基礎環境(不會運維,不會運維,不會運維)。

跨平臺:許多開發者日常開發還是以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 也是比較少的,需要開發人員自己來寫。

如果大家還有實用的、價效比高的跨平臺桌面應用開發框架,歡迎在評論區留言、交流。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70017183/viewspace-2925070/,如需轉載,請註明出處,否則將追究法律責任。

相關文章