人们如何在基于Go的AppEngine应用程序中处理模板的使用?
具体来说,我正在寻找一个具有以下功能的项目结构:
潜在的绊脚石是:
请注意,我不是在寻找使用模板包的教程/示例。这更多是一个应用程序结构问题。话虽如此,如果您有解决上述问题的代码,我很乐意看到。提前致谢。
我最喜欢的Go功能之一就是能够轻松地在包内添加处理程序。这大大简化了编写模块化代码的过程。
例如:
档案结构
|-- app.yaml
|-- app
| +-- http.go
|-- templates
| +-- base.html
+-- github.com
+-- storeski
+-- appengine
|-- products
| |-- http.go
| +-- templates
| |-- list.html
| +-- detail.html
+-- account
|-- http.go
+-- templates
|-- overview.html
+-- notifications.html
每个软件包都有一个http.go文件,该文件拥有url前缀的所有权。例如,products
下面的包github.com/storeski/appengine/products
将拥有任何以开头的入站URL
/products
。
使用这种模块化方法,将模板存储在products
包中是有益的。如果您希望为站点维护一致的基本模板,则可以在扩展位置建立约定templates/base.html
。
例
templates / base.html
<!DOCTYPE HTML>
<html>
<head>
<title>{{.Store.Title}}</title>
</head>
<body>
<div id="content">
{{template "content" .}}
</div>
</body>
</html>
_github.com/storeski/appengine/products/templates/list.html_
{{define "content"}}
<h1> Products List </h1>
{{end}}
_github.com/storeski/appengine/products/http.go_
func init() {
http.HandleFunc("/products", listHandler)
}
var listTmpl = template.Must(template.ParseFiles("templates/base.html",
"github.com/storeski/appengine/products/templates/list.html"))
func listHandler(w http.ResponseWriter, r *http.Request) {
tc := make(map[string]interface{})
tc["Store"] = Store
tc["Products"] = Products
if err := listTmpl.Execute(w, tc); err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
}
}
这种方法非常令人兴奋,因为它使应用程序/软件包的共享变得微不足道。如果我编写了一个处理身份验证的程序包,则该程序包获取/auth
URL的所有权。然后,任何将软件包立即添加到其产品根目录的开发人员都具有所有功能。他们要做的就是创建一个基本模板(templates/base.html
)并将其用户定向到/auth
。
问题内容: 我想开始用Java进行Web开发。我不知道如何开始,学习什么或学习和使用的最佳Web框架是什么。帮帮我? 问题答案: 我认为,您只是Web应用程序的新手,而不是Java本身的新手。 首先,我可以为前端推荐Apache Wicket框架。他们的网站上有很多示例,邮件列表是上手的好地方,而Wicket in Action 是令人愉快的阅读。 如果要使用Java Server Pages(J
问题内容: 我通常在Linux系统上工作,但遇到一种情况,我需要编写一个客户端应用程序,该应用程序可以作为服务在Windows上运行。有人可以帮助我或指导我如何在Windows环境下构建MenuBar应用程序(例如Dropbox),该应用程序从操作系统启动开始,图标位于TaskBar中,然后单击该应用程序图标将显示一个菜单。 我的脚本语言是python。谢谢。 问题答案: 您可以使用pywin32
问题内容: 对于这个问题,我实际上并没有太多的摆动或GUI设计方面的经验(大学中的一些WPF应用程序的水平差不多),但是我的任务是在工作中重构摆动旧式应用程序的一部分。 我被要求重构的部分围绕一个弹出窗口,该窗口可以根据特定的值对象以三种不同的格式显示。这3种不同的格式都共享一些基本字段,然后有条件地确定其他字段。负责此GUI元素的类的长度约为5k,我当时认为应该将其分为三个子类,并在基类中共享这
问题内容: 我正在为NodeJS使用ExpressJS Web框架。 使用ExpressJS的人将他们的环境(开发,生产,测试…),路线等放置在。我认为这不是一个好方法,因为当您拥有大型应用程序时,app.js太大了! 我想要这个目录结构: 这是我的代码: app.js config / environment.js config / routes.js 我的代码运行良好,我认为目录的结构很漂亮。
问题内容: 是否有在 Express.js 应用程序中分解和模块化文件的通用约定?还是将所有内容保存在一个文件中很普遍? 问题答案: 我的分解如下: 我使用Exports返回相关内容。例如,在模型中,我这样做: 然后,如果我需要创建一个电话号码,则非常简单: 如果我需要使用架构,那么 (假设我们正在routes文件夹中工作,需要先上一层然后再下一层模型) 编辑4 该 快递维基 具有建立在它之上的框
问题内容: 我要做的是为我的Java应用程序构建一个docker映像,但是以下注意事项对于大多数编译语言都应适用。 在构建服务器上,我想为应用程序生成一个docker映像作为可交付成果。为此,我必须使用一些构建工具(通常是Gradle,Maven或Ant)来编译应用程序,然后将创建的JAR文件添加到docker映像中。因为我希望Docker映像仅执行JAR文件,所以我当然将从已安装Java的基本映