go-bindata - embed结合嵌入静态文件打包可执行二进制文件

## embed 嵌入静态文件到可执行二进制文件
# 安装go-bindata

go get -u github.com/jteeuwen/go-bindata/...



# 打包静态文件

go-bindata web/...


执行次命令之后会在项目目录下生成bindata.go文件,示例命令中模板文件都在项目的web目录下

# 使用embed注册模板示例文档

https://github.com/kataras/iris/blob/main/_examples/view/embedding-templates-into-app/main.go

https://github.com/kataras/iris/blob/main/_examples/view/embedding-templates-into-app/main.go



示例代码:

package main

import (
"embed"
"github.com/kataras/iris/v12"
)

//go:embed embedded/*
var embeddedFS embed.FS

func main() {
app := iris.New()

tmpl := iris.HTML(embeddedFS, ".html").RootDir("embedded/templates")

tmpl.Layout("layouts/layout.html")
tmpl.AddFunc("greet", func(s string) string {
return "Greetings " + s + "!"
})

app.RegisterView(tmpl)

app.Get("/", func(ctx iris.Context) {
if err := ctx.View("page1.html"); err != nil {
ctx.HTML("<h3>%s</h3>", err.Error())
return
}
})

// remove the layout for a specific route
app.Get("/nolayout", func(ctx iris.Context) {
ctx.ViewLayout(iris.NoLayout)
if err := ctx.View("page1.html"); err != nil {
ctx.HTML("<h3>%s</h3>", err.Error())
return
}
})

// set a layout for a party, .Layout should be BEFORE any Get or other Handle party's method
my := app.Party("/my").Layout("layouts/mylayout.html")
{ // both of these will use the layouts/mylayout.html as their layout.
my.Get("/", func(ctx iris.Context) {
if err := ctx.View("page1.html"); err != nil {
ctx.HTML("<h3>%s</h3>", err.Error())
return
}
})
my.Get("/other", func(ctx iris.Context) {
if err := ctx.View("page1.html"); err != nil {
ctx.HTML("<h3>%s</h3>", err.Error())
return
}
})
}

// http://localhost:8080
// http://localhost:8080/nolayout
// http://localhost:8080/my
// http://localhost:8080/my/other
app.Listen(":8080")
}


http://www.niftyadmin.cn/n/5179707.html

相关文章

Qt 自定义event

本文章从属于 Qt实验室-CSDN博客系列 自定义事件携带数据 在某些情况下&#xff0c;可能需要通过事件携带一些额外的数据 可以通过自定义事件类来完成 一种实现方法是自定义一个QObject的子类&#xff0c;通过property来携带数据 class MyEvent : public QObject,public …

第五章ARM处理器的嵌入式硬件系统设计——课后习题

1ARM处理器的工作状态 ARM处理器有两种工作状态。具体而言&#xff0c;ARM处理器执行32位ARM指令集时&#xff0c;工作在ARM状态&#xff0c;当ARM处理器执行16位thumb指令集时候&#xff0c;工作在thumb状态。 1ARM指令特点 1一个大的&#xff0c;统一的寄存器文件。 2基于…

混合开发(Android原生与H5交互) 说明文档

前言 目前&#xff0c;比如微信、QQ、淘宝、京东、知乎、各大银行App等大量软件都内嵌了部分H5。Android与H5&#xff08;JS&#xff09;互调可以让我们实现混合开发。混合开发就是在一个APP中内嵌一个轻量级的浏览器&#xff0c;一部分原生的功能改为Html5来开发。 拿微信举例…

间歇性工作的时钟波形对行sdc约束怎么写

我正在「拾陆楼」和朋友们讨论有趣的话题&#xff0c;你⼀起来吧&#xff1f; 拾陆楼知识星球入口 如下图&#xff0c;紫色部分波形间歇式工作&#xff0c;如果要写约束应该怎么写&#xff1f; 答&#xff1a;按照最小周期写即可&#xff0c;只看active的部分&#xff0c;至于…

每个程序员都在找的免费API接口

免费好用的api接口&#xff0c;含免费次数&#xff1a; IP归属地-IPv6区县级&#xff1a;根据IP地址&#xff08;IPv6版本&#xff09;查询归属地信息&#xff0c;包含国家、省、市、区县和运营商等信息。IP归属地-IPv6城市级&#xff1a;根据IP地址&#xff08;IPv6版本&…

ESP32/ESP8266基于Arduino框架下驱动1.8“tft_oled屏幕仿数码管时钟

ESP32/ESP8266基于Arduino框架下驱动1.8"tft_oled屏幕仿数码管时钟 &#x1f4cd;相关篇《ESP32基于Arduino框架下U8g2驱动I2C OLED 时间显示》&#x1f4fa;效果演示&#xff1a; &#x1f33f;屏幕显示部分&#xff0c;采用使用TFT_eSPI库驱动&#xff0c;利用该库自带的…

华为层层“能力外溢”,让数智世界一触即达——选择华为,让您的企业轻松数智化

作者 | 曾响铃 文 | 响铃说 7万多人现场观赛&#xff0c;手机信号不掉链子&#xff0c;能发图片视频、能分享朋友圈&#xff1b; 消防、闸机等多个安防系统联动&#xff0c;风险事件自动报告&#xff0c;观赛、办赛安心&#xff1b; 运营数据全面打通、实时更新&#xff0c…

使用Python轻松实现科研绘图

当撰写在学术期刊上发表的文章时&#xff0c;图表的布局和风格应符合预定义的格式要求。这样可以确保该出版物的所有文章都具有一致的风格&#xff0c;并且任何包含的图表在打印时都是高质量的。 Python在科学界广泛使用&#xff0c;并提供了创建科学绘图的好方法。然而&#…