程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了开始,AppEngine:如何为应用程序构建模板大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决开始,AppENGIne:如何为应用程序构建模板?

开发过程中遇到开始,AppENGIne:如何为应用程序构建模板的问题如何解决?下面主要结合日常开发的经验,给出你关于开始,AppENGIne:如何为应用程序构建模板的解决方法建议,希望对你解决开始,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)
  }
}

这种方法非常令人兴奋,因为它使应用程序/软件包的共享变得微不足道。如果我编写了一个处理身份验证的程序包,则该程序包获取/authURL的所有权。然后,任何将软件包立即添加到其产品根目录的开发人员都具有所有功能。他们要做的就是创建一个基本模板(templates/base.HTML)并将其用户定向到/auth

解决方法

人们如何在基于Go的AppENGIne应用程序中处理模板的使用?

具体来说,我正在寻找一个具有以下功能的项目结构:

  • 模板和部分模板的分层(目录)结构
  • 请允许我在模板上使用HTML工具/编辑器(在xxx.go文件中嵌入模板文本使此操作很困难)
  • 在开发服务器上时自动重新加载模板文本

潜在的绊脚石是:

  • template.ParseGlob()不会递归遍历。
  • 出于性能原因,建议不要将模板作为原始文本文件上传(因为这些文本文件与执行代码位于不同的服务器上)。

请注意,我不是在寻找使用模板包的教程/示例。这更多是一个应用程序结构问题。话如此,如果您有解决上述问题的代码,我很乐意看到。提前致谢。

大佬总结

以上是大佬教程为你收集整理的开始,AppEngine:如何为应用程序构建模板全部内容,希望文章能够帮你解决开始,AppEngine:如何为应用程序构建模板所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:开始