猿问

在 Golang 中加载图像和 css

我在项目的根目录server.js中的包main中设置了一个路由


http.HandleFunc("/",route.IndexHandler)


将IndexHandler在封装中实现route这样的:


func IndexHandler(w http.ResponseWriter, r *http.Request) {

    data:=struct{

        Name string

    }{

        "My name",

    }

    util.RenderTemplate(w, "index", data)

}

该RenderTemplate功能在包中实现,util如下所示:


func RenderTemplate(w http.ResponseWriter, tmpl string, data interface{}) {

    cwd, _ := os.Getwd()

    t, err := template.ParseFiles(filepath.Join(cwd, "./view/" + tmpl + ".html"))

    if err != nil {

        http.Error(w, err.Error(), http.StatusInternalServerError)

        return

    }

    err = t.Execute(w, data)

    if err != nil {

        http.Error(w, err.Error(), http.StatusInternalServerError)

    }

}

项目中的目录结构如下:


/

/public/css

/public/images

/public/js

/route

/view

index.html视图位于文件夹中view,路由器位于文件夹中route


在index.html我包括这样的资源:


<link rel="stylesheet" type="text/css" href="../public/css/style.css">


<img src="../public/images/img_landing_page_mac.png">


当请求适当的路径时,index.html仍会呈现,但不会加载图像和样式表。如何将它们包含在 Golang html 模板引擎中?


拉莫斯之舞
浏览 215回答 2
2回答

狐的传说

您需要明确要求您的服务器提供静态文件。见http.FileServer在你的情况下注册另一个处理程序。http.Handle("/public/",&nbsp;http.StripPrefix("/public/",&nbsp;http.FileServer(http.Dir("public"))))

交互式爱情

就像Aruna说的,注册一个静态文件服务器句柄http.Handle("/public/",&nbsp;http.StripPrefix("/public/",&nbsp;http.FileServer(http.Dir("public"))))要使用 HTML 中的文件,只需<img&nbsp;src="/public/images/img_landing_page_mac.png">
随时随地看视频慕课网APP

相关分类

Go
我要回答