javascript - 为具有需要编译的静态 Assets 的项目推荐的 Go 项目结构和构建系统?

标签 javascript node.js git go

我正在为 Web 应用程序使用 Go 创建服务器。该应用程序由 Go 代码组成,它将充当应用程序的 http 服务器和 websocket 服务器。它还将包括由 Go 代码提供的静态 Assets ,例如 html/css/javascript/images/等。我打算使用 go-bindata或者相当于打包最终的静态 Assets 。所需的部署形式是捆绑了所有静态 Assets 的单个二进制可执行文件。

然而,javascript Assets 的构建和组织方式需要一个编译步骤,然后才能打包到 Go 源代码中,以便包含在编译后的二进制文件中。这将通过 npm scripts/webpack/gulp/equivalent 来完成。

我已经阅读了关于 recommended project structure 的官方 Go 文档,但它似乎并没有解决我的用例。

我不知道前端代码和后端代码应该放在同一个 git repo 中还是分开的。我不知道哪个构建过程应该处理运行 javascript 编译过程、go-bindata 过程和 go build 过程。是否有推荐的方法来管理此类项目或类似成功项目的一些示例?

最佳答案

这是我的做法:

$GOPATH/src/github.com/myname/myproject:
-main.go //handlers and code
-static.go //generated
-static
    -js
      -foo.js
    -html
    -css
    -img

我使用 github.com/mjibson/escstatic 中的所有内容转换为 static.go 中的虚拟文件系统。如果有额外的任务来生成 css/js(我运行 typescript 编译器),这些可以在您嵌入 Assets 之前运行。

所有这些都连接到带有注释的go generate:

//go:generate sass or tsc or grunt or whatever
//go:generate esc -o static.go static

关于javascript - 为具有需要编译的静态 Assets 的项目推荐的 Go 项目结构和构建系统?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33508213/

相关文章:

javascript - 如何将html表单的内容保存为.html页面

javascript - 使用 Google Apps 脚本和 UiApp() 填充饼图

git - 忽略目录 .gitignore 下的所有文件类型

linux - 使用 GIT 从 Windows 机器克隆到 Linux 网络服务器(内部)

javascript - 如何强制用户在 JavaScript 加载之前不要点击(灯箱)

javascript - 在按钮按下时动态添加表单元素,这些元素在页面重新加载后保留

node.js - 使用 Sequelize 和 Postgres 发送 POST 请求后,为什么我的外键列返回两次?

python - git-clean 与 GitPython

javascript - Gulp 连续生成图像

node.js - 如何在 Sails.js 和 Waterline 中执行 SQL 连接和关系?