project folder
->templates
->t.tmpl
->examples
->html
->blocks
->...
->assets
->...
->index.html
存在对<link rel="stylesheet" href="./blocks/index.css">
调用,该<link rel="stylesheet" href="./blocks/index.css">
又调用examples/html/blocks/
和examples/html/assets
中的不同静态文件
我使用echo,设置如下:
e.Static("/i/blocks", "examples/html/blocks")
e.Static("/i/assets", "examples/html/assets")
e.Static("/i/blocks/body/examples/html/assets", "examples/html/assets")
e.Static("/i/blocks/logo/examples/html/assets", "examples/html/assets")
v1 := s.e.Group("/i")
v1.GET("/:page-id", s.handlePageDetails)
它按预期工作,但
我想让它更简单,而不是硬编码。
希望能这样解决:
e.Use(middleware.StaticWithConfig(middleware.StaticConfig{
Root: "examples/html",
Browse: true,
IgnoreBase: true,
}))
它似乎在本地工作,但后来发现可能是e.Static缓存或其他东西,因为它在我在更新期间重新启动IDE后停止工作。
回到square 1。
最后希望这样的东西(如果可能的话)工作:
e.Use(middleware.StaticWithConfig(middleware.StaticConfig{
Root: "examples/html",
Browse: true,
IgnoreBase: true,
Filesystem: http.FS(project.StaticFiles),
}))
在某个文件中的static.go在我的项目的根目录中
//go:embed examples/html
var StaticFiles embed.FS
不使用Echo不是一种选择。如果这不能通过中间件.StaticWithConfig实现,那么其他选项是受欢迎的,只要它看起来不像我用一堆e.Static为每一个路径的可能性。
还有它的运作方式所以有一个Get请求发到http://localhost:8080/i/:some-id- it调用template,template调用statics,这些请求看起来像i/块之类的,这就是为什么我用e.statics来删除/i/部分
2条答案
按热度按时间blpfk2vs1#
我想这可以被认为是封闭的。与@Zeke Lu进行了长时间的讨论
在他的帮助下得出的结论是前端搞砸了大时间。当它被修复时,一切都可以用一行代码完成,然后随着服务的增长,还有很多很多代码。
qhhrdooz2#
最新消息。所以我决定再玩一会儿...@Zeke Lu提供的解决方案在不改变前端的情况下完美地解决了这个问题。
我所做的就是在tmp中创建路径。是
<link rel="stylesheet" href="./blocks/index.css">
制造<link rel="stylesheet" href="/static/blocks/index.css">
中间件现在得到了它应该得到的。
这个
解决了一切没有问题,没有一堆e.Static()
在本地和docker中使用cache和all检查和复查;工作完美
感谢@Zeke Lu的提示
祝大家编码愉快。