pakku

package module
v0.0.8 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 18, 2024 License: MIT Imports: 14 Imported by: 0

README

pakku 帕克

pakku 的核心是提供一个对象加载的环境, 对类型为`ipakku.Module`的对象进行加载, 通过对各个`Module`加载节点事件的监听, 提供额外的辅助功能. 如依赖注入、自动完成配置值等操作. 其核心轻量无且三方引用依赖. 使用内置的几个模块, 便可快速搭建一个简单的服务或程序.

内置的模块

pakku 默认实现了AppConfig(配置模块)、AppCache(缓存模块)、AppEvent(事件模块)、AppService(NET服务模块)以满足一个基本的服务运行环境. 如需使用默认的接口定义但又需要使用其他方式实现, 可通过重新实现对应`ipakku/Ixxx`的接口后, 重新指定默认调用实例即可(ipakku.Override.RegisterPakkuModuleImplement).
名字 可重写接口类 描述
AppConfig ipakku.IConfig 使用json格式存储的配置实现, 文件存放在启动目录下./.conf/{appName}.json
AppCache ipakku.ICache 使用map实现的本地内存缓存, 如需使用其他缓存机制, 如redis需要自己实现
AppEvent ipakku.IEvent 默认没有实现此接口, 需要自己实现, 如: kafka等
AppService - 默认实现了http服务和rpc服务, 不可重写, 但可选是否启用该模块

特殊标签(tag)

通过标注在struct的特殊标签值, 来实现一些辅助功能. 
TAG 所属模块 作用域 格式 描述
@autowired Loader(加载器) struct成员字段 @autowired:"模块名" 通过指定该标签, 可实现依赖对象自动注入
@autoConfig AppConfig(配置模块) struct成员字段 @autoConfig:"配置路径" 标注当前字段是个配置struct, 可选'配置路径'参数
@value AppConfig(配置模块) struct成员字段 @value:"配置路径" 通过'配置路径'查找并自动赋值对应字段, 可选'配置路径'参数

如何使用

参考'pakkuboot_example_test.go'文件示例
builder := NewApplication("app-example-basicnetservice")    // 实例构建器
app := builder.
    PakkuConfigure().SetLoggerLevel(logs.DEBUG).            // 日志级别设置为DEBUG
    PakkuModules().EnableAppConfig().EnableAppService().    // 默认模块启用: 配置模块、网络服务模块
    // CustomModules().AddModule(new(exampleModule)).       // 自定义模块加载
    BootStart()                                             // 启动实例

// 获取内部的一个模块, 这里使用 AppService 用于开启一个服务
// var service ipakku.AppService
// if err := app.Modules().GetModules(&service); nil != err {
// 	logs.Panicln(err)
// }
service := app.PakkuModules().GetAppService()

// 设置一个静态页面路径
if err := service.SetStaticDIR("/", "./", nil); nil != err {
    logs.Panicln(err)
}

// 手工注册一个请求路径(可使用Controller接口批量注册)
if err := service.Get("/hello", func(rw http.ResponseWriter, _ *http.Request) {
    rw.Write([]byte("hello!"))
}); nil != err {
    logs.Panicln(err)
}

// 启动服务
service.StartHTTP(ipakku.HTTPServiceConfig{ListenAddr: "127.0.0.1:8080"})

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewApplication

func NewApplication(name string) ipakku.ApplicationBootBuilder

NewApplication 新建应用加载器

Types

type ApplicationBootBuilder added in v0.0.8

type ApplicationBootBuilder struct {
	// contains filtered or unexported fields
}

ApplicationBootBuilder 程序启动引导

func (*ApplicationBootBuilder) Application added in v0.0.8

func (boot *ApplicationBootBuilder) Application() ipakku.PakkuApplication

Application 获取Application实例

func (*ApplicationBootBuilder) BootStart added in v0.0.8

BootStart 启动程序&加载模块

func (*ApplicationBootBuilder) CustomModules added in v0.0.8

func (boot *ApplicationBootBuilder) CustomModules() ipakku.CustomModuleBuilder

CustomModules 自定义模块操作

func (*ApplicationBootBuilder) ModuleEvents added in v0.0.8

func (boot *ApplicationBootBuilder) ModuleEvents() ipakku.ModuleEventBuilder

ModuleEvents 模块事件监听器

func (*ApplicationBootBuilder) PakkuConfigure added in v0.0.8

func (boot *ApplicationBootBuilder) PakkuConfigure() ipakku.PakkuConfigure

PakkuConfigure 应用配置操作

func (*ApplicationBootBuilder) PakkuModules added in v0.0.8

func (boot *ApplicationBootBuilder) PakkuModules() ipakku.PakkuModuleBuilder

PakkuModules 默认模块启用操作

type CustomModuleBuilder added in v0.0.8

type CustomModuleBuilder struct {
	// contains filtered or unexported fields
}

CustomModuleBuilder 自定义模块构造器

func (*CustomModuleBuilder) AddModule added in v0.0.8

AddModule 加载模块

func (*CustomModuleBuilder) AddModules added in v0.0.8

AddModules 加载模块

func (*CustomModuleBuilder) BootStart added in v0.0.8

func (csm *CustomModuleBuilder) BootStart() ipakku.PakkuApplication

BootStart 启动程序&加载模块

func (*CustomModuleBuilder) ModuleEvents added in v0.0.8

func (csm *CustomModuleBuilder) ModuleEvents() ipakku.ModuleEventBuilder

ModuleEvents 模块事件监听器

type ModuleEventBuilder added in v0.0.8

type ModuleEventBuilder struct {
	// contains filtered or unexported fields
}

ModuleEventBuilder 模块事件监听器

func (ModuleEventBuilder) BootStart added in v0.0.8

func (meb ModuleEventBuilder) BootStart() ipakku.PakkuApplication

BootStart 加载&启动程序

func (ModuleEventBuilder) Listen added in v0.0.8

Listen 监听模块生命周期事件

type PakkuApplication added in v0.0.8

type PakkuApplication struct {
	ipakku.Application
	// contains filtered or unexported fields
}

PakkuApplication 应用实例

func (*PakkuApplication) PakkuModules added in v0.0.8

func (pa *PakkuApplication) PakkuModules() ipakku.PakkuModulesGetter

PakkuModules 获取默认携带的模块

type PakkuConfigureBuilder added in v0.0.8

type PakkuConfigureBuilder struct {
	// contains filtered or unexported fields
}

PakkuConfigureBuilder 应用配置

func (*PakkuConfigureBuilder) CustomModules added in v0.0.8

func (pkcf *PakkuConfigureBuilder) CustomModules() ipakku.CustomModuleBuilder

PakkuModules 默认携带的模块

func (*PakkuConfigureBuilder) DisableBanner added in v0.0.8

func (pkcf *PakkuConfigureBuilder) DisableBanner() ipakku.PakkuConfigure

DisableBanner 禁止Banner输出

func (*PakkuConfigureBuilder) PakkuModules added in v0.0.8

func (pkcf *PakkuConfigureBuilder) PakkuModules() ipakku.PakkuModuleBuilder

PakkuModules 默认携带的模块

func (*PakkuConfigureBuilder) SetLoggerLevel added in v0.0.8

func (pkcf *PakkuConfigureBuilder) SetLoggerLevel(lv logs.LoggerLeve) ipakku.PakkuConfigure

SetLoggerLevel 设置日志输出级别 NONE DEBUG INFO ERROR

func (*PakkuConfigureBuilder) SetLoggerOutput added in v0.0.8

func (pkcf *PakkuConfigureBuilder) SetLoggerOutput(w io.Writer) ipakku.PakkuConfigure

SetLoggerOutput 设置日志输出方式

type PakkuModuleBuilder added in v0.0.8

type PakkuModuleBuilder struct {
	// contains filtered or unexported fields
}

PakkuModuleBuilder 默认携带模块构造器

func (*PakkuModuleBuilder) BootStart added in v0.0.8

func (pkm *PakkuModuleBuilder) BootStart() ipakku.PakkuApplication

BootStart 启动程序&加载模块

func (*PakkuModuleBuilder) CustomModules added in v0.0.8

func (pkm *PakkuModuleBuilder) CustomModules() ipakku.CustomModuleBuilder

PakkuModules 默认携带的模块

func (*PakkuModuleBuilder) EnableAppCache added in v0.0.8

func (pkm *PakkuModuleBuilder) EnableAppCache() ipakku.PakkuModuleBuilder

EnableAppCache 启用缓存模块

func (*PakkuModuleBuilder) EnableAppConfig added in v0.0.8

func (pkm *PakkuModuleBuilder) EnableAppConfig() ipakku.PakkuModuleBuilder

EnableAppConfig 启用配置模块

func (*PakkuModuleBuilder) EnableAppEvent added in v0.0.8

func (pkm *PakkuModuleBuilder) EnableAppEvent() ipakku.PakkuModuleBuilder

EnableAppEvent 启用事件模块

func (*PakkuModuleBuilder) EnableAppService added in v0.0.8

func (pkm *PakkuModuleBuilder) EnableAppService() ipakku.PakkuModuleBuilder

EnableAppService 启用网络服务[WEB|RPC]模块

func (*PakkuModuleBuilder) ModuleEvents added in v0.0.8

func (pkm *PakkuModuleBuilder) ModuleEvents() ipakku.ModuleEventBuilder

ModuleEvents 模块事件监听器

type PakkuModulesGetter added in v0.0.8

type PakkuModulesGetter struct {
	// contains filtered or unexported fields
}

PakkuModulesGetter 获取默认携带的模块

func (*PakkuModulesGetter) GetAppCache added in v0.0.8

func (pg *PakkuModulesGetter) GetAppCache() ipakku.AppCache

GetAppCache 获得缓存模块

func (*PakkuModulesGetter) GetAppConfig added in v0.0.8

func (pg *PakkuModulesGetter) GetAppConfig() ipakku.AppConfig

GetAppConfig 获得配置模块

func (*PakkuModulesGetter) GetAppEvent added in v0.0.8

func (pg *PakkuModulesGetter) GetAppEvent() ipakku.AppEvent

GetAppEvent 获得事件模块

func (*PakkuModulesGetter) GetAppService added in v0.0.8

func (pg *PakkuModulesGetter) GetAppService() ipakku.AppService

GetAppService 获得网络服务[WEB|RPC]模块

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL