global

  • 管理配置 Conf *toml.TomlTree
  • 日志管理 Log MultiLogger
  • http路由 Mux *mux.Router
  • 站点根目录 DocRoot string
  • 安全的ShutDown

toml

前文说过选用 TOML 格式作为配置文件. 这也是作者第一次使用 TOML. 在当前的版本下有几点体会

  • 虽然类型是 ,但是读取配置数据的时候只能从根对象读取, 这与go-toml内部实现有关
  • 由于Get等方法返回的都是interface{}, 所以要用到 type assertion

大量使用type assertion的写法可能会让使用者不喜. 作者感觉可以接受.

main

随着项目的进展作者发现在控制台 Ctrl+C 并不会立即结束进程, 这应该是受 socket 释放周期影响. 到底该如何处理, 现在还不明朗.

静态文件

对于裸奔的服务器, 完成静态文件访问是最基本的. 路由分派器gorilla/mux没有提供静态文件支持, 这很正常, 这不是路由负责的, 要由应用自己完成. TypePress采用这样的路由方式

log

文件日志是最常见的日志方案. TypePress选用的log包提供了很好的机制,但是没有提供文件日志. 没关系, 自己实现. 主要做了2件事

  • 注册到OnShutDown,以便正常的关闭日志文件

GracefulListen

ShutDown的时候应该关闭监听. 所以就有了全局的 GracefulListen, ShutDown的行为应该由控制器负责. 当前还没有具体实现.

注意