基于FX构建大型Golang应用

Uber开源的FX可以帮助Go应用解耦依赖,实现更好的代码复用。原文: How to build large Golang applications using FX

构建复杂的Go应用程序可能会引入很多耦合
构建复杂的Go应用程序可能会引入很多耦合

Golang是一种流行编程语言,功能强大,但人们还是会发现在处理依赖关系的同时组织大型代码库很复杂。

Go开发人员有时必须将依赖项的引用传递给其他人,从而造成重用代码很困难,并造成技术(如数据库引擎或HTTP服务器)与业务代码紧密耦合。

FX是由Uber创建的依赖注入工具,可以帮助我们避免不正确的模式,比如包中的init函数和传递依赖的全局变量,从而有助于重用代码。

本文将通过创建一个示例web应用,使用FX处理文本片段,以避免Golang代码中的紧耦合。

代码结构

首先定义代码结构:

lib/
  config/
  db/
  http/

config.yml
main.go

utils/

该架构将应用程序的不同参与者分成自己的Go包,这样如果需要替换DB技术就会很有帮助。

每个包定义向其他包公开的接口及其实现。

main.go文件将是依赖项的主要注入点,并将运行应用程序。

最后,utils包将包含将在应用程序中重用的所有不依赖于依赖项的代码片段。

首先,编写一个基本的main.go文件:

package main

import "go.uber.org/fx"

func main() {
 app := fx.New()
 app.Run()
}

声明FX应用程序并运行。接下来我们将看到如何在这个应用程序中注入更多特性。

模块架构

为了给应用程序添加功能,我们将使用FX模块,通过它在代码库中创建边界,使代码更具可重用性。

我们从配置模块开始,包含以下文件:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

俞凡 DeepNoMind

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值