Golang在不同目录

时间:2017-04-25 00:08:56

标签: javascript go

我有一个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中运行,而无需再次构建结构。

任何解决方案都会受到赞赏。感谢

1 个答案:

答案 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'/>