Hello World
可执行 2.x 权威示例
先运行下面的仓库最小示例,确认服务、HTTP 与文档入口,再按需要阅读 TypeScript 扩展示例。两部分属于不同项目,不要把两套文件混放。
本页的发布合同是仓库中的
examples/hello-world
项目。它是刻意保持最小的 JavaScript 应用:使用 checkJs 类型检查、Native adapter、显式 rateLimit.enabled: false、Vext Docs,并且只有 GET / 与 GET /health 两个路由。
先在克隆的仓库根完成 npm ci 和 npm run build,再执行(以下是仓库贡献者路径;只想新建应用可直接看后面的脚手架路径):
启动后验证 / 返回 data.message: "hello world",/health 返回 data.status: "ok",/openapi.json 包含这两个业务路由,/docs 展示 Vext Docs;未知路径返回404。结束后停止服务。示例中的 "vextjs": "file:../.." 只用于本仓库;脚手架项目与普通用户项目安装发布后的 vextjs 包。
仓库示例源码决定其文件与 endpoint;这里的验证命令由读者执行,不表示当前本地已经完成安装、测试或发布。
扩展 TypeScript 教学变体
下方 walkthrough 是单独的教学变体,用于展示更多校验和响应 API;它不是可执行发布 fixture,也不能据此推断 examples/hello-world 目录中存在这些额外路由。
完整项目结构
1. 初始化项目
使用 vext create 脚手架快速创建:
或手动创建:
2. 配置文件
package.json
tsconfig.json
3. 配置
4. 路由
5. 启动入口
本例使用 package.json 中的 vext dev/build/start,由 CLI 管理启动入口,不需要另建 src/index.ts 或再次调用 bootstrap()。需要程序化管理启动/关闭时,见 App 生命周期,不要混用两种启动方式。
6. 运行
开发模式
开发模式特性:
- 文件修改触发重载;路由/服务与配置变更采用不同策略,见开发模式
- 美化日志输出(内置 pretty 格式)
- 本例已显式启用 OpenAPI 文档(访问
http://localhost:3000/docs)
生产模式
7. 验证
启动后可使用 curl 或浏览器验证:
8. 响应格式说明
VextJS 默认启用出口包装(config.response.wrap: true),本例的 JSON 成功响应会包装为统一格式;特殊无 body 状态、显式不包装和错误出口的边界见请求与响应:
成功响应:
错误响应:
错误字段的具体消息可能随校验器语言而变化,应先检查 HTTP 状态、业务 code 和 errors 结构。缺少必填 name 同样应返回422,不能只测试空字符串。
如果不需要包装(如微服务间通信),可把下面字段合并到现有配置中禁用:
关键概念回顾
下一步
- 阅读 快速开始 了解更完整的项目搭建流程
- 阅读 CRUD API 示例 了解数据库集成
- 阅读 项目结构 了解约定式目录规范
- 阅读 路由 深入了解三段式路由定义