小编典典

在Go Web应用程序中渲染CSS

go

教程之后,我编写了一个非常基本的Web应用程序。我想在外部样式表中添加CSS规则,但是它不起作用-
呈现HTML模板时,出现了问题,CSS被完全忽略了。如果我将规则放在标签中,则可以使用,但是我不想处理。

在Go Web应用程序中,如何呈现外部CSS样式表?


阅读 252

收藏
2020-07-02

共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/"))))

请注意,这将使资源目录列表保持打开状态。如果您想避免这种情况,请在go snippet博客上找到一个不错的摘录:

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)))
2020-07-02