Github: https://github.com/Bluek404/go2html5
脑洞产物
用go写html
除了普通的标签外
还可以直接写控件
所有函数均返回转换为HTML后的string
HTML5的所有标签正在逐步添加中
如果想实现自定义标签
可以自己写函数
例如:
func CustomTag(attributes Attr, html []string) string {
var tag = "custom-tag"
var s bytes.Buffer
s.WriteString("<" + tag)
for k, v := range attributes {
s.WriteString(" " + k + "=\"" + v + "\"")
}
s.WriteString(">")
for _, v := range html {
s.WriteString(v)
}
s.WriteString("</" + tag + ">")
return s.String()
}
实现自定义控件:
// 自定义按钮
func CustomButton(href, name string, color int) string {
var c string
switch color {
case 0:
c = "btn-red"
case 1:
c = "btn-yellow"
case 2:
c = "btn-green"
case 3:
c = "btn-blue"
default:
c = "btn-red"
}
return "<a href=\"" + href + "\" class=\"btn" + c + "\">" + name +"</a>"
}
Html(Attr{"lang": "cn"},
Head(nil,
Title(nil, "Go2HTML5 Example"),
),
Body(nil,
P(nil,
"现在是:",
func() string {
var s bytes.Buffer
t := time.Now().Hour()
switch {
case t >= 0 && t <= 4:
s.WriteString("凌晨")
case t >= 5 && t <= 7:
s.WriteString("早上")
case t >= 8 && t < 10:
s.WriteString("上午")
case t >= 11 && t <= 13:
s.WriteString("中午")
case t >= 14 && t <= 19:
s.WriteString("下午")
case t >= 20 && t <= 22:
s.WriteString("晚上")
case t >= 23 && t <= 24:
s.WriteString("深夜")
}
s.WriteString(time.Now().Format("3点4分5秒"))
return s.String()
}(),
),
Hr(nil),
P(nil,
"Written in ", A(Attr{"href": "http://golang.org"}, "Go!"),
),
),
)
1
kzzhr 2014-12-29 22:04:37 +08:00
之前也有个类似的想法 。用JSON写html。。
|
2
lidashuang 2014-12-29 22:46:53 +08:00
那你得写多少函数啊。。。
|
3
ETiV 2014-12-29 22:49:05 +08:00 via iPhone
为LZ的创造力鼓掌
|
4
14 2014-12-29 22:51:08 +08:00 via Android
go2sleep
|
5
immjun 2014-12-29 22:52:29 +08:00
期待更多分享~
|
6
scarlex 2014-12-29 22:54:47 +08:00
何苦为难自己呢
|
7
bcxx 2014-12-29 22:59:05 +08:00
哈哈哈哈好累啊…… go 这表达能力不适合做 DSL 啊
|
8
Bluek404 OP |
9
lidashuang 2014-12-29 23:17:47 +08:00
@Bluek404 写这种东西还是clojure/lisp牛逼
|
12
yegle 2014-12-30 02:15:57 +08:00 1
要么 import . "github.com/Bluek404/go2html5" 把所有函数都引入然后能实现你给的例子那样的代码(但是目测有Address之类很通用的函数名),要么是引入一个别名然后所有函数调用都加上XX.Html这样的前缀。
另外建议看看是不是能用go generate自动生成一些函数吧 |
13
Bluek404 OP |
14
Lucups 2014-12-30 03:04:57 +08:00
已 star,Good Job!
|
15
horsley 2015-01-01 00:28:43 +08:00
创意不错实现略搓,支持一下~
|