Go HTML / шаблон автоматически c json кодировка - PullRequest
0 голосов
/ 06 мая 2020

Хотя я предполагаю, что это может быть ошибка в шаблоне Go, и возникла проблема:

https://github.com/golang/go/issues/38895

Я хотел бы спросить здесь, «по дизайну» поведение html / template Go, особенно правило с тегом <script>. См. Ниже:

package main

import (
    "fmt"
    "html/template"
    "os"
)

type User struct {
    ID   int    `json:"id"`
    Name string `json:"name"`
}

func main() {
    u := User{1, "xrfang"}
    //without <script>
    t, _ := template.New("body").Parse("var u = {{.}}")
    t.Execute(os.Stdout, u)
    fmt.Println()
    //with <script>
    t, _ = template.New("body").Parse("<script>/*var u1 = {{.}}*/ var u2 = {{.}}</script>")
    t.Execute(os.Stdout, u)
    fmt.Println()
}

Шаблон без <script> сгенерированной строки такой же, как вывод go s %+v fmt string. Но версия <script> сгенерировала JSON, и , код между /* ... */ автоматически удаляется ??

1 Ответ

4 голосов
/ 06 мая 2020

Шаблон без сгенерированной строки такой же, как вывод go 's% + v fmt string. Но версия сгенерировала JSON, а код между / * ... * / автоматически удаляется ??

Да. Это сделано намеренно. Экранирование в html / шаблоне зависит от контекста c, поскольку оно должно быть определено контекстом c, чтобы быть безопасным, как описано в пакете do c.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...