goal
一个继承了 laravel 思想的 golang web 框架
框架特点
goal 通过容器和服务提供者作为框架的核心,以 contracts 为桥梁,为开发者提供丰富的功能和服务,这点与 laravel 是相似的。

强大的容器
服务提供者
契约精神

功能特性

examples 各种程序的例子(还在完善中...)
contracts 定义模块接口
container 容器实现!!!
pipeline 简单但是很强大的洋葱模型的管道

supports 支持库
logs 日志模块
collection 集合库
utils 工具库,封装了包含字符串处理、默认参数处理、类型转换、反射等工具函数
application 应用
exceptions 异常处理模块
signal 信号监听,goal 实现了优雅关闭功能

config 配置模块
redis Redis 模块

cache 缓存模块
redis
memory 将数据存储在内存中,不支持持久化和分布式
memcached
file
database 数据库驱动
multi 高可用多级缓存

encryption 加密模块
hashing 哈希模块
validation 数据校验模块
mail 邮件模块
events 事件模块

filesystem 文件系统模块
local 本地文件系统
qiniu 七牛文件系统
oss 阿里云文件系统

database 数据库操作模块
query builder 查询构造器
seeders 数据填充
migration 数据迁移

drivers 数据库驱动
mysql
postgresql
sqlite
clickhouse
sqlserver

eloquent ORM 模块,计划 golang 1.18 发布后完成,因为泛型

http http 相关模块,请求、响应、中间件等
sse server-sent-events 模块(简称 sse)
routing http 路由服务

session 会话服务
cookie 将会话信息存储到加密的 cookie 中
redis
file
database
memcached

console 命令行模块
commands 自定义命令模块
scheduling 任务调度模块

auth 用户认证模块
gate 用户授权模块

serialize 序列化模块
json
xml
gob
protobuf

queue 消息队列模块
redis
kafka
nsq
rocketMQ
rabbitMQ

rate limiter 限流器

bloom-filter 布隆过滤器
file 持久化到文件
redis 通过 redis bit 实现的过滤器,支持分布式

websocket socket 通信模块
socket.io socket.io 实现

micro 远程调用模块(集成 go-micro )
grpc
服务发现
负载均衡
自定义 go-micro
微服务 demo

第三方 sdk
支付宝 sdk
微信 sdk
阿里云 sdk
极光推送 sdk
字节跳动 sdk
QQ sdk

参与项目
你可以通过以下方式参与到项目中来

完善已有模块(优化或者改 bug )
完善或者修复测试用例
开发新的模块(比如标记为未完成的模块)
添加或者修改完善注释(用英语)
修改错别字或者不当用词(文档和代码都可以,比如变量命名)
帮助开发独立文档( readme 是临时的,后面需要独立的文档项目)
开发扩展包( goal 的扩展相当容易,后面我会写教程,现阶段进群聊)
使用 goal 实现各种例子(放 examples 文件夹或者新建仓库在这里引用)
更多方式进群聊吧

交流
扫码加入 QQ 群

为什么不直接说 spring ,要说 laravel

哈哈哈也可以,不过 spring 并没有服务提供者的概念

服务提供者不就是 Spring 的 Bean 么

我也借楼留一个框架~~
高性能 TCP 网络框架,基于事件循环,可配置路由模式,无需关心封包解包,框架自动完成,支持 TLS ,后期会支持分布式模式,详情可见 repo: github.com/ikilobyte/netman

不太一样的,Bean 提供的是一个类,服务提供者提供的是一个服务,一个服务里面可能包含一个类,也可能提供多个类,甚至可以在服务提供者里面直接运行一些任务。

更具体的可以参考 goal-web 组织下的一些组件仓库对服务提供者的实现代码 github.com/goal-web

类里面写服务不就是服务了么,service 也是 bean ,service 翻译是啥老哥。 不过我是 java 新手, 所以也不敢保证是这样, 但我觉得那个服务提供者就是个容器的作用, 跟 spring 没有区别

赞! 在 learnku 有关注过

谢谢支持

你这个框框里,都没有勾勾啊

一个类提供一种服务没错,但有写时候我们可能需要许多个类一起组成一个更大,更复杂的服务,全都由一个类提供显得太臃肿,将其拆为多个类比较合适。

V2 的解析问题,代码里面有的哈哈

一直觉得继承 XX 思想,就是没有思想。

go 只需要各种工具集,如果尝试搞一个框架,就太臃肿了,意味着场景太小。

#4 简单 review 了下,先 issue 了个,欢迎多多交流

虽然我仍然喜欢大道至简,但是希望有楼主这种项目能让那些对 golang 大道至简阴阳怪气的小白们闭嘴

其实 99% 的项目用不到这些框架

大佬 考虑用泛型吗

哈哈哈,好的东西要学习,看过代码你就知道了。

这个框架跟 spring 也有些相似的地方,框架本身提供的是配置和容器,其他所有组件都是可选的,群里就有朋友基于我给的 example 精简了很多东西,从何挖掘到到适合他自己的脚手架

谢谢支持,其实有不同的声音很正常,我也只是给了开源社区的各位一个新的选择,这是开源社区发展的常态。

哈哈哈,没有经过统计的 99%吗 ? 退一万步说,不是还有 1%嘛 ~ 我很乐观

必须考虑阿,所以准备等 go 1.18 正式发布后,goal 框架适配后才正式发布

有没有写过一部分 能开个分支看看吗

目前还没有哦,感兴趣进群里详细聊呀

赞一个,加油

👍,话说 go 里面有啥好用的 orm 吗

谢谢~

目前没有发现特别好用的