国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

WEB跨平臺桌面程序構(gòu)建工具對比(Electron、Tauri、Wails)

這篇具有很好參考價值的文章主要介紹了WEB跨平臺桌面程序構(gòu)建工具對比(Electron、Tauri、Wails)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

楔子

WEB 跨平臺 桌面應(yīng)用程序 顧名思義就是用 JavaScript、HTML、CSS 等前端技術(shù)構(gòu)建跨平臺的桌面應(yīng)用,WEB 負責 GUI 渲染并與后端(如 Node.js、Python、Rust 等)交互,從而突破自身無法操作 OS 層級資源的限制。其實現(xiàn)在如火如荼的小程序原理也類似,只是把后端換成宿主 APP (如微信、支付寶、飛書、釘釘?shù)龋?/p>

我大約在 2013 年開始基于 WEB 做一些簡單的桌面應(yīng)用,因為對 WEB 熟又有現(xiàn)成的資源,通過包裝即可快速生成桌面應(yīng)用(exe 可執(zhí)行文件)分享出去。

最開始用的是 C# + webview 控件做了一款信息管理系統(tǒng)(WinForm 做登錄界面,用戶授權(quán)成功后創(chuàng)建 WebView 對象加載遠程網(wǎng)址),兼容性跟效果在當時都非常理想。后來也用過 Android 下的 WebView,大同小異。

WebView 下 JS 與后端原生代碼的交互基于 JSBridge,對于該項技術(shù)的詳解,推薦看下:

工具總覽

此類構(gòu)建工具有很多,這里比較的是 Electron、Tauri、Wails 2 三款

工具 原生語言 最新版本 簡介
Electron Node.js 21.0.1 使用 JavaScript、HTML 和 CSS 構(gòu)建桌面應(yīng)用程序的框架(嵌入 Chromium 和 Node.js 到 二進制文件)
Tauri Rust 1.2 Tauri 是一款應(yīng)用構(gòu)建工具包,讓您能夠為使用 Web 技術(shù)構(gòu)建跨平臺的快速、安全、前端隔離應(yīng)用
wails Go 2.1.0 使用 Go + HTML + CSS + JS 構(gòu)建漂亮的跨平臺桌面應(yīng)用

Electron算是業(yè)內(nèi)老大哥,最開始的名字叫做 atom-shell(是 GitHub 隨 Atom 一起開源的跨操作系統(tǒng)開發(fā)桌面應(yīng)用的框架),最早的版本 0.3.1 發(fā)布于 2013 年 8 月, 在 2015 年 4 月分布的 0.24.0 版本更名為 electron(我也是這時開始接觸),到最新發(fā)布的 21.2.2 版本 ,版本迭代真的是飛一般??。

Tauri是賽道的后起之秀,基于專注安全跟性能的 Rust + 操作系統(tǒng)原生 web 渲染引擎(windows 下為 WebView2),這一點跟 electron 不同,所以前者打包后體積非常小。Tauri 在 2019 年發(fā)布,勢頭迅猛(目前在 github 上已經(jīng)有 53.8k 的 star)。

wails在 2022 年 9 月發(fā)布 2.0.0 正式版,渲染模式跟 tauri 一樣。

集成方式

構(gòu)建工具請參照官網(wǎng)進行預先安裝(如果資源下載緩慢可以考慮更換國內(nèi)源),本文在 windows 平臺下進行

此處用 vue3-naive-starter(VUE3 + Naive UI + Tailwind CSS + WebPack5 的快速開發(fā)框架) 作為 UI 進行集成演示。

設(shè)備配置如下

Name Value
處理器 Intel? Core? i5-11300H @ 3.10GHz
RAM 16.0 GB
操作系統(tǒng) Windows 11 家庭中文版(64位)
Node.js v16.13.0

Electron

使用 vue-cli-plugin-electron-builder 插件,由于官方文檔還是 2.1.1 版本的(不支持 14.x 版本以上的 electron),所以這里手動集成

  1. 安裝依賴:npm i -D electron vue-cli-plugin-electron-builder@3.0.0-alpha.4
  2. 新建src-electron目錄并新建index.js文件
import { app, protocol, BrowserWindow } from 'electron'
import { createProtocol } from 'vue-cli-plugin-electron-builder/lib'

protocol.registerSchemesAsPrivileged([
    { scheme: 'app', privileges: { secure: true, standard: true } }
])

async function createWindow() {
    let devTool = !process.env.IS_TEST

    const win = new BrowserWindow({
        width: 1280,
        height: 780 + (devTool ? 100 : 0),
        webPreferences: {
            nodeIntegration: process.env.ELECTRON_NODE_INTEGRATION,
            contextIsolation: !process.env.ELECTRON_NODE_INTEGRATION
        }
    })

    if (process.env.WEBPACK_DEV_SERVER_URL) {
        await win.loadURL(process.env.WEBPACK_DEV_SERVER_URL)
        if (devTool) win.webContents.openDevTools()
    } else {
        createProtocol('app')
        win.loadURL('app://./index.html')
    }
}

app.on('window-all-closed', () => {if (process.platform !== 'darwin') app.quit()})
app.on('activate', () => { if (BrowserWindow.getAllWindows().length === 0) createWindow()})
app.on('ready', async ()=> createWindow())
  1. 配置vue.config.js下 electron 相關(guān)的參數(shù)
pluginOptions: {
    electronBuilder: {
        outputDir: "dist",
        nodeIntegration: true,
        mainProcessFile: "./src-electron/index.js",
        builderOptions: {
            appId: "vue3-naive-starter",
            /**
             * 打包后文件名
             * 默認為:${productName}-${version}.${ext}
             * 詳見 https://www.electron.build/file-patterns#file-macros
             */
            artifactName: "${productName}.${ext}",
            //win相關(guān)配置
            win: {
                target: [
                    {
                        //不進行安裝文件制作,僅壓縮. 7z 比 zip 具有更高的壓縮比
                        target: "7z",
                        /*
                        架構(gòu)可選值:"arm64" | "armv7l" | "ia32" | "universal" | "x64"
                        構(gòu)建時,會下載對應(yīng)的 electron 發(fā)行版,保存地址在 C:\Users\{用戶名}\AppData\Local\electron\Cache
                        如果下載慢,可以手動從 https://registry.npmmirror.com/binary.html?path=electron/ 下載放置在指定位置
                        */
                        arch: ["ia32"]
                    }
                ]
            }
        }
    }
}
  1. 新增腳本入口
// package.json 下 scripts 節(jié)點
"electron:build": "vue-cli-service electron:build",
"electron:serve": "vue-cli-service electron:serve",
  1. 啟動npm run electron:serve,效果如下圖
    WEB跨平臺桌面程序構(gòu)建工具對比(Electron、Tauri、Wails)
    Tauri

使用插件 vue-cli-plugin-tauri

  • 安裝 cargo(建議配置環(huán)境變量 CARGO_HOME)、Rust 環(huán)境
  • 安裝插件:vue add tauri (按照提示選擇即可)

完成后,可以看到新建了src-tauri目錄
WEB跨平臺桌面程序構(gòu)建工具對比(Electron、Tauri、Wails)
這里需要注意下,src-tauri\tauri.conf.json 文件下有兩個配置beforeBuildCommandbeforeDevCommand,建議都設(shè)置為空

  • 啟動 npm run tauri:serve

注意:

  1. 第一次會下載各種依賴,時間較久,請耐心等待
  2. 僅支持 windows 7 以上的操作系統(tǒng)。
  3. 如果本機沒有 webview2 環(huán)境(通常新版本的 windows 10/11 會自帶,或者自行安裝過新版本的 Edge 瀏覽器也會有),請參考下文 附錄/安裝 WebView2 章節(jié)

wails

  • 安裝 go 環(huán)境(配置國內(nèi)源 go env -w GOPROXY=https://goproxy.cn,direct
  • 安裝 wails go install github.com/wailsapp/wails/v2/cmd/wails@latest
  • 檢驗安裝結(jié)果wails doctor(顯示 Wails CLI v2.1.0 字樣)
  • 創(chuàng)建項目wails init -n vue3-naive-starter-wails -t vue
    WEB跨平臺桌面程序構(gòu)建工具對比(Electron、Tauri、Wails)
  • 將代碼復制到frontend目錄下
  • 執(zhí)行wails dev即可啟動

打包

前端資源打包后原始大小 4.3M(ZIP 壓縮后 1.3M)

electron

  • 執(zhí)行命令npm run electron:build
  • 等待完成(第一次打包會下載響應(yīng)的依賴包,請耐心等待, 當看到DONE Build complete! Done in 124.57s. 字樣表示完成)
  • 查看dist目錄下的結(jié)果,壓縮包大小為57M

這里有個題外話,打包后查看bundled目錄下有package.json文件,就是說在運行時可以讀取到該文件。

tauri

  • 【可選】 修改src-tauri\tauri.conf.jsontauri->bundle->active值為 false (即不生成安裝包,沒必要)
  • 執(zhí)行命令npm run tauri:build
  • 結(jié)果文件保存在src-tauri/target下,exe 文件大小為4.8M
# 請事先修改 identifier 的值,否則會看到如下的報錯信息
Error You must change the bundle identifier in `tauri.conf.json > tauri > bundle > identifier`. 
The default value `com.tauri.dev` is not allowed as it must be unique across applications.

wails

  • 執(zhí)行wails build
  • 查看build/bin下的 exe 文件(大小為 12.5M)

運行時

讓我們分別運行三個exe,可以看到打開速度都非常迅速,肉眼看不出差別。
WEB跨平臺桌面程序構(gòu)建工具對比(Electron、Tauri、Wails)
此時資源占用情況如下
WEB跨平臺桌面程序構(gòu)建工具對比(Electron、Tauri、Wails)
切換到圖標匯總頁面,該頁面下循環(huán)渲染 1600+ 個圖標,再看看資源占用情況(可以看到內(nèi)存占用均翻倍了)
WEB跨平臺桌面程序構(gòu)建工具對比(Electron、Tauri、Wails)
目前來看,electron 占用的資源相對少些(子任務(wù)數(shù)也少),而tauriwails由于機制幾乎一樣資源占用也相差無幾。

結(jié)語

本次淺顯對比了簡單 web 應(yīng)用的打包,沒有涉及到后端的原生計算、交互等,僅供參考。

如何選擇

三款工具表現(xiàn)都不錯,大家根據(jù)自身情況(如技術(shù)棧、團隊人員、終端平臺等)進行選擇即可。

我個人(對 Rust、Go 都不熟悉 ??)的話會以項目特點為主進行選擇:

項目特點 首選 備選 說明
純粹給原有 WEB 項目加一個原生應(yīng)用的外殼 tauri wails 操作簡單、沒有額外的學習成本、社區(qū)資源也算完備
功能復雜,需要與 OS 交互 electron tauri electron 社區(qū)龐大、文檔/接口完備,第三方庫也全

Q&A

以下內(nèi)容僅針對tauri、wails打包后運行不成功,因為electron內(nèi)嵌了Chromium在各個平臺下保持了很好的統(tǒng)一性

?? 程序閃退

打包后的 exe ,雙擊后屏幕一閃,程序自動退出

碰到這種情況,請檢查操作系統(tǒng)是否安裝有WebView2 控件。

① windows 10/11 如何查看?

右鍵 ?? 選擇應(yīng)用與功能,在應(yīng)用列表中檢索關(guān)鍵字
WEB跨平臺桌面程序構(gòu)建工具對比(Electron、Tauri、Wails)

② windows 7 如何查看?

打開控制面板,單擊程序選項,然后再單擊程序和功能選項,就可以打開 win7 的應(yīng)用程序管理器窗口。通過該窗口可以查看和管理系統(tǒng)中已經(jīng)安裝的程序。

?? 安裝 WebView2

  1. 前往下載 WebView2 運行時安裝程序

  2. 根據(jù)操作系統(tǒng)選擇合適的版本
    WEB跨平臺桌面程序構(gòu)建工具對比(Electron、Tauri、Wails)

  3. 安裝下載的文件(按照默認選項即可)

  4. 完成后再次運行本程序,Enjoy ??

?? DLL 缺失

若出現(xiàn)下圖所示的錯誤信息
WEB跨平臺桌面程序構(gòu)建工具對比(Electron、Tauri、Wails)

請將目錄下的vcruntime140_1.dll復制到C:\Windows\System32下即可。

該 DLL 文件可在以下網(wǎng)站下載:文章來源地址http://www.zghlxwxcb.cn/news/detail-449403.html

  • DLL?files.com
  • Visual C++ Redistributable for Visual Studio 2015
  • Microsoft Visual C++ Redistributable

到了這里,關(guān)于WEB跨平臺桌面程序構(gòu)建工具對比(Electron、Tauri、Wails)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 跨平臺的桌面應(yīng)用程序開發(fā)框架Electron | 開源日報 0906

    跨平臺的桌面應(yīng)用程序開發(fā)框架Electron | 開源日報 0906

    Stars: 109.3k License: MIT Electron 是一個基于 Node.js 和 Chromium 的開源框架,允許使用 JavaScript、HTML 和 CSS 編寫跨平臺的桌面應(yīng)用程序。它被 Atom 編輯器等眾多應(yīng)用程序所采用。該項目具有以下核心優(yōu)勢: 跨平臺:Electron 提供了 macOS、Windows 和 Linux 三個主要操作系統(tǒng)的二進制文件。

    2024年02月09日
    瀏覽(27)
  • flutterui構(gòu)建工具,Java+性能優(yōu)化+APP開發(fā)+NDK+跨平臺技術(shù)

    flutterui構(gòu)建工具,Java+性能優(yōu)化+APP開發(fā)+NDK+跨平臺技術(shù)

    面試的時候除了算法題,其他被懟成弟弟,沒想到面試官給過了,一天面完三面并且一周之后收到了oc,覺得自己非常的幸運,終于得到了大廠的認可(雖然是顆白菜)。這里建議網(wǎng)友如果有自己亮點的話,還是可以勇敢大膽的嘗試一下大廠,畢竟除了實力之外,運氣與機遇也占

    2024年03月15日
    瀏覽(24)
  • .NET / C# 開發(fā) Ubuntu Desktop 跨平臺圖形界面桌面程序 Avalonia - Visual Studio 安裝/創(chuàng)建/運行指南 (一)

    .NET / C# 開發(fā) Ubuntu Desktop 跨平臺圖形界面桌面程序 Avalonia - Visual Studio 安裝/創(chuàng)建/運行指南 (一)

    Avalonia 是一個開源的跨平臺應(yīng)用程序框架,用于構(gòu)建桌面應(yīng)用程序。它使用 C# 和 XAML 進行開發(fā),可以在 Windows、macOS、iOS、Android 及 Linux 等多個平臺上運行。Avalonia 項目地址:https://github.com/AvaloniaUI/Avalonia 本文快速介紹如何入門使用 Avalonia 編寫和執(zhí)行 Ubuntu Desktop 圖形界面桌面

    2024年02月01日
    瀏覽(104)
  • 跨平臺桌面應(yīng)用小記

    跨平臺桌面應(yīng)用小記

    不管是出于產(chǎn)品定位、多平臺統(tǒng)一亦或是國產(chǎn)化要求??缙脚_都是桌面開發(fā)都是必須要面對的一個課題,下面簡單列舉下主流或一些新興的跨平臺方案,以備后續(xù)使用。 1、Qt Qt是一個跨平臺的C++圖形用戶界面庫,可以部署在Windows、Mac、Linux、嵌入式系統(tǒng)(QNX等)、Android等平

    2024年02月05日
    瀏覽(92)
  • 我想開發(fā)一款跨平臺桌面軟件,請告訴我qt、electron、tauri、pyqt、flutter分別適合開發(fā)哪些跨平臺桌面

    我想開發(fā)一款跨平臺桌面軟件,請告訴我qt、electron、tauri、pyqt、flutter分別適合開發(fā)哪些跨平臺桌面

    不同的跨平臺桌面開發(fā)工具適用于不同的應(yīng)用場景和開發(fā)者需求。以下是關(guān)于 Qt、Electron、Tauri、PyQt、Flutter 的簡要說明,以幫助你更好地選擇適合你項目的工具: Qt: 適用場景: Qt 是一個強大的 C++ 框架,適用于開發(fā)需要高性能和原生外觀的桌面應(yīng)用。它具有廣泛的平臺支持

    2024年02月22日
    瀏覽(94)
  • 跨平臺桌面端框架wails 修改默認圖標

    跨平臺桌面端框架wails 修改默認圖標

    博主開發(fā)了一個瀏覽器aweb123.com 執(zhí)行 wails build就會自動生成新的圖標

    2024年02月07日
    瀏覽(166)
  • Golang WebView:打造跨平臺的桌面應(yīng)用

    隨著互聯(lián)網(wǎng)的發(fā)展和智能設(shè)備的普及,Web應(yīng)用成為了主流的應(yīng)用開發(fā)方式之一。然而,有些場景下仍然需要使用桌面應(yīng)用來滿足特定的需求。為了結(jié)合Web技術(shù)和桌面應(yīng)用的優(yōu)勢,Golang提供了一種名為\\\"WebView\\\"的庫,它可以幫助開發(fā)人員快速構(gòu)建跨平臺的桌面應(yīng)用。本文將介紹

    2024年02月22日
    瀏覽(25)
  • 盤點 | 跨平臺桌面應(yīng)用開發(fā)的5大主流框架

    盤點 | 跨平臺桌面應(yīng)用開發(fā)的5大主流框架

    受益于開源技術(shù)的發(fā)展,以及響應(yīng)快速開發(fā)的實際業(yè)務(wù)需求,跨平臺開發(fā)不僅限于移動端跨平臺,桌面端雖然在市場應(yīng)用方面場景不像移動端那么豐富,但也有市場的需求。 相對于個人開發(fā)者而言,跨平臺框架的使用,主要為了滿足以下三個主要能力: 生產(chǎn)力提升:框架能

    2024年02月07日
    瀏覽(21)
  • ChatGPT擴展系列之跨平臺桌面客戶端ChatBox

    ChatGPT擴展系列之跨平臺桌面客戶端ChatBox

    今天介紹一下好玩的東西——ChatBox 直接使用 ChatGPT API (OpenAI API) 是比較困難的,需要了解編程與接口調(diào)用,而且用起來不夠方便。ChatBox 可以幫助你處理所有的底層調(diào)用。 ChatBox 還幫你在本地保存了所有的聊天記錄和 prompt,防止在線服務(wù)的數(shù)據(jù)丟失。 ChatBox 還可以幫助你設(shè)計

    2023年04月20日
    瀏覽(114)
  • Flutter 實戰(zhàn):構(gòu)建跨平臺應(yīng)用

    Flutter 實戰(zhàn):構(gòu)建跨平臺應(yīng)用

    Flutter是由Google開發(fā)的一款開源移動應(yīng)用開發(fā)框架,它可以幫助開發(fā)者在iOS和Android平臺上快速、高效地開發(fā)應(yīng)用。Flutter使用Dart語言作為開發(fā)語言,具有跨平臺兼容性高、開發(fā)效率快、性能優(yōu)異等特點。本文將通過實戰(zhàn)案例,介紹如何使用Flutter構(gòu)建跨平臺應(yīng)用。 在開始Flutte

    2024年02月05日
    瀏覽(1262)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包