V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
onanying
V2EX  ›  PHP

MixGo V1.0 发布,混合型高性能 Go 框架

  •  
  •   onanying · 2020-11-12 15:06:10 +08:00 · 3265 次点击
    这是一个创建于 1473 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Mix Go 是什么

    Mix Go 是混合型高性能 Go 框架,该框架改造整合了 gin, logrus, gorm, go-redis, jwt-go, gorilla ... 等多个流行组件,可以开发 console, api, web, grpc 等各种项目,并且引入了依赖注入、控制反转、事件驱动等高级特征,框架追求简单实用主义,试图让更多开发者以更低的学习成本获得极具生产力的第二编程语言。

    与其他 Go 框架的差别

    • 骨架代码全部基于 bean, event 依赖注入、控制反转、事件驱动库构建,同时内置了 Go 生态各个领域最流行的库,包括 gin, logrus, gorm 等,并且这些离散的库已经被整合为一体,可以相互关联使用。

    • 骨架内置了 gin 作为服务器,gin 严格来讲并不是框架,而是一个 server 库,只提供了服务器相关的功能,请求处理,中间件,视图渲染等。

    • 与 beego 等其他 go 框架不同的是,mix-go 的依赖库全部是独立仓库,当你只想使用某一个库时,可以直接使用语义化版本号,而不是 commitid 版本号。

    • 提供了 console, api, web, grpc 多种骨架生成工具,同时骨架代码中包含非常丰富的范例,开箱即用。

    • 采用高度灵活的开发方式,框架只提供底层库,而与具体功能相关的代码都在骨架代码中实现,用户能更加细粒度的修改每一处细节。

    • 框架非常轻量灵活,依赖库均可独立使用,严格来讲除了 console 命令行开发组件,其他全部为选装。

    • 由于骨架和核心类库都由 Mix 自己打造,拥有和 MixPHP 同样的设计哲学,PHP 的用户可以很容易上手开发。

    与 Mix PHP 的关系

    该框架与 MixPHP 设计哲学几乎完全一致,PHP 的用户可以非常容易的切换到 MixGo 进行开发,达到学一会二的效果,OpenMix 可能是现在唯一一个打造跨语言框架的开源机构。

    微服务

    由于 gin 与 go-micro 是兼容的,因此可以非常方便的扩展为微服务。

    框架定位

    当我们开发 MixPHP 时发现框架的设计哲学可以复制到 Go 生态,于是我们着手实现让更多的 PHP 中级程序员也可使用 Go 打造高并发系统,让 Mix 的用户能学一会二,实现跨语言无差别开发。

    开发文档

    技术交流

    知乎: https://www.zhihu.com/people/onanying
    微博: http://weibo.com/onanying
    官方 QQ 群:284806582, 825122875,敲门暗号:goer

    快速开始

    • 安装开发工具
    go get -u github.com/mix-go/mix
    
    • 创建 api 应用骨架
    mix api --name=hello
    
    • 编译到骨架的 bin 目录
    cd hello
    go build -o bin/go_build_main_go main.go
    
    • 执行
    cd bin
    ./go_build_main_go
    
    • 启动 api
    $> ./go_build_main_go api
                 ___         
     ______ ___  _ /__ ___ _____ ______ 
      / __ `__ \/ /\ \/ /__  __ `/  __ \
     / / / / / / / /\ \/ _  /_/ // /_/ /
    /_/ /_/ /_/_/ /_/\_\  \__, / \____/ 
                         /____/
    
    
    Server      Name:     mix-api
    System      Name:     darwin
    Go          Version:  1.13.4
    Framework   Version:  1.0.5
    Listen      Addr:     :8080
    time=2020-08-28 18:54:31 level=info msg=Server start file=api.go:58
    

    访问测试 (新开一个终端):

    $> curl http://127.0.0.1:8080/hello
    {"message":"hello, world!","status":200}
    

    开发工具

    源码仓库中不仅包含全部组件的源码,还包含一个开发工具:

    • 可以生成 console, api, web, grpc 等骨架代码
    • 热更新工具 (开发中)

    Installation

    • 安装
    go get -u github.com/mix-go/mix
    

    Help

    查看命令帮助

    $ mix
    Usage: mix [OPTIONS] COMMAND [opt...]
    
    Commands:
      version       Prints the current Mix Go version
      new           Create a console application
      api           Create a api application
      web           Create a web application
      grpc          Create a gRPC application
    
    Global Options:
      -h, --help    Print usage
      -v, --version Print version information
    
    
    Run 'mix COMMAND --help' for more information on a command.
    
    Developed with Mix Go framework. (openmix.org/mix-go)
    

    New application

    创建应用骨架

    • console
    mix new --name=hello
    
    • api
    mix api --name=hello
    
    • web (含 websocket)
    mix web --name=hello
    
    • grpc
    mix grpc --name=hello
    

    License

    Apache License Version 2.0, http://www.apache.org/licenses/

    8 条回复    2020-11-14 11:08:12 +08:00
    kuro1
        1
    kuro1  
       2020-11-12 17:06:24 +08:00
    gopher
    hgjian
        2
    hgjian  
       2020-11-12 20:20:21 +08:00 via Android
    你不搞 php 了
    kwanzaa
        3
    kwanzaa  
       2020-11-13 00:24:54 +08:00
    头皮发麻
    SingeeKing
        4
    SingeeKing  
       2020-11-13 12:21:48 +08:00
    替楼主补充一下 Github 链接: https://github.com/mix-go/mix
    ben1024
        5
    ben1024  
       2020-11-13 12:26:14 +08:00
    golang 框架其实还好,主要是生态较弱
    还有就是发错分组了
    frozenshadow
        6
    frozenshadow  
       2020-11-13 21:59:56 +08:00 via Android
    请教一下 gin 和 go-micro 兼容是指哪方面啊
    onanying
        7
    onanying  
    OP
       2020-11-14 11:07:10 +08:00
    @hgjian 都搞,mixphp + mixgo = openmix.org
    onanying
        8
    onanying  
    OP
       2020-11-14 11:08:12 +08:00   ❤️ 1
    @frozenshadow go-micro v2 可以直接使用 gin beego 的 route 作为 web/api 的解析,然后同样可以注册到 go-micro 微服务注册中心
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1127 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 18:20 · PVG 02:20 · LAX 10:20 · JFK 13:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.