实现性能
- 减少配置文件
- 读取语雀内容,并且输入到HTML上
具体步骤
本节残缺代码
参考:https://github.com/golangtips/yuque/releases/tag/v0.0.3
main.go 减少配置解析,把 services 传入 http 申请处理函数
package mainimport ( "fmt" "log" "net/http" "os" "os/signal" "syscall" "time" "github.com/golangtips/yuque/service" "github.com/golangtips/yuque/config" "github.com/BurntSushi/toml" "github.com/golangtips/yuque/handler" "github.com/gorilla/mux")func main() { err := run() if err != nil { log.Fatal(err) }}func run() error { // 解析配置文件 var config config.Toml if _, err := toml.DecodeFile("config.toml", &config); err != nil { return err } // 初始化服务 s, err := service.NewSet(&config) if err != nil { return err } r := mux.NewRouter() // 文章详情页 r.Methods("GET").Path("/").HandlerFunc(handler.HomePage) // 文章详情页 r.Methods("GET").Path("/posts/{slug:[a-zA-Z0-9.]+}").HandlerFunc(handler.PostDetail(s.YuQue)) // 文章详情页 r.Methods("GET").Path("/posts").HandlerFunc(handler.PostList(s.YuQue)) // 文章搜寻页 r.Methods("GET").Path("/search").HandlerFunc(handler.Search(s.YuQue)) server := &http.Server{ Handler: r, Addr: fmt.Sprintf(":%d", config.HTTPPort), WriteTimeout: 5 * time.Second, ReadTimeout: 5 * time.Second, } errs := make(chan error) // HTTP 服务 go (func() { log.Println("HTTP服务启动") errs <- server.ListenAndServe() })() // 退出信号处理 go (func() { ch := make(chan os.Signal, 1) signal.Notify(ch, syscall.SIGINT, syscall.SIGTERM) errs <- fmt.Errorf("%s", <-ch) })() // 退出日志 log.Println("exit", <-errs) return nil}
handler/post.go 减少 service.IYuQue 传参
package handlerimport ( "log" "net/http" "strconv" "time" service "github.com/golangtips/yuque/service/intf" "github.com/gorilla/mux" "html/template")// PostDetail 文章详情页func PostDetail(s service.IYuQue) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { // ... 这里省略.... }}// PostList 文章列表页func PostList(s service.IYuQue) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { // ... 这里省略.... }}type Post struct { Title string Content template.HTML Slug string CreatedAt time.Time}