web-dev-qa-db-ja.com

GoでCSSとJSを提供する方法

Go Writing Web Applications チュートリアルに従いましたが、何らかの理由でアプリをCSSおよびJSに対応させるのに苦労しています。 Goサーバーなしで静的ページを実行すると、ページCSSは正常に機能します。一方、Goサーバーを実行すると、CSSは機能しません。

HTMLの種類は次のとおりです。

<link rel="stylesheet" href="../assets/css/bootstrap.min.css">
<link rel="stylesheet" href="../assets/css/bootstrap-theme.min.css">
<link rel="stylesheet" href="../assets/css/custom.css">

bodyタグの下:

<script src="../assets/js/jquery.min.js"></script>
<script src="../assets/js/bootstrap.min.js"></script>

ファイルツリーは次のようになります。

go-affect/
├── data
│   └── …
├── static
│   ├── css
│   │   └── …
│   └── js
│   │   └── …
├── tmpl
│   ├── edit.html
│   ├── index.html
│   └── view.html
└── main.go

Goアプリケーションを取得して、必要なCSSとJavaScriptを提供するにはどうすればよいですか?

問題はそれ以来解決されました、ここに作業メインがあります:

func main() {
    http.HandleFunc("/view/", makeHandler(viewHandler))
    http.HandleFunc("/edit/", makeHandler(editHandler))
    http.HandleFunc("/save/", makeHandler(saveHandler))
    http.HandleFunc("/index/", makeHandler(indexHandler))


    http.Handle("/static/", http.StripPrefix("/static/", http.FileServer(http.Dir("static"))))

    http.ListenAndServe(":8080", nil)
}

私が使用しているハンドラーの例を次に示します。

func indexHandler(w http.ResponseWriter, r *http.Request, title string) {
    p := &Page{Title: title}
    err := templates.ExecuteTemplate(w, "index.html", p)
    if err != nil {
        http.Error(w, err.Error(), http.StatusInternalServerError)
    }
}
14
bmacrevolution
http.Handle("/", http.FileServer(http.Dir("css/")))

/cssディレクトリを提供します。もちろん、選択したパスでディレクトリを提供できます。

おそらく、静的パスが他のパスの邪魔にならないことを確認して、このようなものを使用したいでしょう。

http.Handle("/static/", http.StripPrefix("/static/", http.FileServer(http.Dir("static"))))

jscssの両方をプロジェクトのstaticディレクトリに配置します。これにより、domain.com/static/css/filename.cssおよびdomain.com/static/js/filename.jsで提供されます

StripPrefixメソッドはプレフィックスを削除するので、たとえば、検索しようとしません。 static/css/filename.cssstaticディレクトリにありますが、もちろん見つかりません。 staticディレクトリでcss/filename.cssを探しますが、これは正しいでしょう。

19
RayfenWindspear

Apacheサーバーのcss dirへのリンクをテンプレートファイルのheadセクションに追加しました。 goアプリケーションが実行しているディレクトリの下に、goアプリケーションで使用されるテンプレートとデータファイルを保持します。この例では、cgi-bin。

テンプレートは、ApacheサーバーのCSSを使用しますassets/cssディレクトリ:

<link rel="stylesheet" href="/assets/css/main.css" />

cgi-bin dirからアプリを実行

スタイルシートはApacheのアセット/ cssディレクトリから提供されます

0
Lyn Samuel