对于桌面apps开发,尤其需要原生功能支持、有离线使用需求、迭代速度较快、对下载安装不太敏感同时桌面端开发人员不足的项目,最好能够利用js构建跨平台的桌面端应用。提供一个定制的“浏览器”,封装了一些原生系统的功能,提供给开发者。如可以定制不同系统的菜单栏、应用图标、任务栏,控制应用窗口的大小和位置,调用本地的程序等。相比web应用,开发者摆脱了来自浏览器的限制、并可以间接地和原生打交道。
通常会选用Electron著名应用有:Atom编辑器、VS Code编辑器、Slack、Postman桌面版、Wordpress桌面版等。
wails简介
Wails提供使用go及web技术开发桌面apps的能力,相对Electron更轻量化、更快。结合go简便构建具有更多功能、现代化前端界面的应用。
入门
Wails在安装前需要需准备基础环境:
- Go 1.17+
- NPM (Node 15+)
安装wails
运行 go install github.com/wailsapp/wails/v2/cmd/wails@latest 安装Wails CLI.
检查安装结果
运行 wails doctor. 如果检查未通过,可根据提示安装依赖包,直至通过。
使用Javascript及Vue开发,生成项目:
wails init -n myproject -t vue
如果使用Typescript:
wails init -n myproject -t vue-ts
随后在生成的项目目录下,运行wails dev
Wails CLI v2.0.0-beta.37
Executing: go mod tidy -compat=1.17
Executing: wails generate module
Building application for development...
- Installing frontend dependencies: Done.
- Compiling frontend: Done.
- Compiling application: Done.
- Packaging application: Done.
Running frontend dev watcher command: 'npm run dev'
Watching (sub)/directory: /Users/jade/dev/hello-wails
Using DevServer URL: http://localhost:34115
Using Frontend DevServer URL: http://localhost:3000
Using reload debounce setting of 100 milliseconds
INF | Serving assets from frontend DevServer URL: http://localhost:3000
Added new directory to watcher: /Users/jade/dev/hello-wails/frontend/wailsjs/go
DEB | [DevWebServer] Waiting for frontend DevServer 'http://localhost:3000' to be ready
> frontend@0.0.0 dev /Users/jade/dev/hello-wails/frontend
> vite
vite v2.9.12 dev server running at:
> Local: http://localhost:3000/
> Network: use `--host` to expose
ready in 284ms.
DEB | [DevWebServer] Serving DevServer at http://localhost:34115
如顺利将弹出类似如下窗口:

其他
白屏
此问题在mac下会出现,在白屏下右键,选择调试(同浏览器中“检查”),可以看到"The resource could not be loaded because the App Transport Security policy requires the use of a secure connection"内容。
需要修改build/darwin/Info.plist,添加如下内容
<key>NSExceptionAllowsInsecureHTTPLoads</key><true/>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key><true/>
</dict>
之后运行 rm -rf build/bin && wails dev。
参考:
最后修改于 2022-06-23