组件 #
组件的特征是必须创建了一个实例,并常驻内存当中。
组件的属性 #
代码结构
绑定组件的属性有两种方式
project_root\
└── main.go
└── app.yml
方式一 通过配置文件加载 app.yml
hello:
message: "hello"
方式二 实例化的时候传入
langgo.Run(&hello.Instance{Message: "hello"}})
方式三 框架初始化以后加载
core.LoadComponents(&hello.Instance{})
内置组件 #
这些组件是 langgo 框架内置的组件,例如 mysql、redis、sqlite 使用这些组件可以搭建应用系统。
自定义组件 #
结构
project_root\
└── components
└── my\
└── my.go
└── main.go
└── app.yml
在自己项目的实现 core.Component 接口
package my
type Instance struct {
Message string `yaml:"message"`
}
const name = "my"
var instance *Instance
func (i *Instance) Run() error {
instance = i
return nil
}
func (i *Instance) GetName() string {
return name
}
func Get() *Instance {
return instance
}
配置
my:
message: "im custom component"
使用
package main
import (
"fmt"
"github.com/langwan/langgo"
"github.com/langwan/langgo/examples/component/custom/my"
)
func main() {
langgo.Run(&my.Instance{})
fmt.Printf("component name is `%s`, message is `%s`\n", my.Get().GetName(), my.Get().Message)
}