当前位置: 首页 > 工具软件 > gohtml > 使用案例 >

html动态创建html文件,gohtml

赵元白
2023-12-01

GoHtml

Version : 1.0

使用go动态生成html。

go get github.com/klarkxy/gohtml

功能

GoTag

GoTag代表一个Html的Tag。使用String()接口来产生形如{tags}{name}>的html代码。

GoHtml

GoHtml代表一个Html的页面。使用String()接口来生成Html字符串,或者使用MinString()接口来生成紧凑的Html字符串

GoParser @TODO

GoParser是一个Html的解析器,可以将一个符合标准的html文件解析成Gohtml对象。

GoQuery @TODO

GoQuery是一个类JQuery的工具,可以批量对GoTag进行操作。

GoTag

使用gohtml.Tag(name)来创建一个GoTag。

主要接口:

// 将GoTag转化为html字符串输出

func (cur *GoTag) String() string;

// 在当前Tag中插入若干个Tag/Text,返回当前Tag

func (cur *GoTag) Append(tags ...fmt.Stringer) *GoTag;

// 在当前Tag下新建一个Tag,返回新建出来的Tag

func (cur *GoTag) Tag(name string) *GoTag;

// 设置当前Tag为self-Closing,返回当前Tag

func (cur *GoTag) Self() *GoTag;

// 在当前Tag中插入一条string,返回当前Tag

func (cur *GoTag) Text(str string) *GoTag;

// 设置属性,返回当前Tag

func (cur *GoTag) Attr(attrs ...string) *GoTag;

第一个例子

htm1 := gohtml.Tag("p").Text("Hello World!")

fmt.Println(htm.String())

输出

Hello World!

设置属性

设置一个属性

htm := gohtml.Tag("a").Attr("href", "https://www.zhihu.com/").Text("打开知乎")

fmt.Println(htm.String())

输出

打开知乎

设置多个属性

可以多次调用Attr接口,也可以一次性调用中传入多个参数。

htm1 := gohtml.Tag("button").Attr("type", "button").Attr("href", "https://www.zhihu.com/").Text("打开知乎")

htm2 := gohtml.Tag("button").Attr("type", "button", "href", "https://www.zhihu.com/").Text("打开知乎")

fmt.Println(htm1.String())

fmt.Println(htm2.String())

输出

打开知乎

打开知乎

SelfClosing Tag

html的SelfClosing-Tag

htm1 := gohtml.Tag("meta").Attr("http-equiv", "X-UA-Compatible").Attr("content", "IE=edge").Self()

fmt.Println(htm1.String())

输出

GoTag的嵌套

table := gohtml.Tag("table")

tr1 := table.Tag("tr")

tr1.Tag("th").Text("1")

tr1.Tag("th").Text("2")

tr2 := table.Tag("tr")

tr2.Tag("th").Text("3")

tr2.Tag("th").Text("4")

fmt.Println(table.String())

输出

1

2

3

4

更为优美的书写方式

目前已经支持大部分html-tag,可以直接进行调用。

同时支持gohtml.Xxx()或者GoTag.Xxx()的方式。效果同gohtml.Tag("xxx")或者GoTag.Tag("xxx")

同样,也支持了GoTag.Yyy(val string)的方式,直接设置属性,效果同GoTag.Attr("yyy", val)

由于html的属性种类繁多,可能会有缺漏,请务必提醒我。

form := gohtml.Form()

form.H2().Text("Please Sign In")

form.Input().Type("username").Placeholder("Username").Required().Autofocus()

form.Input().Type("password").Placeholder("Password").Required()

divlabel := form.Div().Label()

divlabel.Input().Type("checkbox").Value("Remember me")

divlabel.Text("Remember me.")

form.Button().Type("submit").Text("Sign in")

fmt.Println(form.String())

输出

Please Sign In

Remember me.

Sign in

GoHtml

通常意义上,我们可以把一个html文件分为以下6个部分。

{{.Meta}}

{{.Link}}

{{.HtmlHead}}

{{.Body}}

{{.Script}}

{{.Html}}

我们调用gohtml.NewHtml()来生成一个GoHtml,调用其String()接口来将之转换成html字符串。

常用接口

// 生成一个GoHtml

func NewHtml() *GoHtml;

// 转化为html字符串输出。如果不希望有空格和换行,使用MinString()

func (cur *GoHtml) String() string;

func (cur *GoHtml) MinString() string;

// 获取对应Tag

func (cur *GoHtml) Html() *GoTag;

func (cur *GoHtml) Head() *GoTag;

func (cur *GoHtml) Body() *GoTag;

// 增加一条Tag

func (cur *GoHtml) Meta() *GoTag;

func (cur *GoHtml) Link() *GoTag;

func (cur *GoHtml) Script() *GoTag;

对于Html()接口,调用Tag()接口增加的Tag将会增加在{{.Html}}处

对于Head()接口和Body()接口,任何增加属性的行为将会失效

对于Meta()、Link()、Script()接口,调用接口会增加一条对应的Tag

一个空的GoHtml

htm := gohtml.NewHtml()

fmt.Println("String:")

fmt.Println(htm.String())

fmt.Println("MinString:")

fmt.Println(htm.MinString())

输出

String:

MinString:

一个基本的Bootstrap3框架

bootstrap := gohtml.NewHtml()

bootstrap.Html().Lang("zh-CN")

// Meta部分

bootstrap.Meta().Charset("utf-8")

bootstrap.Meta().Http_equiv("X-UA-Compatible").Content("IE=edge")

bootstrap.Meta().Name("viewport").Content("width=device-width, initial-scale=1")

// Css引入

bootstrap.Link().Href("https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css").Rel("stylesheet")

// Js引入

bootstrap.Script().Src("https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js")

bootstrap.Script().Src("https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/js/bootstrap.min.js")

// Head

bootstrap.Head().Title().Text("Bootstrap 101 Template")

// Body

bootstrap.Body().H1().Text("Hello World!")

fmt.Println(bootstrap.String())

输出

Bootstrap 101 Template

Hello World!

现在已经加入了Bootstrap模块,使用import "github.com/klarkxy/gohtml/bootstrap"来直接使用吧!

github.com/klarkxy/gohtml/bootstrap

联系我

QQ: 278370456

如果您在使用时遇见了问题,或者有意见、建议,请务必联系我,谢谢!

以上

 类似资料: