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

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

推荐答案

添加处理程序以处理指定目录中的静电文件.

例如.创建{server.go目录}/resources/并使用

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

与/resources/omethingomething.css一起使用

使用StripPrefix的原因是,您可以随意更改服务目录,但HTML中的引用保持不变.

在家里服务/

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

请注意,这将使资源目录列表保持打开状态. 如果你想防止这种情况,在Go Snippet博客上有一个很好的片段:

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

Edit: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)))

Go相关问答推荐

从Kafka到Clickhouse的实时消费数据

编辑时保留YAML文件中的单引号

如何使用我的 struct 化日志(log)记录格式使人panic ?

即使HTTP服务器正在使用GO和Protobuf、SQL Server启动,请求也不返回结果

如何在Golang中获取mp3文件的持续时间?

如何使用GO GIN从Auth0 JWT内标识检索权限

如何获取集群外go Kubernetes客户端的当前命名空间?

Golang telegram 机器人

无法在go中为docker容器写入有效的挂载路径

使用Go和Operator SDK通过API调用设置Kubernetes Pods的安装步骤

是否可以在调试期间在 VSCode 中预览 github.com/shopspring/decimal 值?

用于提取 <*n 的正则表达式(其中 n 是一个数字)

也许在 golang 中包(字符串和字符串类型不匹配)

速率限制特定端点

如何修改go gin的默认端口?我的 8080 端口正在使用中

io.Pipe 使用困难

关系不存在 GORM

Terraform 自定义提供程序 - 数据源架构

go mod tidy 错误消息:但是 go 1.16 会 Select

如何在 Go 中使用 Pact 返回错误请求(400、500)?