1. 视图目录结构
首先对于代码来说视图对应的就是模板文件. 前章曾列出下面的目录结构, 本章逐个解说.
views // 视图(模板)文件所在base目录
└───typepress // 选用的视图方案以子目录的形式存在, 这是缺省提供的方案
├───layout.html // layout 支持, 控制器可设定
└───install // 安装控制器(路由名称)对应的视图文件目录, 控制器可设定.
└───get.tmpl // 视图文件, 控制器可设定. 缺省依据 request.Method 计算.
2. base模板目录
所有视图代码都在此目录下.
3. 模板目录
也就是上面结构中的typepress方案目录. 每一个视图方案都以子目录的形式存在于base模板目录下, 所有子目录和文件都以纯小写命名. typepress是缺省模板目录. TypePress计划支持第三方模板. 这就需要一个命名规则. 这个规则很简单
- 用域名命名
- 用电子邮件地址
我们知道在未来可能会出现无点域名, 这种是无法支持的特例.
同样电子邮件的格式也要有所限定, 只支持纯ASCII字符组成的邮件地址.
这两点小小的限制是完全可以被接受的.
很明显这两项都具有可识别特征, 可以用路由进行控制. 在路由控制之下甚至让浏览器通过URL访问相应资源文件, 这并不难实现.
在写这几句话的时候, 作者突然意识到 typepress 这个缺省模板的名字也应该改了, 改成 typepress.org
.
4. Layout
layout是一个文件, 位于模板目录下. layout是个很好的模板组织形式. 虽然TypePress要求使用layout文件, 如果开发者不喜这种方法. 那最简单的方式就是定义一个只含有
{{content}}
的layout文件就可以.
5. 模板文件目录
模板文件目录位于base模板目录下. 鉴于模板文件可能很多, 增加这一级目录便于管理模板文件. 此目录的名字是有开发者自行定义的. 匹配规则优先级如下
- 控制器中通过
KeyViewDir
设定 - 以控制器名字自动设定
- 以
Request.URL.Path
自动设定
6. 模板文件
模板文件位于模板目录下. 默认的模板文件扩展名是.tmpl
. 文件匹配规则优先级如下
- 控制器中通过
KeyViewFiles
设定(全名包括扩展名) - 以
strings.ToLower(Request.Method) + TplExt
自动设定.TplExt
是个全局变量, 可以通过配置设定, 默认.tmpl
最终传递给Template.ParseFiles
的文件都是处理后的绝对路径.