Какой Golang шаблонизатор выбрать и как подключить файлы динамически?

Использую стандартный шаблонизатор Go.
Есть 2 вопроса
1. Нужно запустить функцию, прописанную в самом шаблоне
2. Нужно подключить файл, прописанный в шаблоне

Ну что-то типа такого

<html>
    {{ GetFile "/js/myfile.js" }}
    {{ SayHello }}  //а функция возратит текст
    </html>


Как такое реализовать?
Я читал доки, но подкл файлы динамически не могу- только в коде go есть примеры, да и с функциями танец с бубнами что-то.
  • Вопрос задан
  • 3369 просмотров
Пригласить эксперта
Ответы на вопрос 1
mirrr
@mirrr
Программист и просто хороший человек
В родных шаблонизаторах (text/template и html/template) нет функций подключения файлов, но есть возможность подключать другие шаблоны, добавленные, например, через template.ParseFiles или template.ParseGlob.

Для начала парсим все шаблоны из каталога templates/ :
funcs := template.FuncMap{
	"SayHello": func(s string) string {
		return "Hello"
	},
}

t := template.Must(template.New("").Funcs(funcs).ParseGlob("templates/*.html"))


Дальше используем:
t.ExecuteTemplate(os.Stdout, "index.html", map[string]string{"title": "My site"})


А внутри index.html пишем:
{{template "login-form.html" .}}

В FuncMap так-же можно добавить еще какую-нибудь функцию GetFile, которая будет читать файл и отдавать его содержимое в шаблон без обработки шаблонизатором.

Но если использовать какой-нибудь gin-gonic, то все так:
r := gin.New()
r.LoadHTMLGlob("templates/*.html")

r.GET("/", func(c *gin.Context) {
	c.HTML(200, "index.html", map[string]string{"title": "My site"})
})
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы