亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 Go 模板中包含 js 文件

在 Go 模板中包含 js 文件

Go
慕工程0101907 2021-09-20 11:00:43
我最近開始學習圍棋。我得到了一個像 web 應用程序一樣的示例。我有:/* tick-tock.go */package mainimport (    "fmt"    "io/ioutil"    "log"    "net/http")// Content for the main html page..var page = `<html>           <head>             <script type="text/javascript"               src="http://localhost:8081/jquery.min.js">             </script>             <style>                div {                 font-family: "Times New Roman", Georgia, Serif;                 font-size: 1em;                 width: 13.3em;                 padding: 8px 8px;                  border: 2px solid #2B1B17;                 color: #2B1B17;                 text-shadow: 1px 1px #E5E4E2;                 background: #FFFFFF;               }             </style>           </head>           <body>             <h2 align=center>Go Timer </h2>             <div id="output" style="width: 30%; height: 63%; overflow-y: scroll; float:left;"></div>             <div id="v1" style="width: 50%; height: 30%; overflow-y: scroll; float:left;"></div>             <div id="v2" style="width: 50%; height: 30%; overflow-y: scroll; float:left;"></div>             <input id="sett" type="submit" name="sett" value="Settings" onclick="changeUrl()">             <script type="text/javascript">               var myDelay;               $(document).ready(function ()                {                   $("#output").append("Waiting for system time..");                   myDelay = setInterval("delayedPost()", 1000);                               });               function delayedPost()                {                 $.post("http://localhost:9999/dev", "", function(data, status)                  {                    //$("#output").empty();                    $("#output").prepend(data);                 });我無法加載本地jquery.min.js. 我寫的src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"時候已經加載了。如何加載本地js文件?我不擅長用 Go 編寫代碼,也沒有編寫完整的代碼。所以請盡量解釋得很簡單。提前致謝!
查看完整描述

1 回答

?
catspeake

TA貢獻1111條經驗 獲得超0個贊

您需要 aHandler或 a在請求時HandlerFunc將文件內容 ( jquery.min.js) 發送到 Web 瀏覽器。


您有 3 個選擇:


手動操作

這是更復雜的解決方案。它看起來就像在您的處理程序函數中讀取文件的內容,設置正確的響應內容類型 ( application/javascript) 并將內容(即 a []byte)發送到響應。


注意事項:讀取文件時,必須指定絕對路徑。如果您指定相對路徑,請確保該文件位于您啟動應用程序的當前文件夾(工作目錄)中。


例子:


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

    data, err := ioutil.ReadFile("jquery.min.js")

    if err != nil {

        http.Error(w, "Couldn't read file", http.StatusInternalServerError)

        return

    }

    w.Header().Set("Content-Type", "application/javascript; charset=utf-8")

    w.Write(data)

}


func main() {

    http.HandleFunc("/jquery.min.js", SendJqueryJs)

    panic(http.ListenAndServe(":8081", nil))

}

上面的例子只能提供 1 個文件:jquery.min.js對于請求:


http://localhost:8081/jquery.min.js

利用 http.ServeFile()

這更容易:該函數http.ServeFile()能夠將一個文件的內容發送到指定的響應。您仍然需要創建一個函數或處理程序來使用它,但它會為您完成剩下的工作:


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

    http.ServeFile(w, r, "jquery.min.js")

}

利用 http.FileServer()

如果您需要提供多個靜態文件,這就是FileServer()函數派上用場的地方,它返回一個Handler自動為您本地文件系統提供的文件,這些文件是您指定的根文件夾的后代。


這種解決方案更加靈活:它可以發送多種類型的多個文件,自動檢測和設置內容類型。處理程序還能夠呈現 HTML 頁面,以列出帶有文件鏈接和父/子文件夾鏈接的目錄內容。


例子:


http.Handle("/tmpfiles/",

    http.StripPrefix("/tmpfiles/", http.FileServer(http.Dir("/tmp"))))

這將Handler在 URL 上注冊一個,該 URL/tmpfiles/提供在/tmp文件夾中本地文件系統中找到的文件。因此,例如以下<script>鏈接:


<script type="text/javascript" src="/tmpfiles/jquery.min.js">

/tmp/jsquery.min.js將從服務器獲取文件。


查看此答案,其中詳細介紹了如何使用/啟動靜態文件服務器。


查看完整回答
反對 回復 2021-09-20
  • 1 回答
  • 0 關注
  • 296 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號