W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
我們可以通過?gf
?命令行工具的?pack
?命令實(shí)現(xiàn)對任意文件/目錄的打包。由于通過命令行工具進(jìn)行打包比較簡便,因此也是推薦的打包方式。
比較推薦的方式是將Go文件直接生成到?boot
?啟動(dòng)目錄,并設(shè)置生成Go文件的包名為?boot
?,這樣該資源文件將會(huì)被自動(dòng)引入到項(xiàng)目中。我們將項(xiàng)目的?config
?,?public
?,?template
?三個(gè)目錄的文件打包到Go文件,打包命令為:
gf pack config,public,template packed/data.go -n packed
生成的Go文件內(nèi)容類似于:
package packed
import "github.com/gogf/gf/v2/os/gres"
func init() {
if err := gres.Add("H4sIAAAAAAAC/5y8c5Bl0Zbuu9O2bVaq0rZZ6Urbtm3bNnfatipto9"); err != nil {
panic(err)
}
}
可以看到,生成的Go文件中通過?gres.Add
?方法將資源文件的二進(jìn)制內(nèi)容添加到默認(rèn)的資源管理器中,該方法的參數(shù)是壓縮過后的?BASE64
?字符串,將會(huì)在程序啟動(dòng)的時(shí)候做解壓并在內(nèi)存中生成一個(gè)文件樹對象,便于在運(yùn)行時(shí)快速操作文件。
在項(xiàng)目的?boot
?程序啟動(dòng)設(shè)置包中自動(dòng)引入?packed
?資源包,并且應(yīng)當(dāng)作為第一個(gè)引入的包,以便于其他引入的包在初始化時(shí)(?init
?方法中)便能使用到資源內(nèi)容,例如像這樣(?module
?名稱為?my-app
?):
import (
_ "my-app/packed"
// 其他包
)
這里建議引入?packed
?包和其他包之間加入一個(gè)空行以作區(qū)分,特別是?Goland IDE
?的?import
?插件不會(huì)將引入包進(jìn)行自動(dòng)排序。
由于項(xiàng)目的?main
?入口程序文件會(huì)引入?boot
?包,并且應(yīng)當(dāng)作為第一個(gè)引入的包:
import (
_ "my-app/boot"
// 其他包
)
這里建議引入?boot
?包和其他包之間加入一個(gè)空行以作區(qū)分,特別是?Goland IDE
?的?import
?插件不會(huì)將引入包進(jìn)行自動(dòng)排序。
隨后可以在項(xiàng)目的任何地方使用?gres
?模塊來訪問打包的資源文件。
如果使用?GoFrame
?推薦的項(xiàng)目目錄結(jié)構(gòu),在目錄結(jié)構(gòu)中會(huì)存在?boot
?目錄(對應(yīng)包名也是?boot
?),用于程序啟動(dòng)設(shè)置。因此如果將Go文件生成到?boot
?目錄下,那么將會(huì)被自動(dòng)編譯進(jìn)可執(zhí)行文件中。
可以通過?gres.Dump()
?方法打印出當(dāng)前資源管理器中所有的文件列表,輸出內(nèi)容類似于:
2019-09-15T13:36:28+00:00 0.00B config
2019-07-27T07:26:12+00:00 1.34K config/config.toml
2019-09-15T13:36:28+00:00 0.00B public
2019-06-25T17:03:56+00:00 0.00B public/resource
2018-12-04T12:50:16+00:00 0.00B public/resource/css
2018-12-17T12:54:26+00:00 0.00B public/resource/css/document
2018-12-17T12:54:26+00:00 4.20K public/resource/css/document/style.css
2018-08-24T01:46:58+00:00 32.00B public/resource/css/index.css
2019-05-23T03:51:24+00:00 0.00B public/resource/image
2018-08-20T05:02:08+00:00 24.01K public/resource/image/cover.png
2019-05-23T03:51:24+00:00 4.19K public/resource/image/favicon.ico
2018-08-23T01:44:50+00:00 4.19K public/resource/image/gf.ico
2018-12-04T13:04:34+00:00 0.00B public/resource/js
2019-06-27T11:06:12+00:00 0.00B public/resource/js/document
2019-06-27T11:06:12+00:00 11.67K public/resource/js/document/index.js
2019-09-15T13:36:28+00:00 0.00B template
2019-02-02T09:08:56+00:00 0.00B template/document
2018-12-04T12:49:08+00:00 0.00B template/document/include
2018-12-04T12:49:08+00:00 329.00B template/document/include/404.html
2019-03-06T01:52:56+00:00 3.42K template/document/index.html
...
需要注意的是,在使用資源管理器中的資源文件時(shí),需要嚴(yán)格按照其路徑進(jìn)行檢索獲取。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: