Просмотр исходного кода

perf(template): use `ParseFS` to directly parse the embedded template data

Use ParseFS to directly parse the embedded template data, instead of manually
reading it and then using Parse.
Julien Voisin 11 месяцев назад
Родитель
Сommit
4336a0bd85
2 измененных файлов с 16 добавлено и 9 удалено
  1. 2 9
      internal/template/engine.go
  2. 14 0
      internal/template/engine_test.go

+ 2 - 9
internal/template/engine.go

@@ -55,7 +55,6 @@ func (e *Engine) ParseTemplates() error {
 		}
 		commonTemplateContents.Write(fileData)
 	}
-
 	dirEntries, err = viewTemplateFiles.ReadDir("templates/views")
 	if err != nil {
 		return err
@@ -86,15 +85,10 @@ func (e *Engine) ParseTemplates() error {
 
 	for _, dirEntry := range dirEntries {
 		templateName := dirEntry.Name()
-		fileData, err := standaloneTemplateFiles.ReadFile("templates/standalone/" + dirEntry.Name())
-		if err != nil {
-			return err
-		}
-
 		slog.Debug("Parsing template",
 			slog.String("template_name", templateName),
 		)
-		e.templates[templateName] = template.Must(template.New("base").Funcs(e.funcMap.Map()).Parse(string(fileData)))
+		e.templates[templateName] = template.Must(template.New("base").Funcs(e.funcMap.Map()).ParseFS(standaloneTemplateFiles, "templates/standalone/"+dirEntry.Name()))
 	}
 
 	return nil
@@ -130,8 +124,7 @@ func (e *Engine) Render(name string, data map[string]interface{}) []byte {
 	})
 
 	var b bytes.Buffer
-	err := tpl.ExecuteTemplate(&b, "base", data)
-	if err != nil {
+	if err := tpl.ExecuteTemplate(&b, "base", data); err != nil {
 		panic(err)
 	}
 

+ 14 - 0
internal/template/engine_test.go

@@ -0,0 +1,14 @@
+// SPDX-FileCopyrightText: Copyright The Miniflux Authors. All rights reserved.
+// SPDX-License-Identifier: Apache-2.0
+
+package template // import "miniflux.app/v2/internal/template"
+
+import (
+	"testing"
+)
+
+func TestParseTemplates(t *testing.T) {
+	if err := NewEngine(nil).ParseTemplates(); err != nil {
+		t.Fatal(err)
+	}
+}