Как изменить символы в шаблоне, заменив {{ и }} на -на Golang?

Есть хандлер
func Handler(w http.ResponseWriter, r *http.Request) {    
    var templates = template.Must(template.ParseGlob("Templates/Main/*/*"))
    var doc bytes.Buffer 
    err := templates.ExecuteTemplate(&doc, "indexPage", nil)
    if err != nil {
        http.Error(w, err.Error(), http.StatusInternalServerError)
        return
    } 
    //templates.Delims("<%", "%>").Funcs(Main_TemplateFuncs).Parse("<%шаблон   %>")    
    fmt.Fprintln(w, &doc)
}


Мне нужно переназначить символы {{ и }} , так как я использую в angularjs такие же символы.
Есть функция templates.Delims("<%", "%>"), которая переназначет их, но она работает, если после неё в Parse закинешь текст.
А у меня идёт множество файлов template.Must(template.ParseGlob("Templates/Main//")) и как мне их обработать, заменив стандартную обработку {{ и }} на <% и %> ?
  • Вопрос задан
  • 503 просмотра
Решения вопроса 2
template.Must(template.New("").Delims("<%", "%>").ParseGlob("Templates/Main/*/*"))


Плюс, вам бы нужно вынести парсинг шаблонов из хэндлера. Сейчас они у вас парсятся при каждом запросе, это очень медленно. Надо их парсить один раз при старте приложения.
Ответ написан
Комментировать
uvelichitel
@uvelichitel Куратор тега Go
habrahabr.ru/users/uvelichitel
Например сделать пустой template
templ := template.New("templ")
//поменять символы
templ.Delims("<%", "%>")
//и парсить туда
var templates = template.Must(templ.ParseGlob("Templates/Main/*/*"))   //именно туда templ.Parse...
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@mantyr
Пишу много Golang кода с удовольствием:)
Всегда можно попасть в ситуацию когда:
  • Delims менять нельзя (так как много кода уже с ним)
  • Когда Delims символы нужны только в одном месте и надо бы вывести их нативно
<script>
    var title = '{{title}}';
    var obj = {{ { }}{{ } }}       // var obj = {}
</script>
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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