Go embed (把静态资源打包进可执行文件中) 已经出来很久了,但我一直懒惰没用起来。最近对自己做的一个软件升级,尝试了一下,比想象中好用。
我做的是一个自用的密码管理器,给 MacOS, Windows, Linux 三大平台都打包了,大家可以试试看效果,下载地址 https://github.com/ahui2016/mima/releases/ 下载并解压缩后得到一个文件,无需安装,直接运行即可,通过 http://127.0.0.1 访问操作界面,如果遇到端口冲突可使用 -addr
参数修改端口,例如:
mima.exe -addr 127.0.0.1:8080
如果单纯使用 Go embed, 由于静态资源都打包到可执行文件里了,在开发阶段每次修改前端的内容,都需要执行一次 go build 才能反映变化。也就说,发布时简单,但开发时很不方便。
解决办法也简单,增加一个 debug 模式即可:
mima.exe -debug
在 debug 模式下,修改前端的 HTML/JS 文件,不需要重新打包,不需要重启后端,只要刷新网页就行。(有时需要 Ctrl+Shift+R 强制刷新)
实现这个模式的代码在这个项目的 main.go 文件里。
1
Glauben 2022-02-11 19:48:15 +08:00
--在开发阶段每次修改前端的内容,都需要执行一次 go build 才能反映变化
可以用 FS 数组搞个别名,然后实现 Open 方法。按数组顺序判断一个 FS 有没有文件,有的话就显示。 |
2
qfdk 2022-02-11 20:44:26 +08:00
确实很好,本人项目用了 :) 另外修一下 xss 简单测试下 https://mimademo.ai42.xyz/public/search.html 搜索 test 有惊喜
|
3
hzz2 2022-02-11 21:24:11 +08:00
同样之前用 Go embed 改写了一个电影资源爬虫项目 https://github.com/hezhizheng/go-movies
|
4
SuperMild OP |
5
cs419 2022-02-12 10:44:35 +08:00
持久化怎么做的
没装 是当前目录下 一个 sqlite 文件么 文档里可以说下持久化怎么处理的 提供下参数 来支持配置数据存放目录 可以不用 不能没有 🐶 |
7
EscYezi 2022-02-13 04:32:52 +08:00 via iPhone
go embed 确实好用,不过可以考虑用前后端分离的方式,前端开发不需要重启后端,开发完成再把前端打的包用 go embed 引入
|
8
SuperMild OP @EscYezi 对,我目前就是采用类似的方式,只是我加了一个开关,在启动程序时可以选择用 go embed 里的资源还是用本地文件夹里的资源,如果选择本地文件夹,前端刷新就能看到变化。
|