还你以自由
还你以自由.
我将尝试在 TypePress 中通过组织代码逻辑实现这个目标. (或许需要开发其他辅助工具, 这需要您的建议和贡献)
目录调整
Template
作者此刻甚至认为 完全没有必要更新新的功能了.
闭包很容易使用, 您需要什么功能参照闭包的方法自己实现就好了.
layout.html的样子
get.tmpl
架构轮廓
- 从中您应该可以看出, 所有的模块都尽量的分目录存储
- 对于WEB应用, 最主要的就是把所有的 Handler 都控制起来, TypePress 对所有涉及的流程都留下了扩展可能.(其实就是再包装一层)
- achun/template 中闭包的使用方法让视图获得了自由, 控制器只需要设定和一个
content
view file 即可. - 的强大让控制器获得了自由
- gorilla/context 让数据绑定更巧妙灵活
执行流程
- 第一个 Handler 其实是 HandlerMux, 当时不知道写什么, 现在知道至少可以写
w.Header().Set("Server", "TypePress")
- 路由匹配失败会执行静态文件
StaticFile
方法 - 为控制器初始化对象, 此对象默认
template
是访问不到的. 支持控制器变换或者设定视图参数. - 传递
*http.Request
给fireBeforeFilter
实施控制器前置过滤 - 执行控制器 handler, 也就是路由的
HandlerFunc
, 期间可以设定对象 - 传递
*http.Request
给fireAfterFilter
实施控制器后置过滤,(也可以叫做渲染前置过滤) - 计算视图相关文件位置, 并渲染视图
- 传递
*http.Request
和渲染视图中发生的error 给fireEndRender
实现控制器完成观察者