app/views/ 是唯一合法模板根目录,视图须按控制器名严格嵌套(如 HomeController → app/views/Home/),目录名大小写敏感,文件名不敏感;layouts/ 和 partials/ 仅为约定命名的子目录,路径均相对于 app/views/;RenderTemplate 路径仍以 app/views/ 为根;热重载仅监控 app/ 目录。

app/views/ 是唯一合法的模板根目录,其他位置放了也无效。
视图文件必须按控制器名严格嵌套到子目录
Revel 不会扫描 app/views/ 下的平铺文件,也不会自动转换大小写。比如控制器是 HomeController,对应视图就必须放在 app/views/Home/(首字母大写、与类名完全一致),不能是 home/ 或 homecontroller/。
- 错误路径:
app/views/index.html→ Revel 直接忽略 - 错误路径:
app/views/home/index.html→ 404,找不到匹配控制器 - 正确路径:
app/views/Home/Index.html或app/views/Home/index.html(文件名大小写不敏感,但目录名敏感)
layouts/ 和 partials/ 必须放在 app/views/ 下一级
布局和片段不是特殊目录,只是约定命名的普通子目录。Revel 不识别它们的语义,全靠模板里 {{template}} 的路径引用生效。
-
layouts/main.html:需用{{yield}},且调用时必须传参.,如{{template "layouts/main.html" .}} -
partials/_nav.html:可被任意页面通过{{template "partials/_nav.html" .}}包含 - 路径都是相对于
app/views/,不加扩展名,也不支持../向上跳转
控制器方法名决定默认渲染路径,但可显式覆盖
Revel 默认按 ControllerName/MethodName.html 查找模板。例如 HomeController.Index() 自动尝试渲染 app/views/Home/Index.html。
- 若想改用其他模板,调用
c.RenderTemplate("Other/View"),路径仍以app/views/为根 -
c.Render()不传参数时才走默认路径;传了字符串就完全由你控制 - 注意:即使用了
RenderTemplate,目标文件仍必须在app/views/下,否则 panic
热重载只监控 app/ 目录,app/views/ 改动立即生效
Revel 开发服务器会监听整个 app/ 目录树,包括 app/views/ 及其所有子目录。修改 layouts/main.html 或 partials/_footer.html 后刷新页面即可看到效果。
- 但
public/下的静态资源(如public/css/app.css)不触发重载,需手动刷新浏览器或配合 livereload 工具 - 如果改了
app/views/外的任何地方(比如conf/app.conf),Revel 不会自动重启,得自己 Ctrl+C 再revel run
app/views/ 的绝对权威性——它不像某些框架允许配置视图根路径,这里没商量余地,错一个字母就 404。


















