我有一个go webserver的库,也包含js文件,所以这应该是用户app的目录树。 myapp
是用户应用,mylib
是通过go get
获取的库。
src
`-- github.com
|-- mylib
| |-- myJSlib
| `-- myGOlib
`-- myapp
|-- main.go
`-- static
|-- index.html
|-- js
`-- css
用户应用的网络服务器将通过
在static
子目录中提供静态html
http.Handle("/", http.FileServer(http.Dir("static"))
我的问题是我无法将库的脚本包含到index.html
中,因为http.FileServer
在目录static
中提供。天真的解决方案是我将http.FileServer
的根移动到src
。但这不是我想要的解决方案,因为在包含来自src
的脚本时要详细说明。另一个解决方案是我告诉用户将js文件移动到static
目录,如果用户处于生产模式并且我已经缩小了我的jslib版本但是在开发模式下需要结构化树文件夹,那就没问题了解决它。也许我可以为myGOlib和myJSlib分离repo,用户可以使用go get
获取myGOlib并将myJSlib克隆到静态目录中。但我希望用户只需简单地使用go get
,并且所有内容都可以在lib中运行,而无需再次构建结构。
任何解决方案都会受到赞赏。感谢
答案 0 :(得分: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'/>