javascript - Possibility of adding html, css, js, ... to Go server?
问题描述
I am having trouble getting files such as index.html, main.js, style.css and more on my server made in Go.
My html file works fine with javascript and css on my local file but I can not make it work on a server.
I already tried making this in my code, but it only starts html file and javascript, css, jquer, font are listed in console like the page was not found (404 Page not found).
r := mux.NewRouter()
r.Handle("/", http.FileServer(http.Dir("./static")))
r.HandleFunc("/events", eventHandler) //Ignore this
r.NotFoundHandler = http.HandlerFunc(notFound) //This is just a custom 404.
// Create and start HTTP server.
s := &http.Server{
Handler: r,
Addr: config.Address,
}
My question is:
Is there any possibility to do this without Node.js. Is there any option that will display all my javascript files and css in the html. I really would not like to get this things complicated with Node.
Note
My codes for html, css, javascript all work. My server also works, the only thing needed now is adding the files to the server.
This is what I get
This is what I should get on server.
<html>
<head>
<link rel="stylesheet" href="main.css">
<script src="jquery-3.3.1.min.js"></script>
</head>
<body id='body'>
<div class="app-body">
<div id='left' class="left">
<div class='conferenceRoom'>Conference room
<h1 class="roomName">crane
</h1>
</div>
<div class="status">
<h1 id="free_busy" class="free_busy"></h1>
<h1 id="duration" class="duration"></h1>
</div>
</div>
</div>
<div class="right">
<div class="date" id="date"></div>
<div id='eventList' class="eventList"></div>
</div>
</div>
<script src="main.js"></script>
</body>
index.html
This are my files in a directory called Website. Server is started by:
go run *.go -c config.toml
This is ran from the website folder. And this is what the files look like
解决方案
The problem is you're trying to feed a http.FileServer
to Gorilla mux's route.Handle
function. This handles a single URL, so it's only valid for the given URL, /
.
What you want for serving static files is a route.PathPrefix()
. This serves any URL path which begins with the given string, while route.Handle()
serves only a path which matches the string exactly.
package main
import (
"log"
"net/http"
"github.com/gorilla/mux"
)
func main() {
r := mux.NewRouter()
r.PathPrefix("/").Handler(http.FileServer(http.Dir("./static")))
// Create and start HTTP server.
s := &http.Server{
Handler: r,
Addr: ":8009",
}
log.Fatalln(s.ListenAndServe())
}
推荐阅读
- android - Android WebView 以编程方式关闭预测网络操作
- javascript - 当另一个模态模态在其中打开时模糊背景模态
- java - 如何在 Drools 7 中实现 Drools 5 示例
- android - 布局设计中缺少属性 - Android Studio
- javascript - 我应该如何修改 PHP 和 Javascript 文件以使复选框是强制性的?
- python - Thead.join() 只有在所有线程都完成后才帮助打印字符串
- regex - 自定义显着降价插件仅解析匹配的正则表达式的第一个实例
- python - 尽管列出了绝对路径,但在 Ubuntu 中找不到文件错误
- google-sheets - 对 ID 的数字字母组合执行 COUNTIF 的区分大小写的公式
- javascript - 问题迭代节点列表