Skip to content

chy3xyz/vf

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

vf - V Language Fast Development Framework

vf 是一个受 GoFrame 启发的 V 语言快速开发框架,提供模块化、高性能的企业级应用开发能力。

🔥 配套 CLI 工具: 提供 vf initvf gen 等命令快速生成代码,参考 GoFrame gf CLI 设计。

特性

  • 🚀 高性能 - 基于 V 语言的编译时优化
  • 📦 模块化 - 按需引入,灵活组合
  • 🔒 类型安全 - 编译时类型检查
  • 🛡️ 企业级 - 内置认证、验证、日志等常用功能
  • 📝 简洁 API - 易于学习和使用

安装

安装框架

v install vf

或者从源码安装:

git clone https://github.com/vf-framework/vf
cd vf
v install

安装 CLI 工具

cd cmd/vf
v -o vf .
sudo mv vf /usr/local/bin/

快速开始

使用 CLI(推荐)

# 1. 创建新项目
vf init my-api

# 2. 进入项目目录
cd my-api

# 3. 生成 User 模块(包含 controller + service + model + dao)
vf gen module user

# 4. 运行项目
vf run

访问 http://localhost:8080/api/health 查看运行状态。

手动编写

import vf
import veb

fn main() {
    // 创建应用
    mut app := vf.new()
    
    // 注册路由
    app.get('/hello', hello_handler)
    app.post('/user', create_user_handler)
    
    // 启动服务
    app.run(':8080')
}

fn hello_handler(ctx vf.Context) veb.Result {
    return ctx.success({
        'message': veb.RawJson('"Hello, VF!"')
    })
}

fn create_user_handler(ctx vf.Context) veb.Result {
    return ctx.success({
        'id': veb.RawJson('1')
        'name': veb.RawJson('"Test User"')
    })
}

模块说明

核心模块 (core)

  • App - 应用管理
  • Context - 请求上下文
  • Config - 配置管理

Web 模块 (web)

  • Server - HTTP 服务器
  • Router - 路由管理
  • Middleware - 中间件支持

内置中间件:

  • cors() - 跨域支持
  • logger() - 请求日志
  • recovery() - 异常恢复
  • auth() - 认证检查
  • rate_limit() - 限流
  • request_id() - 请求 ID

数据库模块 (database)

  • Connection - 数据库连接(支持 SQLite、MySQL、PostgreSQL)
  • Model - 模型基类
  • Query - 查询构建器

缓存模块 (cache)

  • Cache - 缓存接口
  • MemoryCache - 内存缓存
  • RedisCache - Redis 缓存

认证模块 (auth)

  • JWT - JWT 实现
  • Authenticator - 认证器

验证模块 (validate)

  • Validator - 数据验证器

内置验证规则:

  • required - 必填
  • email - 邮箱格式
  • phone - 手机号格式
  • url - URL 格式
  • min_length/max_length - 长度限制
  • min/max/between - 数值范围
  • 等等...

日志模块 (log)

  • Logger - 日志记录器
  • 支持控制台和文件输出
  • 支持日志级别

工具模块 (utils)

  • crypto - 加密工具(MD5、SHA、Base64、JWT 等)
  • time - 时间工具
  • string - 字符串工具
  • file - 文件工具
  • conv - 类型转换
  • slice - 数组工具

示例

查看 examples/ 目录获取更多示例:

  • basic_api.v - 基础 API 示例
  • with_middleware.v - 中间件使用示例
  • with_validation.v - 数据验证示例
  • with_auth.v - 认证授权示例
  • with_cache.v - 缓存使用示例
  • complete_app.v - 完整应用示例

运行示例

# 运行基础示例
v run examples/basic_api.v

# 运行带认证的示例
v run examples/with_auth.v

# 运行完整应用示例
v run examples/complete_app.v

CLI 命令

VF CLI 提供强大的代码生成功能,参考 GoFrame gf CLI 设计。

vf init - 初始化项目

vf init my-api           # 创建 API 项目
vf init my-web -t web    # 创建 Web 项目
vf init my-cli -t cli    # 创建 CLI 项目

vf gen - 生成代码

# 生成单个文件
vf gen ctrl user         # 生成控制器
vf gen svc user          # 生成服务
vf gen model user        # 生成模型
vf gen dao user          # 生成 DAO
vf gen mw auth           # 生成中间件

# 生成完整模块(controller + service + model + dao)
vf gen module user

vf run - 运行项目

vf run                   # 普通运行
vf run -p 3000          # 指定端口
vf run -w               # 启用热重载

vf build - 构建项目

vf build                 # 普通构建
vf build -r             # 生产模式
vf build -t linux       # 交叉编译

API 示例

路由

// GET 请求
app.get('/users', list_users)

// POST 请求
app.post('/users', create_user)

// PUT 请求
app.put('/users/:id', update_user)

// DELETE 请求
app.delete('/users/:id', delete_user)

// 带参数的路由
app.get('/users/:id', get_user)

响应

// 成功响应
return ctx.success({
    'data': veb.RawJson('{"id":1}')
})

// 失败响应
return ctx.fail(404, 'user not found')

// 自定义响应码
return ctx.json_result(vf.web.Response{
    code: 1001
    message: 'custom error'
    data: '{}'
})

数据验证

mut validator := vf.validate.new({
    'username': username
    'email': email
    'password': password
})

validator.validate('username', vf.validate.required, vf.validate.min_length(3))
validator.validate('email', vf.validate.required, vf.validate.email)
validator.validate('password', vf.validate.required, vf.validate.min_length(6))

if validator.has_errors() {
    return ctx.fail(400, validator.get_error_string())
}

JWT 认证

// 生成 token
authenticator := vf.auth.new_authenticator('your-secret')
token := authenticator.generate_token('user_id', 86400)!

// 验证 token
if authenticator.verify_token(token) {
    payload := authenticator.parse_token(token)!
    println(payload.sub)  // user_id
}

缓存使用

// 内存缓存
mut cache := vf.cache.new_memory()

// 设置缓存
cache.set('key', 'value', 3600)!  // 1小时过期

// 获取缓存
if val := cache.get('key') {
    println(val)
}

// 删除缓存
cache.delete('key')!

V 语言版本要求

  • V 0.5.0 或更高版本

许可证

MIT License

贡献

欢迎提交 Issue 和 Pull Request!

鸣谢

About

VF CLI - V Language Fast Development Framework Command Line Tool

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors