Flux框架介绍:专为高效Golang开发者打造的现代化Web框架

Flux框架介绍:专为高效Golang开发者打造的现代化Web框架 经过数月的开发,我很高兴地宣布发布 Flux——一个为 Go 语言打造的全栈 Web 框架,它结合了 Express/Laravel 的开发体验与 Go 语言的原始性能。

我构建 Flux 是因为我相信 Go 语言值得拥有一个框架,它能够汇集其他生态系统的最佳实践,同时保持 Go 的性能优势。

Flux 的不同之处:

  • 基于您创建的控制器方法实现自动路由
  • 提供专用工具的一流微服务支持
  • 开发期间的热重载功能
  • 内置身份验证、数据库集成等功能
  • 用于快速搭建项目的 CLI 工具
  • 具有清晰约定的简洁 MVC 架构

无论您是在构建单体 API 还是分布式/微服务系统,Flux 都能为您提供正确的结构和工具。

请查看我们的 GitHub 仓库 GitHub - Fluxgo/flux: flux is a modern, web framework for Golang, designed to combine developer happiness, performance, and structure. Build scalable APIs with type-safe request handling, auto-generated docs, and a clear modular and Microservice architecture 或访问文档网站 goflux.online 开始使用。

谁准备好尝试用 Flux 构建点什么呢?如果您想成为我们的早期测试者,请在下方评论!别忘了点个星标

#Go编程 #Web开发 #微服务 #开源 #软件工程


更多关于Flux框架介绍:专为高效Golang开发者打造的现代化Web框架的实战教程也可以访问 https://www.itying.com/category-94-b0.html

3 回复

我发了一封邮件,我们总能创造一个可行的解决方案,让开发者们更开心。

更多关于Flux框架介绍:专为高效Golang开发者打造的现代化Web框架的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


你好!我叫Túlio。

我一直在开发一个旨在简化全栈工作流程的Web开发技术栈,在后端使用Go。在探索类似项目时,我发现了你们的项目Flux,其清晰的结构和设计目标给我留下了深刻的印象。

我相信我们的想法在一些有趣的方面可能是一致的,我非常希望能有机会进行简短的交流——或许存在合作或相互贡献的潜力。

如果你感兴趣,可以在这里了解更多:https://lwdk.site13.com.br/

期待收到你的回复。

此致, Túlio

Flux框架确实为Go开发者带来了全新的开发体验。以下是一个简单的Flux控制器示例,展示了自动路由和类型安全请求处理的特性:

package controllers

import (
    "github.com/fluxgo/flux"
    "github.com/fluxgo/flux/request"
    "github.com/fluxgo/flux/response"
)

type UserController struct {
    flux.Controller
}

// GetUser 方法会自动注册为 GET /user/{id} 路由
func (c *UserController) GetUser(req *request.Context) response.Response {
    id := req.Param("id").String()
    
    // 类型安全的请求绑定示例
    var query struct {
        IncludeDetails bool `query:"details"`
    }
    req.BindQuery(&query)
    
    user := map[string]interface{}{
        "id":   id,
        "name": "John Doe",
        "details_included": query.IncludeDetails,
    }
    
    return response.JSON(user)
}

// CreateUser 方法会自动注册为 POST /user 路由
func (c *UserController) CreateUser(req *request.Context) response.Response {
    var userData struct {
        Name  string `json:"name" validate:"required"`
        Email string `json:"email" validate:"required,email"`
    }
    
    // 自动验证请求体
    if err := req.BindJSON(&userData); err != nil {
        return response.BadRequest(err.Error())
    }
    
    // 数据库操作示例
    // db.Create(&models.User{Name: userData.Name, Email: userData.Email})
    
    return response.Created(map[string]string{
        "message": "User created successfully",
    })
}

微服务支持示例:

package main

import (
    "github.com/fluxgo/flux"
    "github.com/fluxgo/flux/micro"
)

func main() {
    app := flux.New()
    
    // 注册服务发现
    app.Use(micro.ServiceDiscovery("user-service", "localhost:8080"))
    
    // 定义微服务端点
    app.MicroService("/api/v1", func(r *flux.Router) {
        r.Controller(&controllers.UserController{})
        r.Controller(&controllers.AuthController{})
    })
    
    // 热重载在开发模式下自动启用
    app.Run(":8080")
}

CLI工具使用示例:

# 创建新项目
flux new myapp --template=api

# 生成控制器
flux generate controller User --methods=Get,Create,Update,Delete

# 启动开发服务器(带热重载)
flux serve --watch

Flux的自动路由基于控制器方法名约定:

  • Get{Resource} -> GET /resource
  • Create{Resource} -> POST /resource
  • Update{Resource} -> PUT /resource/{id}
  • Delete{Resource} -> DELETE /resource/{id}

内置身份验证示例:

func (c *UserController) GetProfile(req *request.Context) response.Response {
    // 自动从JWT令牌中提取用户信息
    userID := req.Auth().UserID()
    
    // 基于角色的访问控制
    if !req.Auth().HasRole("admin") {
        return response.Forbidden("Insufficient permissions")
    }
    
    return response.JSON(map[string]string{"user_id": userID})
}

数据库集成示例:

type User struct {
    flux.Model
    Name  string `json:"name"`
    Email string `json:"email" gorm:"uniqueIndex"`
}

func (c *UserController) GetUsers(req *request.Context) response.Response {
    var users []User
    c.DB().Find(&users) // 自动数据库连接
    
    return response.JSON(users)
}

Flux的模块化架构支持大型项目组织,每个模块可以独立开发和测试,同时保持完整的类型安全和性能优势。

回到顶部