Go語言開發:在HTML模板中引入js及其他靜態檔案
阿新 • • 發佈:2018-12-24
問題:
用go語言開發,在html頁面中,引入js檔案無效,寫在js檔案中的函式無法呼叫,也沒有報錯;js程式碼直接寫html頁面中,可以呼叫,但是看起來太亂了,不舒服。這個問題困擾了好久,在網上搜了好多資料都無法解決問題,今天終於解決了,TND,看到答案的時候,原來這麼簡單。
參考文章
Go語言引用css和js檔案
go的template模板怎麼才能引入css和js等靜態檔案?
致敬原創,為上面的兩位作者點贊。
網上的文章太多千篇一律,很多都是抄的,不解決問題。
我的問題:
在寫一個小專案的過程中,在html網頁中直接寫js程式碼,是有效的,但是將js程式碼單獨放到js檔案中就無效了,無法呼叫其中的函式,目錄大概是這樣
sszxr:blog sszxr$ tree . ├── gomod │ ├── accesscontrol.go │ ├── app.go │ ├── login.go │ ├── register.go │ └── session.go ├── main.go ├── models │ ├── article.go │ ├── homepage.go │ └── user.go ├── static │ ├── css │ │ └── login.css │ └── js │ ├── blog.js │ ├── lib │ │ ├── jquery-3.3.1.min.js │ │ └── jquery.url.js │ └── reload.min.js ├── template │ ├── accountset.html │ ├── login.html │ ├── register.html ├── utils │ ├── myUtils.go │ └── mysqlUtil.go └── validator └── regexp.go
在html頁面中是這樣引用的
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>部落格賬號 - 登入</title>
<script src="../static/js/lib/jquery-3.3.1.min.js"></script>
<script src="../static/js/lib/jquery.url.js"></script>
<script src="../static/js/blog.js"></script>
</head>
<body style="background-image:url(http://phc94on01.bkt.clouddn.com/%E5%8D%D%89.jpg);
background-size: cover;background-color: rgba(214,210,207,0.45)">
<div style="width:100%;height: 600px"></div>
看了網上的好多攻略,主要因為是Go語言的問題,Go語言太不火了,好多問題都搜不到答案,網上搜到的答案基本都不能解決問題。
參考上面兩篇文章的答案,是因為Go語言無法直接引用靜態檔案,必須要做靜態服務才能引用,而做靜態服務,大概就是要把靜態檔案,包括js檔案,css檔案的存放路徑,告訴go編譯器,不然的話,找不到檔案,所以在html頁面中無法引用js中的函式或程式碼。
也就是在main檔案中,在路由監聽前,要匯入js檔案路徑
fs := http.FileServer(http.Dir("static"))
http.Handle("/static/", http.StripPrefix("/static/", fs))
http.HandleFunc("/", app.Login)
http.HandleFunc("/login", app.Login)
http.HandleFunc("/register", app.Register)
這樣就解決問題了。