2017-04-25 49 views
0

我有一個去webserver的庫,並且包含js文件,所以這應該是用戶應用程序的目錄樹。 myapp是用戶應用程序,mylib是通過go get獲取的庫。Golang在不同目錄中提供靜態文件

src 
`-- github.com 
    |-- mylib 
    | |-- myJSlib 
    | `-- myGOlib 
    `-- myapp 
     |-- main.go 
     `-- static 
      |-- index.html 
      |-- js 
      `-- css 

用戶應用程序的Web服務器將服務於靜態HTML中static子目錄通過

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

我的問題是我不能包括庫的腳本到index.html因爲http.FileServer服務目錄static。天真的解決方案是我將http.FileServer的根移動到src。但是這不是我想要的解決方案,因爲在從src包含腳本時需要詳細說明。另一種解決方案是我告訴用戶將js文件移動到static目錄中,如果用戶處於生產模式並且我已經縮小了我的jslib版本,但是在需要結構化樹文件夾的開發模式下這很好,但這無法解決問題。也許我可以分開repo爲myGOlib和myJSlib,用戶可以使用go get來獲取myGOlib並將myJSlib克隆到靜態目錄中。但是我想用戶只需簡單地使用go get,並且一切都可以同時工作,而不需要再次將結構化。

任何解決方案,將不勝感激。感謝

回答

3

你可以添加第二個處理器的JavaScript,從不同的文件夾提供(甚至可能是配置):

thirdPartyDir := "<configuration driven dir name>" 
http.Handle("/", http.FileServer(http.Dir("static")) 
http.Handle("/thirdparty", http.FileServer(http.Dir(thirdPartyDir)) 

,然後在index.js您可以包含第三方代碼,如:

<script src='/thirdparty/foo.js'/> 
+0

解決方案似乎合乎邏輯,我必須嘗試它,但註冊第二處理程序時遇到困難。看來我不能註冊處理程序,除了「/」。我在瀏覽器中收到這個錯誤'GET http:// localhost:8080/thirdparty 404(Not Found)'。 – billyzaelani

+0

使用http.StripPrefix解決。謝謝 – billyzaelani

相關問題