Я новичок в Golang и пытаюсь запустить веб-сервер с помощью Go.Я уже написал html, css и js для основного макета, но у меня возникают проблемы с отображением веб-сайта после запуска сервера.
Использование этой страницы в качестве руководства ссылка .Просто используя мои собственные написанные html, CSS и JS файлы в качестве визуального макета.
Что происходит, так это то, что заголовок, нижний колонтитул и т. Д. Прекрасно сочетаются, но отображаются в виде текста в браузере, с тегами и всем остальным.Я не уверен, почему это не отображается должным образом.Я не уверен, может ли это быть, потому что я не рендеринг в виде HTML с использованием templates.HTML, но я не могу найти много информации по этому вопросу.Спасибо всем заранее!Введите код, указанный ниже: Ссылка на Github
package main
import (
"fmt"
"html/template"
"log"
"net/http"
"os"
"path/filepath"
"strings"
)
type Page struct {
Title string
}
//-------------------------------------------------------------------------------------//
//Compile templates on start
var templ = func() *template.Template {
t := template.New("")
err := filepath.Walk("./", func(path string, info os.FileInfo, err error) error {
if strings.Contains(path, ".html") {
fmt.Println(path)
_, err = t.ParseFiles(path)
if err != nil {
fmt.Println(err)
}
}
return err
})
if err != nil {
panic(err)
}
return t
}()
//---------------------------------------Page Handlers----------------------------------//
//Handler for homepage
func homepageHandler(w http.ResponseWriter, r *http.Request) {
fmt.Println("Home")
err := templ.ExecuteTemplate(w, "index", &Page{Title: "Welcome to TL;DR"})
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
}
}
//Handler for about page
func aboutHandler(w http.ResponseWriter, r *http.Request) {
fmt.Println("About")
err := templ.ExecuteTemplate(w, "about", &Page{Title: "About TL;DR"})
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
}
}
//Handler for test Page
func testHandler(w http.ResponseWriter, r *http.Request) {
if r.Method == "GET" {
fmt.Println("Test")
testT, _ := template.ParseFiles("static/test.html")
testT.Execute(w, nil)
}
}
func main() {
//--------------------------------------Routers-------------------------------------//
http.HandleFunc("/", homepageHandler)
http.HandleFunc("/about", aboutHandler)
http.HandleFunc("/test", testHandler)
http.Handle("/static/", http.StripPrefix("/static/", http.FileServer(http.Dir("static"))))
//---------------------------------------------------------------------------------//
//log to file
f, err := os.OpenFile("serverlog.log", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
if err != nil {
log.Fatalf("Error opening file: %v", err)
}
defer f.Close()
logger := log.New(f, "Logged : ", log.LstdFlags)
log.SetOutput(f)
//start server
logger.Println("Starting server on port 9090")
logger.Fatal(http.ListenAndServe(":9090", nil))
}
Редактировать: Обновлено 20181214
Каталог файлов
Снимок веб-страницы после обновления кода
Мой HTML-код в основном тот же формат, что и веб-сайт, но у меня есть некоторые JavaScript и локальные CSS-файлы, которые являются частью моего HTML (только дляпростой переход, без jquery).Может ли это повлиять на разбор?Версия Go go version go1.10.1 windows/amd64
Решено: Обновлено 20181215
Спасибо @AR за указание на проблему с моим заголовком html, содержащим дополнительные символы!