Go模板生命周期

Go模板生命周期,go,templates,webpack,go-templates,Go,Templates,Webpack,Go Templates,在我的Go模板中,我有一个名为“资产”的函数: 我的问题是关于对绩效的影响。什么时候调用这个函数?每次执行模板时都要打开清单文件;每次用户访问页面时?还是在初始的template.New(“”.ParseFiles()调用中调用它 在应用程序启动时打开文件,并将文件名映射存储在全局变量中是否更好?这对我来说更有意义,但处理这个问题的最佳方法是什么?每次执行模板时都会调用注册的asset()函数,因此每次都会打开并读取文件“manifest.json” 如果它的内容没有改变,则在第一次使用时或者在

在我的Go模板中,我有一个名为“资产”的函数:

我的问题是关于对绩效的影响。什么时候调用这个函数?每次执行模板时都要打开清单文件;每次用户访问页面时?还是在初始的
template.New(“”.ParseFiles()
调用中调用它

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

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

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

如果执行此操作,则可以将
文件名
传递给模板执行,因此它甚至不需要注册自定义函数

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