登录
首页 >  Golang >  Go问答

Go 模板生命周期

来源:stackoverflow

时间:2024-04-11 21:33:31 477浏览 收藏

小伙伴们有没有觉得学习Golang很有意思?有意思就对了!今天就给大家带来《Go 模板生命周期》,以下内容将会涉及到,若是在学习中对其中部分知识点有疑问,或许看了本文就能帮到你!

问题内容

在我的 go 模板中,我有一个名为“asset”的函数:

<html>
  {{ asset "application.css" }}
</html>

该函数打开一个 webpack manifest.json 并找到相应的哈希文件:

func asset(s string) string {
  data, _ := ioutil.ReadFile("manifest.json")
  // do stuff with data
  return filename
}

我的问题是关于对性能的影响。这个函数什么时候被调用?是每次执行模板时都打开manifest文件;每次用户访问该页面时?或者是在初始 template.new("").parsefiles() 调用中调用?

在应用程序启动时打开文件并将文件名映射存储在全局变量中会更好吗?这对我来说更有意义,但是处理这个问题的最佳方法是什么?


解决方案


每次执行模板时都会调用注册的asset()函数,从而每次都会打开并读取文件“manifest.json”

如果其内容没有更改,则仅在第一次使用时加载它一次,或者更好的是在应用程序启动时加载它,这可能是在包初始化期间(在包 init() 函数中)。

如果这样做,您可以将 filename 传递给模板执行,因此它甚至不需要注册自定义函数。

好了,本文到此结束,带大家了解了《Go 模板生命周期》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多Golang知识!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>