У меня есть 3 страницы: index.hml, admin.html и host.html. У меня есть javascript на страницах внутри тегов сценария. Я хочу переместить весь javascript в один файл, и он будет доступен на каждой странице.
Я пытался связать файл JS со своих html-страниц, например:
<script src="static/app.js" type= "text/javascript"></script>
но я получаю ошибку:
Uncaught SyntaxError: Unexpected token <
Я попытался поиграться с этим путем src, в том числе переместить файл app.js на тот же уровень, что и файл html, и изменить src на «app.js», но это все равно выдает то же сообщение об ошибке.
Это заставляет меня думать, что это связано с тем, как сервер рендерит файлы (используя ServeMux).
мой код:
func requestHandler(tpl *template.Template) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
tpl.Execute(w, r)
})
}
func main() {
flag.Parse()
user := template.Must(template.ParseFiles("index.html"))
admin := template.Must(template.ParseFiles("admin.html"))
host := template.Must(template.ParseFiles("host.html"))
router := http.NewServeMux()
router.Handle("/", requestHandler(user))
router.Handle("/admin", requestHandler(admin))
router.Handle("/host", requestHandler(host))
log.Fatal(http.ListenAndServe(":8081", router))
}
Я искал SO и пробовал много вещей, включая:
http.Handle("/js", http.FileServer(http.Dir("static/")))
с файлом javascript внутри static / app.js, однако это просто отображает мою страницу индекса без загрузки JS. Мне не удается загрузить файл JS на страницу.
Я также попытался прочитать файл JS, изменить тип содержимого и записать файл JS в устройство записи следующим образом:
data, err := ioutil.ReadFile("app.js")
if err != nil {
fmt.Println("error: ", err)
return
}
w.Header().Add("Content Type", "application/javascript")
w.Write(data)
однако, это просто отображает весь текст на странице, когда JS не запущен, а текст не отображается как HTML. На странице вижу:
alert("loaded");<!DOCTYPE html>
<html>
<head>
<title>Example</title>
Заголовок index.html:
<!DOCTYPE html>
<html>
<head>
<title>Chat Example</title>
</script>
<script src="static/app.js" type= "text/javascript"></script>
Я чувствую, что должен быть более простой способ загрузить JS. Это попытка 2 с дополнительным объяснением, кодом и примерами того, что я пробовал.