是否有将包装拆分成模块化组件的标准做法?

时间:2018-12-21 20:37:00

标签: go

我正在研究具有多层功能的图书馆。我希望开发人员仅能够导入他们需要的部分,即mylib-coremylib-feature1mylib-feature2等。每个部分都位于其自己的git repo中。我还想提供一个简单的mylib包,它公开了一组默认功能,这对于刚接触该库的开发人员而言非常有用。与我要完成的工作非常相似,请参见d3.js 4+版。

我遇到的问题是

  1. 显然,您不能在软件包之间共享软件包名称。这是一个问题,因为最好导入所有所需的存储库,然后以mylib的名称提供所有可用内容。

  2. 我没有看到明显的方法来重新导出功能,以构建默认的mylib程序包。

是否有好的解决方案或更理想的方式来完成我要拍摄的内容?

1 个答案:

答案 0 :(得分:3)

回答您的问题,没有惯用的方式来完成您想要的事情。在JavaScript中,导入库并导出其成员不受干扰是很常见的。在Golang中不是这种情况。

我建议您将整个库托管在一个存储库中,并将功能拆分为软件包。 Go编译器将仅编译和使用导入的包。

关于未来的提示,Go与您以前知道的几乎任何其他语言都大不相同