Go,AppEngine:如何为应用程序构建模板 [英] Go, AppEngine: How to structure templates for application
本文介绍了Go,AppEngine:如何为应用程序构建模板的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
人们如何在基于 Go 的 AppEngine 应用程序中处理模板的使用?
具体来说,我正在寻找能够提供以下内容的项目结构:
- 模板和部分模板的层次(目录)结构
- 允许我在模板上使用 HTML 工具/编辑器(在 xxx.go 文件中嵌入模板文本会使这变得困难)
- 在开发服务器上自动重新加载模板文本
潜在的绊脚石是:
- template.ParseGlob() 不会递归遍历.
- 出于性能原因,建议不要将模板作为原始文本文件上传(因为这些文本文件与执行代码驻留在不同的服务器上).
请注意,我不是在寻找使用模板包的教程/示例.这更像是一个应用程序结构问题.话虽如此,如果您有解决上述问题的代码,我很乐意看到它.提前致谢.
解决方案
我最喜欢的 Go 特性之一是能够轻松地在包内添加处理程序.这大大简化了编写模块化代码的过程.
例如:
文件结构
|-- app.yaml|-- 应用|+-- http.go|-- 模板|+-- base.html+-- github.com+-- 斯托斯基+-- 应用引擎|-- 产品||-- http.go|+-- 模板||-- 列表.html|+-- detail.html+-- 帐户|-- http.go+-- 模板|-- 概览.html+-- 通知.html
每个包都有一个 http.go 文件,该文件拥有 url 前缀的所有权.例如,github.com/storeski/appengine/products
下的 products
包将拥有以 /products
开头的任何入站 url.
采用这种模块化方法,将模板存储在 products
包中是有益的.如果您想为站点维护一个一致的基本模板,您可以建立一个约定来扩展 templates/base.html
.
示例
templates/base.html
<头><title>{{.Store.Title}}</title>头部><身体><div id="内容">{{模板内容".}}