2016-07-24 9 views
0

私は以下のように3つのファイルとフォルダを持っています。 index.htmlは、.css.js(ReactJS)、およびフォルダ/imgの画像を要求します。同じディレクトリにCSS、JS、Imagesファイルをホスティングするためのファイルサーバを提供しながら、 `html/template`で動的HTMLファイルを提供する

enter image description here

検索のかなり多くの後としてみてください、私はclient/index内のファイルのための/ URL要求にサービスを提供するために、ファイルサーバーを作るために、以下を使用することができることを知っています。

http.Handle("/", http.StripPrefix("/", http.FileServer(http.Dir("client/index")))) 

これはうまくいきます。しかし、それは静的なファイルだけを提供するので、タグ<input id='projectId' type='hidden' value={{.projectId}}/>の値を変更するなど、転送する前にhtmlファイルに何らかの変更を加えたいと思います。したがって、HandleFunc('/', handler)を登録してhtmlテンプレートを実行する必要がありますが、URL /は既にファイルサーバーの実装に使用されています。

ファイルのファイルシステムへのリクエスト(.css.js、およびフォルダimgの画像)を動的に処理する適切な方法は何ですか?

サーバー/ pghndler /インデックス/ index.go

package index 

func RegisterHandlers() { 
    http.Handle("/", http.StripPrefix("/", http.FileServer(http.Dir("client/index")))) 
    http.HandleFunc("/login", loginHandler) 
} 

答えて

1

静的な「と言う、最も簡単な方法(以下のコードは)あなたの静的なファイルを別のディレクトリにあるかのようにふりをしているように私には思えます"これは、あなたがあなたのサーバコードで次に

<link rel="stylesheet" href="static/clent.css" type="text/css"> 

に置き換えるあなたが

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

を持っていたつまり、あなたがそれらを参照するHTMLファイル(複数可)内のパスを、変更する必要があることを意味しますパスstaticのハンドラを持っているし、まだすなわち、動的なもののため/を使用することができます

func main() { 
    http.HandleFunc("/", hh_root) 
    http.Handle("/static/", http.StripPrefix("/static/", http.FileServer(http.Dir("/home/Casper/public/client/index/")))) 
    http.ListenAndServe(":8080", nil) 
} 

func hh_root(w http.ResponseWriter, r *http.Request) { 
    // generate response from template 
} 

ディレクトリにWebリソースを整理するのが一般的です"css"や "js"のようなectorは偽のパスに使うのが理にかなっているかもしれません - あなたのアプリが成長し、それをよりうまく整理したいときはもっと簡単です。

関連する問題