Статические CSS-файлы на сервере go / golang - PullRequest
0 голосов
/ 22 сентября 2018

Как мне обслуживать статические CSS-файлы в go (go версия go1.9.1 linux / amd64)?

Мой текущий код не работает (он показывает веб-сайт, но не видит css).Вот моя попытка использовать стандартную обработку файлов с помощью обработчика go.Когда я захожу в исходный код страницы и нажимаю ссылку на css / styles.css, она появляется, она видна и перенаправляет правильно (под правильным URL).Я предполагаю, что мне не хватает знаний о каком-то шаге парсинга.

package main

import (
    "html/template"
    "net/http"
    "fmt"
)

const (
    PORT = ":3000"
    HOST = "localhost"
)

func handleBooks(w http.ResponseWriter, r *http.Request) {
    tmpl := template.Must(template.ParseFiles("books.html"))
    tmpl.Execute(w)
}

func main() {
    fs := http.FileServer(http.Dir("css"))
    http.Handle("/css/", http.StripPrefix("/css/", fs))

    http.HandleFunc("/books", handleBooks)
    fmt.Println("Listening on " + HOST + PORT)
    http.ListenAndServe(PORT, nil)
}

style.css

.body {
    margin-left: auto;
    margin-right: auto;
    width: 1000px;
}

books.html

<html>
<head>
<title>Books</title>
<link rel="stylesheet" href="css/style.css" type="text/css">
</head>
<body>
<ul>
    books
        <li>book1</li>
        <li>book2</li>
</ul>
</body>
</html>

Мое дерево каталогов:

  • Источник:
    • books.html
    • main.go
    • css
      • style.css

1 Ответ

0 голосов
/ 22 сентября 2018

Кажется, что проблема была с этой частью:

fs := http.FileServer(http.Dir("css"))
http.Handle("/css/", http.StripPrefix("/css/", fs)) 

После того, как я очистил кеш, оказалось, что косая черта в первом аргументе http.Handle необходима.Большое спасибо mkopriva, без тебя я бы этого не проверил.

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