我刚刚阅读了 gin 的文档,发现有两种不同的方法将资产文件夹设置到服务器,一种是使用路由器的
Static()
方法,如下所示:
package main
import "github.com/gin-gonic/gin"
func main() {
r := gin.Default()
r.Static("/assets", "./assets")
那么另一种是使用静态中间件,如下:
package main
import (
"github.com/gin-gonic/gin"
"github.com/gin-contrib/static"
)
func main() {
r := gin.Default()
r.Use(static.Serve("/", static.LocalFile("./assets", false)))
这2种方式在速度、副作用等方面有什么区别吗?
一个重要的区别是
r.Use(static.Serve("/", static.LocalFile("./assets", false)))
是作为中间件实现的,而 r.Static("/assets", "./assets")
是作为路由实现的。
因此,路由器方法使用通配符,这最终会影响您构建其他路由的方式。您可以使用中间件方法在
/
上提供服务,没有问题,但如果您使用路由器方法尝试相同的操作,它会在启动时出现恐慌,因为您在所有路径的根上放置了通配符。