厌倦了Electron的臃肿?这个用Go打造的Wails框架为何能让桌面应用轻快如飞

作者:佚名 时间:2025-11-12 14:33

字号

身为一名长时间留意开发工具进展的技术编辑,我发觉最近这些年里,桌面应用开发范畴正静悄悄地出现转变,传统的尽管普及程度高的Electron方案,然而它的占多而且消耗计算机所有硬件作用的核心资源造成难题的问题,一直不断搅扰着开发人员群体,今天我们要讲述的Wails框架,也许能够给这个难题提供全新的解决办法的思路 。

框架特性解析

https://github.com/pudongping/wx-graph-crawl

有一个名为Wails的框架,它运用Go这个语言去编写后端的逻辑,并且它还对现代前端技术栈予以支持,此框架借助把Go程序编译成本地代码,达成了比Electron更为出色的性能表现,在实际进行测试的时候,应用启动的速度显著得以提升,内存占用也大幅度地下降了。

将前端代码可直接调用后端Go方法,架构设计消除传统Web应用中HTTP请求开销的该框架,其最新版本是v2.5.1,于今年第三季度发布,这种设计能让开发者构建出既兼顾Web开发效率,且又拥有原生应用性能的桌面程序。

go version
node -v
npm -v

环境配置指南

go install github.com/wailsapp/wails/v2/cmd/wails@latest

先要配置Go语言环境去安装Wails,对Go版本要求是不低于1.18 。并且要安装Node.js环境用以来支持前端构建 。在Windows系统之下还得安装MSYS2,目的是用于提供必要的构建工具链 。

wails doctor

完成配置之后,开发者能够借助命令行工具“wails init”迅速创建项目,此工具给予交互式项目初始化流程,支持对项目名称、模板类型等参数进行自定义,环境变量设置要保证GOPATH/bin目录涵盖于系统PATH里。

wails doctor

项目初始化流程

wails init -n myapp -t vue

执行“wails init”命令之后,系统会给出提示让选择项目模板。当下官方提供了Vue、React、Svelte等等多种前端框架模板。拿Vue模板来说,项目结构能够清晰地分离前端以及后端代码,有利于团队协作开发。

wails init -n myapp -t vue-ts

已完成初始化的项目含有基础示例代码,执行“wails dev”便可启动开发服务器,此命令会一并启动前端热重载服务器以及后端程序监控,达成代码修改后的实时预览,开发服务器运行于本地34115端口。

cd myapp

前后端交互实现

myapp/
├── app.go              # 应用主逻辑
├── main.go            # 程序入口
├── frontend/          # 前端代码
│   ├── index.html
│   ├── src/
│   └── dist/
├── build/             # 构建相关文件
└── wails.json         # Wails 配置文件

在前端去调用Go方法呐,得要先在后端那里呀,定义相关各类函数呢。在app.go这个文件当中嘛,运用Wails所提供的结构体哟,去给它定义出来导出式的方法呀。这些方法呢,是必须要满足特定的那种签名要求哒,第一个参数是作为上下文对象哒,返回值呢,是支持多数Go内置类型哒。

前端借助wailsjs运行时库来调用后端方法呢,在Vue组件当中呀,能够通过import去导入自动生成的类型定义哦,进而获得完整的类型提示支持哟。这种方法调用的方式跟普通JavaScript函数调用是没有差别的呀,然而实际执行的乃是后端Go代码呢。

应用打包部署

实施“wails build”这一指令,便可开启应用的打包进程,这个命令能依循Go代码编译成平台原生二进制文件,与此同时会把前端资源进行打包并嵌入进去,完成打包之后,于build/bin目录生成具备可执行性质的文件,而没有额外的需运行时就能进行分发 。

被打包而生成的应用,其体积明显小于Electron应用,基础应用的大小被控制在涉及二十至四十MB这样的范围之内。Wails对Windows、macOS以及Linux这三大平台予以支持交叉编译,凭借单个命令就能生成多平台版本,极大程度地简化了发布流程。

package main
import "context"
// App 结构体会被 Wails 自动注册为后端服务
type App struct{}
// Hello 方法供前端调用
func (a *App) Hello(ctx context.Context, name string) string {
	return "你好," + name + "!欢迎使用 Wails~"
}

技术优势比较

相较于Electron,Wails在资源占用这块优势显著,实测数据表明,具备相同功能的应用,Wails版本内存占用下降了大约60%,而且启动速度提高了约40%,这主要是因为其本地代码执行以及精简的运行时架构 。

那Wails框架呢,其还给出了丰富的原生API访问能力,这里面涵盖了系统菜单、文件对话框等等,开发者能够借助插件机制去扩展这些能力,以此来满足特定平台的功能需求,正是这些特性,才让Wails变成开发轻量级桌面应用的理想选项。



各位从事开发工作的人员,于实际运用 Wails 框架之际,有没有碰到过和传统的用 Electron 进行开发时截然不同的难点呢?欢迎于评论区域分享您亲身经历的实战方面的经验,同时也期望您能对这篇文章进行点赞给予支持。

wails build

责任编辑:CQITer新闻报料:400-888-8888   本站原创,未经授权不得转载
继续阅读
热新闻
推荐
关于我们联系我们免责声明隐私政策 友情链接