vf 是一个受 GoFrame 启发的 V 语言快速开发框架,提供模块化、高性能的企业级应用开发能力。
🔥 配套 CLI 工具: 提供
vf init、vf gen等命令快速生成代码,参考 GoFrame gf CLI 设计。
- 🚀 高性能 - 基于 V 语言的编译时优化
- 📦 模块化 - 按需引入,灵活组合
- 🔒 类型安全 - 编译时类型检查
- 🛡️ 企业级 - 内置认证、验证、日志等常用功能
- 📝 简洁 API - 易于学习和使用
v install vf或者从源码安装:
git clone https://github.com/vf-framework/vf
cd vf
v installcd cmd/vf
v -o vf .
sudo mv vf /usr/local/bin/# 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"')
})
}App- 应用管理Context- 请求上下文Config- 配置管理
Server- HTTP 服务器Router- 路由管理Middleware- 中间件支持
内置中间件:
cors()- 跨域支持logger()- 请求日志recovery()- 异常恢复auth()- 认证检查rate_limit()- 限流request_id()- 请求 ID
Connection- 数据库连接(支持 SQLite、MySQL、PostgreSQL)Model- 模型基类Query- 查询构建器
Cache- 缓存接口MemoryCache- 内存缓存RedisCache- Redis 缓存
JWT- JWT 实现Authenticator- 认证器
Validator- 数据验证器
内置验证规则:
required- 必填email- 邮箱格式phone- 手机号格式url- URL 格式min_length/max_length- 长度限制min/max/between- 数值范围- 等等...
Logger- 日志记录器- 支持控制台和文件输出
- 支持日志级别
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.vVF CLI 提供强大的代码生成功能,参考 GoFrame gf CLI 设计。
vf init my-api # 创建 API 项目
vf init my-web -t web # 创建 Web 项目
vf init my-cli -t cli # 创建 CLI 项目# 生成单个文件
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 uservf run # 普通运行
vf run -p 3000 # 指定端口
vf run -w # 启用热重载vf build # 普通构建
vf build -r # 生产模式
vf build -t linux # 交叉编译// 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())
}// 生成 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 0.5.0 或更高版本
MIT License
欢迎提交 Issue 和 Pull Request!
- GoFrame - 框架设计灵感来源
- V Language - 编程语言