使用 Go 和 Web 技術構建桌面應用程序

《開源精選》是我們分享 Github、Gitee 等開源社區中優質項目的欄目,包括技術、學習、實用與各種有趣的內容。本期推薦的是一個使用 Go 和 Web 技術構建桌面應用程序的項目——WAILS。

Wails 是一個框架,可以使用 Go 和 Web 技術幫助編寫桌面應用程序。對於前端,使用 Webview 庫. 不過它使用平臺的本機渲染引擎(當前 Linux 和 Mac 使用 Webkit,Windows 使用 MSHTML)。前端使用 HTML / Javascript / CSS 編碼,後端是純 Go 語言。通過綁定機制,可以將 Go 代碼作爲返回 Promise 的功能公開給前端。該項目編譯爲單個可執行文件,將所有資源捆綁到其中。在 Windows 和 MacOS 上,可以將二進制文件捆綁到特定於平臺的程序包中進行分發。

注意:渲染引擎是 WebView,不是捆綁的 Web 瀏覽器,因此某些 “瀏覽器 API” 將對您的應用程序不可用,例如 localstorage。大多數應用程序不需要使用它們,如果您仍然想這樣做,可以使用 Go 來完成大多數事情。

功能

概述

Wails 被設計成儘可能縮小 web 技術和 Go 之間的差異。前端是 Webview 組件, 並且您可以使用自己喜歡的任何常見 Javascript 框架來開發前端代碼,並且可以與裏面的 Go 代碼進行交互。這是通過共享的 IPC 機制來實現的。

IPC 機制可以在 2 個運行時中運行,一個運行在 Javascript 中,另一個運行在 Go 中。它們都提供了一個簡單的接口,從而減輕了開發人員直接處理 IPC 機制的負擔。

運行時共享開發人員可以與之交互的公共組件:綁定和事件。

Wails 應用程序提供了一種方法,可讓您將公開的 Go 代碼(綁定)到前端。使用此方法,可以將任意函數或公開的結構方法綁定。在啓動時,Wails 將分析綁定的函數 / 方法並自動在 Javascript 中提供等效函數。使您可以直接從 Javascript 調用綁定的 Go 代碼。

JavaScript 包裝函數,處理了調用 Go 代碼的所有複雜性。您只需使用 Javascript 調用該函數並接收一個 Promise。綁定 Go 代碼功能,處理了綁定的所有複雜性。如果對 Go 代碼的調用成功完成,則結果將傳遞到 resolve 函數。如果返回錯誤,則將其傳遞給 reject 函數。

Wails 提供了一個統一的事件系統,類似於 Javascript 的原生事件系統。這意味着從 Go 或 Javascript 發送的任何事件都可以由任何一方接收。數據可以隨任何事件一起傳遞。這樣,您就可以做一些簡單的事情,例如讓後臺進程在 Go 中運行,並通知前端去更新頁面。

安裝

安裝過程非常簡單,只需運行以下命令:

go get -u github.com/wailsapp/wails/cmd/wails

安裝後,“wails update” 命令可用於後續更新。

要獲得最新功能的最新 pre-release 可以在後面附加 -pre 標籤:wails update -pre.

要完成安裝設置,請運行 安裝命令 wails setup 並且填寫對你的名字和郵箱。

使用初始化命令 wails init 生成一個新項目,選擇默認選項。

切換到項目目錄 cd my-project 並且使用構建命令構建命令 wails build 構建你的項目。

如果一切順利,則應該在本地目錄中有一個已編譯的程序。如果使用 Windows,請使用 ./my-project 來運行它或雙擊 myproject.exe

項目展示

WOMBAT

SURGE

MOLLY 錢包

PORTFALL

RESTORIC

OPTIMUS 截圖編輯器

—END—

開源協議:MIT

開源地址:https://github.com/wailsapp/wails

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/sm9n5ATV72VtzRI-P8ZC5Q