整体结构
MVC结构:View提供了html页面,Model定义了数据的结构,Control去获取具体的数据并渲染页面,在服务端生成需要响应的页面
View
1、使用html template模板引擎:
- 取值,如{{.item}}
- 循环,如{{range}}
- 选择,如{{if}}...{{else}}...{{end}}
- 函数调用,如{{len}}
2、常用函数
解析一个html模板文件
func ParseFiles(filenames ...string) (*Template, error) { return parseFiles(nil, filenames...) }
渲染一个模板文件并完成后输出
func (t *Template) Execute(wr io.Writer, data interface{}) error { if err := t.escape(); err != nil { return err } return t.text.Execute(wr, data) }
3、翻页
elasticSearch自带翻页功能,只要在查询的时候跟上from语句,设计“上一页”和“下一页”如下:
result.PrevFrom = result.Start - len(result.Items) result.NextFrom = result.Start + len(result.Items)
Model
根据需求构造数据结构
type SearchResult struct { Hits int64 Start int Items []engine.Item Query string PrevFrom int NextFrom int }
Control
1、使用http.FileServer()来提供静态内容,如css, js, 图片等
2、启动web服务接收搜索请求(需要研究go的http标准库如何设计server)