# Meta
## 为什么会有这个项目
[Meta](https://github.com/one-meta/meta),到底为何物?其实就是我想用 Go 来写项目,不仅仅是重构魔方,后续新的项目应该也会基于这个框架。也有很多优秀的框架了,但是跟个人习惯还是有点差异,于是根据自己的需求把需要的功能加到 Web 框架里,就有了 Meta。
## 功能特性
1. 遵循 RESTful API 设计规范。
2. 基于[Go Fiber](https://gofiber.io/)Web 框架,[中间件](https://docs.gofiber.io/api/middleware)
丰富:Cache、CORS、CSRF、Limiter、Logger、RequestID 等。
3. 基于[Casbin](https://casbin.org/zh/) 的 RBAC 访问控制模型。
4. [gofiber 日志中间件](https://docs.gofiber.io/api/middleware/logger)
记录 web 日志,[uber zap](https://github.com/uber-go/zap)记录程序日志,支持日志轮转。
5. 基于[JWT](https://github.com/golang-jwt/jwt)认证,用户密码使用[bcrypt](http://golang.org/x/crypto/bcrypt)加密。
6. [swagger api](https://gofiber.iogithub.com/swaggo/swag)自动生成 swagger 文档。
7. 基于[Entgo](https://entgo.io/zh)的数据库存储,[支持多种数据库后端](https://entgo.io/zh/docs/dialects)
:MySQL、MariaDB、PostgreSQL、CockroachDB (preview)、SQLite、Gremlin、TiDB (preview);支持表自动创建及删除。
8. 基于[google Wire](https://github.com/google/wire)的依赖注入。
9. [gg](https://github.com/Xuanwo/gg) go 代码生成,自动生成 Api、Api 自动化测试案例(自动生成对象数据)、Controller、Service、Request 扩展参数;自动生成增删改查、批量创建、批量删除、任意字段搜索代码。
10. 扩展 Entgo 模板:增加各个实体的 Query、QuerySearch(任意字段搜索)、Create 的 SetEntity、UpdateOne 的 SetEntity 功能。
11. 基于 Entgo filter 的多租户实现。
12. 基于 httptest 和 fiber.Test 的单元测试,可对通用的方法实现自动化 Api 测试。
13. 基于[air](https://github.com/cosmtrek/air)go 程序热重启,可在开发中热重启。
14. 基于[gocron](github.com/go-co-op/gocron)的定时任务。
**涉及组件/框架**
[Go Fiber](https://gofiber.io/):Web 框架、[Entgo](https://entgo.io/zh):ORM、[viper](https://github.com/spf13/viper):配置文件、[Casbin](https://casbin.org/zh/) :RABC、[JWT](https://github.com/golang-jwt/jwt)、[uber zap 日志记录](https://github.com/uber-go/zap)、[lumberjack 日志轮转](https://github.com/natefinch/lumberjack)、[google Wire](https://github.com/google/wire):依赖注入、[gg](https://github.com/Xuanwo/gg):go 代码生成、[swagger api](https://github.com/swaggo/swag)、[air](https://github.com/cosmtrek/air):go 程序热重启、[gocron](github.com/go-co-op/gocron)定时任务。
## 用法步骤【建议参考 [meta wiki](https://github.com/one-meta/meta/wiki/)】
1. ent 创建模块,ent 同目录执行(app 目录执行)
`go run entgo.io/ent/cmd/ent new <moduleName>`
2. 根据实际修改`app/ent/schema`,字段、关系、Mixin 等,[参考](https://entgo.io/zh/docs/getting-started/)
3. 生成代码,ent 同目录执行(app 目录执行)
`go generate ./ent`,没有报错即正常运行
如果提示没有 entgo,则需要安装`go install entgo.io/ent/cmd/ent@latest`
如果有报错,则可能需要删除 ent 目录下 extend\_\*.go 文件
如果时间参数报错,则需要复制`data/query_param.go`到`app/ent/extend`,再`go generate ./ent`
4. 之后在项目根目录`air`运行即可
## 更多信息
1. 需要对 entgo 有一定了解
2. 权限管理需要了解 casbin
3. 依赖注入,可以参考已有的代码
没有合适的资源?快使用搜索试试~ 我知道了~
MetaGo 来写项目,不仅仅是重构魔方,后续新的项目应该也会基于这个框架。
共66个文件
go:46个
tmpl:5个
yaml:2个
需积分: 5 0 下载量 2 浏览量
2024-05-23
17:16:37
上传
评论
收藏 80KB ZIP 举报
温馨提示
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
资源推荐
资源详情
资源评论
收起资源包目录
Meta,到底为何物?其实就是我想用 Go 来写项目,不仅仅是重构魔方,后续新的项目应该也会基于这个框架。也有很多优秀的框架了,但是跟个人习惯还是有点差异,于是根据自己的需求把需要的功能加到 Web 框架里,就有了 Meta。.zip (66个子文件)
content
go.mod 4KB
go.sum 91KB
Makefile 130B
app
wire.go 653B
ent
template
data_map.tmpl 2KB
extend
update.tmpl 2KB
create.tmpl 2KB
query_param.tmpl 855B
query.tmpl 6KB
internal
schema.go 8KB
schema
systemapi.go 937B
casbinrule.go 1000B
tenant.go 1KB
user.go 944B
mixin.go 3KB
generate.go 144B
extend
.gitkeep 0B
entity
user_info.go 695B
query_param.go 356B
casbin_user.go 134B
config
log.go 651B
backend.go 2KB
config.go 2KB
auth.go 316B
cache.go 395B
wireset
log.go 2KB
casbin.go 904B
ent.go 2KB
cache.go 663B
wire_set.go 277B
data
.gitkeep 0B
api
test
util.go 4KB
common.go 2KB
main_test.go 756B
resource
model.conf 335B
.template
config.toml 4KB
Docker-Compose.yaml 2KB
Dockerfile 745B
pkg
jwt
jwt.go 2KB
middleware
auth_casbin.go 2KB
auth_jwt.go 994B
security.go 462B
wire_set.go 174B
generator
common.go 1KB
middleware.go 2KB
ent
viewer
viewer.go 1014B
rule
rule.go 3KB
bcrypt
crypt.go 667B
common
validator.go 313B
util.go 917B
common.go 2KB
query.go 2KB
register
task.go 4KB
register.go 411B
wire_set.go 157B
wire_set.go 240B
auth
ent.go 2KB
util
utils.go 2KB
checker
init_data.go 1KB
.gitignore 674B
Dockerfile_local_build 237B
Docker-Compose.yaml 2KB
.dockerignore 95B
README.md 4KB
.air.toml 1KB
main.go 1KB
共 66 条
- 1
资源评论
生瓜蛋子
- 粉丝: 3828
- 资源: 5775
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功