八個(gè)將網(wǎng)頁(yè)轉(zhuǎn)為桌面應(yīng)用程序的開(kāi)源方案
在這個(gè)互聯(lián)時(shí)代,Web應(yīng)用已經(jīng)無(wú)處不在,相比桌面應(yīng)用,Web應(yīng)用有其自身的許多優(yōu)勢(shì)。但是,在某些應(yīng)用場(chǎng)景中,通過(guò)瀏覽器訪問(wèn)Web應(yīng)用程序有時(shí)會(huì)讓用戶(hù)感覺(jué)麻煩。比如,用戶(hù)總是不小心把瀏覽器關(guān)掉,或者總是需要在標(biāo)簽和應(yīng)用程序之間切換,這些都可能會(huì)破壞生產(chǎn)運(yùn)行,導(dǎo)致工作混亂。因此,我們需要將網(wǎng)頁(yè)轉(zhuǎn)換為桌面應(yīng)用程序。
這種方式可以保留Web應(yīng)用程序的優(yōu)勢(shì),同時(shí)還能夠提供更簡(jiǎn)化和直觀的用戶(hù)體驗(yàn),甚至能夠比瀏覽器端的Web更加輕易地實(shí)現(xiàn)Web應(yīng)用與底層操作系統(tǒng)API交互。將Web應(yīng)用或者網(wǎng)頁(yè)轉(zhuǎn)為桌面應(yīng)用能夠在一些場(chǎng)景中給用戶(hù)帶來(lái)便利,但也存在許多挑戰(zhàn)。
本文推薦8個(gè)免費(fèi)開(kāi)源的解決方案(其中前4個(gè)比較靠譜),使用這些方案可以將網(wǎng)頁(yè)轉(zhuǎn)換為桌面應(yīng)用程序。
1.Electron
https://github.com/electron/electron-quick-start
Electron.js是一個(gè)由GitHub開(kāi)發(fā)和維護(hù)的開(kāi)源框架。它允許使用Web技術(shù)開(kāi)發(fā)桌面應(yīng)用程序:它結(jié)合了Chromium渲染引擎和Node.js運(yùn)行時(shí),允許使用HTML、CSS和JavaScript開(kāi)發(fā)桌面應(yīng)用程序。
Electron.js有幾個(gè)優(yōu)點(diǎn)。它支持快速開(kāi)發(fā)和原型設(shè)計(jì),并擴(kuò)展了Web應(yīng)用程序的范圍,因?yàn)橄嗤拇a庫(kù)可以同時(shí)服務(wù)于Web和桌面平臺(tái)。它還可以訪問(wèn)本機(jī)OS API,因此Electron應(yīng)用程序可以像本機(jī)應(yīng)用程序一樣執(zhí)行,訪問(wèn)低級(jí)系統(tǒng)資源。開(kāi)發(fā)人員可以使用Electron為Web應(yīng)用或者網(wǎng)站創(chuàng)建桌面應(yīng)用程序。
另外,如果不需要特殊的功能,只是一個(gè)簡(jiǎn)單的Web 轉(zhuǎn)桌面應(yīng)用,那么可以使用Nativefier。Nativefier 是一個(gè)基于Electron的命令行工具,它可以為任何網(wǎng)站創(chuàng)建“桌面應(yīng)用程序”,將應(yīng)用程序包裝在適用于Windows,macOS和Linux等系統(tǒng)的操作系統(tǒng)可執(zhí)行文件中。Electron的缺點(diǎn)包括:
- 易用性差
- 打包后的應(yīng)用程序太大
- 需要開(kāi)發(fā)技術(shù)知識(shí)
2.Wails
https://github.com/wailsapp/wails
Wails是一種可以使用Go和Web技術(shù)構(gòu)建桌面應(yīng)用程序的工具。它將Go代碼和Web前端包裝成一個(gè)二進(jìn)制文件,取代了傳統(tǒng)的內(nèi)置Web服務(wù)器。簡(jiǎn)化了項(xiàng)目的創(chuàng)建、編譯和打包等過(guò)程。
專(zhuān)為Go后端和NodeJS前端技術(shù)而設(shè)計(jì),它通過(guò)預(yù)構(gòu)建模板簡(jiǎn)化了前端的創(chuàng)建,實(shí)現(xiàn)JavaScript和Go之間能夠輕松通信,包括從JavaScript調(diào)用Go方法和自動(dòng)生成Typescript定義。
Wails支持本地功能,如:對(duì)話框、菜單、暗/亮模式。它在Go和JavaScript之間建立了一個(gè)統(tǒng)一的事件系統(tǒng),確保了應(yīng)用程序的順暢交互。
使用Wails可以輕松地將任何網(wǎng)站、網(wǎng)頁(yè)轉(zhuǎn)換為桌面應(yīng)用程序,但這需要編碼技能。
3.Tauri
https://github.com/tauri-apps/tauri
Tauri是一個(gè)能夠?yàn)樗兄饕烂嫫脚_(tái)構(gòu)建微小、快速二進(jìn)制文件的框架。開(kāi)發(fā)人員可以集成任何可編譯為HTML、JS和CSS的前端框架來(lái)構(gòu)建用戶(hù)界面應(yīng)用。應(yīng)用程序的后端是一個(gè)帶有API的rust-sourced二進(jìn)制文件,前端可以與之交互。
Tauri應(yīng)用程序中的用戶(hù)界面目前將tao(Tao是一個(gè)跨平臺(tái)的應(yīng)用程序窗口創(chuàng)建和事件循環(huán)管理庫(kù)。)作為macOS、Windows、Linux、Android和iOS上的窗口處理庫(kù)。為了呈現(xiàn)您的應(yīng)用程序,Tauri使用WRY,這是一個(gè)為系統(tǒng)webview提供統(tǒng)一接口的庫(kù),利用macOS和iOS上的WKWebView、Windows上的WebView2、Linux上的WebKitGTK和Android上的Android系統(tǒng)webview。
Tauri可以成為Electron.js的替代品,由于其使用Rust開(kāi)發(fā)的引擎,因此相比Electron,其打包的可執(zhí)行文件更加輕量級(jí)。
主要功能特性包括:
- 內(nèi)置的應(yīng)用程序編譯器可以創(chuàng)建格式為.app、.dmg、.deb、.rpm、.AppImage的應(yīng)用程序包,以及Windows安裝程序,如.exe(通過(guò)NSIS)和.msi(通過(guò)WiX)。
- 內(nèi)置自我更新器(僅限桌面)
- 支持系統(tǒng)托盤(pán)圖標(biāo)
- 支持本地通知
- 免費(fèi)
- 用于簡(jiǎn)化CI的GitHub操作
- 提供VS Code擴(kuò)展
支持的操作系統(tǒng)平臺(tái)包括:
4.Pake
https://github.com/tw93/Pake
Pake是一個(gè)基于Rust語(yǔ)言的工具,可以將網(wǎng)頁(yè)轉(zhuǎn)換為桌面應(yīng)用程序,支持Mac,Windows和Linux操作系統(tǒng)。相比Electron,Pake的包更輕、更快、更?。ㄐ?0倍)。它提供了快捷方式、沉浸式窗口和極簡(jiǎn)自定義等功能。
5.Nativefier
https://github.com/nativefier/nativefier
NativeFier是一個(gè)命令行工具,可以將任何網(wǎng)站輕松地創(chuàng)建為“桌面應(yīng)用程序”。它底層技術(shù)使用Electron,Electron是一個(gè)基于Chromium的開(kāi)發(fā)平臺(tái),導(dǎo)出后可執(zhí)行文件可以用于Windows、macOS和Linux操作系統(tǒng)。
這個(gè)項(xiàng)目的創(chuàng)建者,其背后的動(dòng)機(jī)是開(kāi)發(fā)人員在使用Messenger、Whatsapp Web時(shí)不得不切換到瀏覽器,并篩選多個(gè)打開(kāi)的標(biāo)簽時(shí)感到繁瑣。使用NativeFier,用戶(hù)可以將他們經(jīng)常訪問(wèn)的網(wǎng)站轉(zhuǎn)換為桌面應(yīng)用程序,從而提供更加直接的訪問(wèn)方式和更簡(jiǎn)化的用戶(hù)體驗(yàn)。
NativeFier的主要功能包括自動(dòng)檢索應(yīng)用程序圖標(biāo)和名稱(chēng),注入自定義JS、CSS的能力。
可以通過(guò)“npm install -g nativeFier”安裝NativeFier。安裝環(huán)境要求:macOS 10.13+ / Windows / Linux,Node.js ≥ 16.9且npm ≥ 7.10。該工具還具有可選的依賴(lài)項(xiàng),如:用于圖標(biāo)轉(zhuǎn)換的ImageMagick或GraphicsMagick,以及用于從非Windows平臺(tái)構(gòu)建Windows應(yīng)用程序的Wine。
NativeFier也可以使用Docker安裝,直接從Docker Hub中pull鏡像。該工具附帶了擴(kuò)展的安裝選項(xiàng),如:Snap AUR,但是這些選項(xiàng)不由NativeFier維護(hù)人員管理,建議用戶(hù)檢查構(gòu)建腳本以確保安全性。
需要注意的是,NativeFier目前處于停止維護(hù)狀態(tài)。
6.WebDGap
https://github.com/michaelsboost/WebDGap
WebDGap是一種允許用戶(hù)輕松將網(wǎng)站轉(zhuǎn)換為多平臺(tái)桌面應(yīng)用程序的工具。這是第一個(gè)在網(wǎng)絡(luò)上發(fā)布并在瀏覽器中運(yùn)行的同類(lèi)應(yīng)用程序。
轉(zhuǎn)換過(guò)程包括輸入應(yīng)用程序的名稱(chēng),加載圖標(biāo),并將應(yīng)用程序的源代碼打包到zip文件中。zip文件需要包含一個(gè)index.html文件以及相關(guān)的CSS和JavaScript文件。
該工具通過(guò)整合各種開(kāi)源項(xiàng)目,以支持其運(yùn)行。包括用于開(kāi)發(fā)用戶(hù)界面的Poly UI Kit、jQuery、用于將zip文件打包為Javascript的JSZip、用于將web應(yīng)用程序作為桌面應(yīng)用程序運(yùn)行的node webkit,以及用于通知對(duì)話框的AlertyJS。
WebDGap可在MIT許可證下運(yùn)行,使用NW.js包裝器,能與64位和32位處理器兼容。
但是WebDGap的桌面版本已被棄用。
我們認(rèn)為,基于命令行的打包,除非需要用到32位CPU,要不然,WebDGap還不如NativeFier。
7.Web2App
https://github.com/hamza72x/web2app
Web2App是一個(gè)可以將任何網(wǎng)頁(yè)轉(zhuǎn)換為輕量級(jí)桌面應(yīng)用程序的工具,打包后的大小僅為3MB左右。支持macOS、Linux和Windows操作系統(tǒng)。對(duì)于macOS和Linux,需要首先安裝Rust工具鏈。對(duì)于Windows,必須設(shè)置Tauri預(yù)配置。
可以使用“cargo install web2 app tauri-cli”命令安裝Web2App。它提供了兩種使用模式:帶參數(shù)運(yùn)行、以交互模式運(yùn)行。交互模式運(yùn)行方式可以提示用戶(hù)輸入應(yīng)用程序的名稱(chēng)、URL、描述、版本、作者、標(biāo)識(shí)符、圖標(biāo)和用戶(hù)代理。
Web2App的輸出一般保存在"$HOME/web2app_apps/name"目錄中。
# 安裝
cargo install web2app tauri-cli
# 使用參數(shù)模式運(yùn)行
web2app args -n Notion -u https://www.notion.so -i icon.png
使用交互式:
web2app interactive
# ?? Enter Name (TestApp):
# ?? Enter URL (https://trello.com):
# ?? Enter Description (An example application.):
# ?? Enter Version (0.1.0):
# ?? Enter Author (John Doe):
# ?? Enter Identifier (com.example.testapp):
# ?? Enter Icon (icon_path.png):
# ?? Enter User Agent (Mozilla/5.0):
8.MacGap
https://macgapproject.github.io/MacGap是一個(gè)專(zhuān)為HTML/JS/CSS開(kāi)發(fā)人員設(shè)計(jì)的工具,為他們提供了一個(gè)Xcode項(xiàng)目,以幫助開(kāi)發(fā)原生OS X應(yīng)用程序。這些應(yīng)用程序在OS X的WebView中運(yùn)行,并利用WebKit技術(shù),提供了一種有效的方法來(lái)創(chuàng)建具有本地功能的基于Web的應(yīng)用程序。
MacGap的一個(gè)關(guān)鍵特性是它的JavaScript API,它公開(kāi)了OS X集成功能。例如,它允許顯示本地通知或?qū)?shù)據(jù)寫(xiě)入文件。此功能對(duì)于希望提供更具沉浸式和集成式用戶(hù)體驗(yàn)的Web開(kāi)發(fā)人員特別有用。
此外,MacGap以其極輕和靈活的特性而聞名。使用MacGap創(chuàng)建的空白應(yīng)用程序大小不到1MB,表明該工具在效率和最小的資源使用方面十分優(yōu)秀。這使得它成為尋求輕量級(jí)但功能強(qiáng)大的工具來(lái)創(chuàng)建本機(jī)OS X應(yīng)用程序的開(kāi)發(fā)人員的絕佳選擇。
它也可以用來(lái)為網(wǎng)站制作酷炫桌面應(yīng)用程序,只需點(diǎn)擊一下就可以流暢地運(yùn)行。