受益于開源技術(shù)的發(fā)展,以及響應(yīng)快速開發(fā)的實(shí)際業(yè)務(wù)需求,跨平臺(tái)開發(fā)不僅限于移動(dòng)端跨平臺(tái),桌面端雖然在市場(chǎng)應(yīng)用方面場(chǎng)景不像移動(dòng)端那么豐富,但也有市場(chǎng)的需求。
相對(duì)于個(gè)人開發(fā)者而言,跨平臺(tái)框架的使用,主要為了滿足以下三個(gè)主要能力:
生產(chǎn)力提升:框架能夠幫助開發(fā)者實(shí)現(xiàn)快速開發(fā),這是降本增效的根本。如果不能實(shí)現(xiàn)「快速」,那也就比自己從零開始寫代碼快不了太多了。
框架打包后的體積輕量:開發(fā)者大部分是普通用戶,不會(huì)安裝基礎(chǔ)環(huán)境(不會(huì)運(yùn)維,不會(huì)運(yùn)維,不會(huì)運(yùn)維)。
跨平臺(tái):許多開發(fā)者日常開發(fā)還是以Mac做為主力開發(fā)機(jī),所以強(qiáng)烈需要跨平臺(tái)(跨移動(dòng)平臺(tái),跨移動(dòng)及桌面平臺(tái))。
今天,我們就在本篇文章中盤點(diǎn)下,跨平臺(tái)桌面應(yīng)用開發(fā)的5大主流框架:Electron、wxPython、FinClip、Tauri、Flutter。
Electron
相信這個(gè)框架大家都不陌生。
首先,Electron 本身是基于?Node.js?的,這樣就可以利用 Node.js 的現(xiàn)成資源。
其次,Electron 是跨平臺(tái)的,換句話說,它可以同時(shí)開發(fā) Web 應(yīng)用和桌面應(yīng)用,一些常規(guī)的資源,如:UI,代碼(JS)等資源都可以共享,為開發(fā)者大大減少了工作量,甚至企業(yè)也無需重復(fù)投入人力來開發(fā)系統(tǒng)。
再有,Electron 不僅支持 Web API,完成與 Web 應(yīng)用相同的工作,還允許調(diào)用很多操作系統(tǒng)底層 API 來與硬件設(shè)備交互,甚至可以用 C++、Go 來編寫本地模塊,這樣一來就可以完成很多 Web 應(yīng)用無法做到的事情。
小結(jié):使用語言html,js,css等,功能強(qiáng)大,界面絢麗,跨平臺(tái),開發(fā)成本低,可以說是集優(yōu)點(diǎn)于一身。除了,性能不敢恭維~~
wxPython
wxPython和pyqt 兩者類似,都是用python語言開發(fā)。前者是對(duì)wxWidgets的封裝,后者是對(duì)大名鼎鼎的qt的封裝。wxWidgets 是基于操作系統(tǒng)的 API 來做桌面應(yīng)用的,也就是說,在 Windows 下開發(fā)一個(gè)桌面應(yīng)用時(shí),看起來就像是傳統(tǒng)的 Windows 桌面軟件的風(fēng)格,在 Mac 下則是 Mac 的風(fēng)格,而前面三個(gè)都有自己的自繪引擎。
也就是說,使用wxWidgets 在三個(gè)平臺(tái)上都是按照三個(gè)平臺(tái)自己的 API 來繪制這個(gè)按鈕的。wxWidgets 提供了非常多的操作系統(tǒng)的 API,并且可以做到靜態(tài)鏈接,但小問題比較多。
Tauri
“Build an optimized, secure, and frontend-independent application for multi-platform deployment.”
從Tauri官網(wǎng)的宣傳語可以看出Tauri主打的幾個(gè)賣點(diǎn):
- optimized:性能高、體積小
- secure:安全性強(qiáng)
- frontend-independent:前端獨(dú)立
- multiplatform:跨平臺(tái)
Tauri框架是由Rust語言實(shí)現(xiàn)的,同時(shí)Tauri應(yīng)用的后端也是由Rust來編寫的。Rust是由Mozilla主導(dǎo)開發(fā)的通用、編譯型的系統(tǒng)編程語言。Rust語言自身有如下的一些特性:
性能高(optimized):Rust的性能和C/C++的性能不相上下,由于Rust的「所有權(quán)」機(jī)制,Rust不需要GC,同時(shí)也能避免如C/C++之類需要手動(dòng)管理內(nèi)存的語言忘記釋放內(nèi)存導(dǎo)致的內(nèi)存泄露的問題;
安全性強(qiáng)(secure):Rust設(shè)計(jì)了一個(gè)所有權(quán)系統(tǒng),其中所有值都有一個(gè)唯一的所有者,并且值的作用域與所有者的作用域相同。值可以通過不可變引用(&T)、可變引用(&mut T)或者通過值本身(T)傳遞。任何時(shí)候,一個(gè)變量都可以有多個(gè)不可變引用或一個(gè)可變引用,這實(shí)際上是一個(gè)顯式的讀寫鎖。Rust編譯器在編譯時(shí)強(qiáng)制執(zhí)行這些規(guī)則,并檢查所有引用是否有效。能夠有效避免C/C++等語言中的懸垂指針等問題;
FFI編譯友好(multiplatform):FFI是可以用一種編程語言寫的程序能調(diào)用另一種編程語言寫的代碼的機(jī)制,使用Rust可以方便地提供接口給其他語言調(diào)用;
Rust語言的一些特性,也增強(qiáng)了Tauri框架的可靠性和框架價(jià)值。此外,hello word打包后果然只有10m,而且開發(fā)還是能用html+css技術(shù),效率非常高。
FinClip
FinClip一套小程序容器技術(shù),也可以說是小程序沙箱 Runtime/Engine,提供 Runtime 基于瀏覽器內(nèi)核,采用動(dòng)態(tài)語言(JS)和聲明式 View 構(gòu)建(XML),兼容互聯(lián)網(wǎng)主流小程序技術(shù),可采用 Vue、react 基礎(chǔ)上的 DSL 框架。
與Electron、Flutter、Tauri等跨端平臺(tái)不同的是,F(xiàn)inClip嚴(yán)格意義上講是一項(xiàng)容器技術(shù)。與跨端平臺(tái)不僅不沖突,還可以完美融合。移動(dòng)端跨平臺(tái)開發(fā)框架中,不管是通過Flutter、Taro、 kbone等開發(fā)出來的小程序均可在FinClip當(dāng)中運(yùn)行。
這種小程序容器技術(shù),將視圖層與邏輯層分離也帶來了許多好處:
1、方便多個(gè)小程序頁(yè)面之間的數(shù)據(jù)共享和交互。在小程序的生命周期中具有相同的上下文可以為具備原生應(yīng)用程序開發(fā)背景的開發(fā)人員提供熟悉的編碼體驗(yàn);
2、Service 和 View 的分離和并行實(shí)現(xiàn)可以防止 JS 執(zhí)行影響或減慢頁(yè)面渲染,這有助于提高渲染性能;
3、因?yàn)?JS 在 Service 層執(zhí)行,所以 JS 里面操作的 DOM 將不會(huì)對(duì) View 層產(chǎn)生影響,所以小程序不能操作 DOM 結(jié)構(gòu)的,這也使得小程序的性能比傳統(tǒng)的 H5 更好。
之所以在平臺(tái)桌面應(yīng)用開發(fā)框架中介紹,就是除了FinClip移動(dòng)端跨端開發(fā)的能力,它還支持在手機(jī)以外,如Windows、Mac、Linux、統(tǒng)信、麒麟等平臺(tái)下運(yùn)行小程序,這意味著,移動(dòng)端、PC 端、IOT等智能終端都能運(yùn)行小程序了。同時(shí),它還提供一個(gè)完善的后臺(tái)管理系統(tǒng),統(tǒng)一管理小程序的上架和下架、監(jiān)測(cè)小程序的使用詳情,換句話說,借助該工具,可以借助微信小程序生態(tài)的成熟度,快速引入業(yè)務(wù)生態(tài)來壯大、豐富自己的業(yè)務(wù)場(chǎng)景,實(shí)現(xiàn)技術(shù)和業(yè)務(wù)雙降本增效。
Flutter
Flutter是一個(gè)由Google開發(fā)的跨平臺(tái)應(yīng)用開發(fā)框架,最初只用于移動(dòng)端為Android、iOS開發(fā)應(yīng)用。2022年5月,Google 在 Google I/O 2022 發(fā)布了?Flutter 3.0版本,宣布對(duì) Windows、macOS、Linux 桌面操作系統(tǒng)提供支持。
Flutter Desktop 是使用?Dart?編寫界面邏輯的,Dart語言容易學(xué)習(xí)和上手、開發(fā)成本低。此外,F(xiàn)lutter的組件比較豐富,并且支持 Win 10 操作系統(tǒng)(之前的操作系統(tǒng)就不太支持了)。但因?yàn)樽烂娑瞬艅倓偘l(fā)布穩(wěn)定版支持,生態(tài)和穩(wěn)定性都有待考量,還有API 也是比較少的,需要開發(fā)人員自己來寫。文章來源:http://www.zghlxwxcb.cn/news/detail-446583.html
如果大家還有實(shí)用的、性價(jià)比高的跨平臺(tái)桌面應(yīng)用開發(fā)框架,歡迎在評(píng)論區(qū)留言、交流。文章來源地址http://www.zghlxwxcb.cn/news/detail-446583.html
到了這里,關(guān)于桌面應(yīng)用開發(fā)有哪些主流框架?的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!