Подтвердить что ты не робот

Рендеринг CSS в веб-приложении Go

Я написал очень основное веб-приложение, следуя этому учебнику. Я хочу добавить правила css во внешнюю таблицу стилей, но она не работает - когда HTML-шаблоны визуализируются, что-то идет не так, и CSS полностью игнорируется. Если я помещаю правила в теги, это работает, но я не хочу иметь дело с этим.

В веб-приложении Go, как мне сделать внешнюю таблицу стилей CSS?

4b9b3361

Ответ 1

Добавить обработчик для обработки статических файлов из указанного каталога.

например. создать каталог {server.go}/resources/и использовать

http.Handle("/resources/", http.StripPrefix("/resources/", http.FileServer(http.Dir("resources")))) 

вместе с /resources/somethingsomething.css

Причиной использования StripPrefix является то, что вы можете изменить обслуживаемый каталог, как вам угодно, но сохраняйте ссылку в HTML тем же.

например. для обслуживания из /home/www/

http.Handle("/resources/", http.StripPrefix("/resources/", http.FileServer(http.Dir("/home/www/"))))

Обратите внимание, что это приведет к тому, что список каталогов ресурсов будет открыт. Если вы хотите предотвратить это, есть хороший фрагмент в блоге фрагмента:

http://gosnip.posterous.com/disable-directory-listing-with-httpfileserver

Изменить: Posterous теперь ушел, поэтому я просто вытащил код из списка рассылки golang и разместил его здесь.

type justFilesFilesystem struct {
    fs http.FileSystem
}

func (fs justFilesFilesystem) Open(name string) (http.File, error) {
    f, err := fs.fs.Open(name)
    if err != nil {
        return nil, err
    }
    return neuteredReaddirFile{f}, nil
}

type neuteredReaddirFile struct {
    http.File
}

func (f neuteredReaddirFile) Readdir(count int) ([]os.FileInfo, error) {
    return nil, nil
}

Оригинальный пост, обсуждающий его: https://groups.google.com/forum/#!topic/golang-nuts/bStLPdIVM6w

И используйте его следующим образом:

 fs := justFilesFilesystem{http.Dir("resources/")}
 http.Handle("/resources/", http.StripPrefix("/resources/", http.FileServer(fs)))