视图目录结构

首先对于代码来说视图对应的就是模板文件.
前章曾列出下面的目录结构, 本章逐个解说.

  1. views // 视图(模板)文件所在base目录
  2. └───typepress // 选用的视图方案以子目录的形式存在, 这是缺省提供的方案
  3. ├───layout.html // layout 支持, 控制器可设定
  4. └───install // 安装控制器(路由名称)对应的视图文件目录, 控制器可设定.
  5. └───get.tmpl // 视图文件, 控制器可设定. 缺省依据 request.Method 计算.

base模板目录

所有视图代码都在此目录下.

模板目录

也就是上面结构中的typepress方案目录. 每一个视图方案都以子目录的形式存在于base模板目录下, 所有子目录和文件都以纯小写命名. typepress是缺省模板目录.
TypePress计划支持第三方模板. 这就需要一个命名规则. 这个规则很简单

  • 用域名命名
  • 用电子邮件地址

我们知道在未来可能会出现无点域名, 这种是无法支持的特例.
同样电子邮件的格式也要有所限定, 只支持纯ASCII字符组成的邮件地址.
这两点小小的限制是完全可以被接受的.
很明显这两项都具有可识别特征, 可以用路由进行控制. 在路由控制之下甚至让浏览器通过URL访问相应资源文件, 这并不难实现.
在写这几句话的时候, 作者突然意识到 typepress 这个缺省模板的名字也应该改了, 改成 typepress.org.

Layout

layout是一个文件, 位于模板目录下.
layout是个很好的模板组织形式. 虽然TypePress要求使用layout文件, 如果开发者不喜这种方法. 那最简单的方式就是定义一个只含有

  1. {{content}}

的layout文件就可以.

模板文件目录

模板文件目录位于base模板目录下. 鉴于模板文件可能很多, 增加这一级目录便于管理模板文件. 此目录的名字是有开发者自行定义的. 匹配规则优先级如下

  1. 控制器中通过KeyViewDir设定
  2. 以控制器名字自动设定
  3. Request.URL.Path自动设定

模板文件

模板文件位于模板目录下. 默认的模板文件扩展名是.tmpl. 文件匹配规则优先级如下

  1. 控制器中通过KeyViewFiles设定(全名包括扩展名)
  2. strings.ToLower(Request.Method) + TplExt自动设定. TplExt是个全局变量, 可以通过配置设定, 默认.tmpl

最终传递给Template.ParseFiles的文件都是处理后的绝对路径.