Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

vnaki/ris

Repository files navigation

ris - 基于iris的插件式框架

ris是对Iris框架进一步插件式封装,定义和组合了组件、插件、中间件、日志、测试、全局实例等,方便开发者快速开发和调试,期待您的星星🌟🌟🌟🌟🌟🌟。

快速开始

package main
import (
	"github.com/vnaki/ris"
	"github.com/vnaki/ris/examples/routes"
	"github.com/vnaki/ris/middlewares"
	"github.com/vnaki/ris/plugins"
)
func main() {
	e := ris.New()
	// post max memory
	e.SetPostMemory(20 << 20)
	e.RouteMiddleware(middlewares.Cors)
	e.Plugin("logger", plugins.LoggerPlugin)
	//e.Plugin("data", plugins.MysqlPlugin)
	e.Plugin("data", plugins.SqlitePlugin)
	// default module
	e.Module("/", routes.ApiRoute)
	if err := e.Run("./config/app.yaml"); err != nil {
		panic(err)
	}
}

详细用例

see examples

框架定义

package types
import (
	"github.com/vnaki/ris/config"
	"github.com/kataras/iris/v12"
	"github.com/kataras/iris/v12/mvc"
)
// Database 数据库接口
type Database interface {
	Connect() (db.Session, error)
}
// PluginHandler 插件函数
type PluginHandler func(string, Engine) error
// Plugin 插件结构
type Plugin struct {
	// 插件名称
	Name string
	// 插件函数
	Handler PluginHandler
}
// Module 模块函数
type Module func(*mvc.Application)
// MiddlewareHandler 中间件处理
type MiddlewareHandler func(Engine) iris.Handler
// Middleware 中间件
type Middleware struct {
	// 是否路由中间件
	Route bool
	// 中间件处理
	Handler MiddlewareHandler
}
// Component 组件类型
type Component interface{}
// Worker 工作协程
type Worker func(string, Engine)
// Engine 应用引擎
type Engine interface {
	// App iris应用
	App() *iris.Application
	// Set 注册实例
	Set(name string, component Component)
 // SetPostMemory 设置POST最大内存
	SetPostMemory(memory int64)
	// Get 返回实例
	Get(name string) Component
	// Reset 重置配置
	Reset(func(c *config.Config))
	// Config 配置信息
	Config() *config.Config
	// Plugin 注册插件
	Plugin(name string, plugin PluginHandler)
	// Worker 注册工作协程
	Worker(name string, plugin Worker)
	// Module 注册模块
	Module(party string, module Module)
	// Middleware 注册通用中间件
	Middleware(handler MiddlewareHandler)
	// RouteMiddleware 路由中间件
	RouteMiddleware(middleware MiddlewareHandler)
	// IfMiddleware 注册条件中间件
	IfMiddleware(mode string, middleware MiddlewareHandler)
	// IfRouteMiddleware 注册路由条件中间件
	IfRouteMiddleware(mode string, middleware MiddlewareHandler)
	// Stop 停止服务
	Stop() error
	// Implement 自定义业务
	Implement(func() error)
	// Defer 延迟函数
	Defer(f func())
	// IsDev 是否开发环境
	IsDev() bool
	// Run 运行程序
	Run(file string) error
	// Test 执行测试
	Test(file string) error
	// Parse 解析配置
	Parse(file string, out interface{}) error
}

插件定义

package plugins
import (
	"fmt"
	"github.com/vnaki/ris/components/database"
	"github.com/vnaki/ris/types"
)
func MysqlPlugin(name string, e types.Engine) error {
	n := database.New()
	if err := e.Parse(e.Config().Mysql, n); err != nil {
		return err
	}
	sess, err := n.Connect()
	if err != nil {
		return err
	}
	e.Set(name, sess)
	e.Defer(func() {
		_ = sess.Close()
		// verbose
		fmt.Println("defer: mysql closed")
	})
	return nil
}

框架依赖

期待赞助

有了您的赞助👑,我们可以加快ris的设计和开发进度,为用户提供更高质量的软件,期待合作~

About

Plug-in design for Iris, super easy to use!

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

AltStyle によって変換されたページ (->オリジナル) /