简介
AdonisJS 是一个以后端为先、类型安全的框架,用于使用 Node.js 和 TypeScript 构建 Web 应用。它提供了编写和维护完整后端所需的核心构建模块,无需借助第三方服务来处理身份验证、文件上传、缓存和速率限制等常见功能。
每个 AdonisJS 应用都使用 TypeScript 编写,以 ESM 模式运行,并在整个技术栈上提供端到端的类型安全。
AdonisJS 适合谁?
AdonisJS 面向需要构建生产级 Web 应用的开发者——他们需要的组织结构比 Express 更完善,但又不想像企业级框架那样繁文缛节。如果你正在构建 REST API、服务端渲染应用或全栈 Web 应用,并且看重"约定优于配置",那么 AdonisJS 会让你感到自然顺手。
如果你来自 Laravel、Rails 或 Django,你会认出其中的 MVC 模式和约定。如果你使用过 Express 或 Fastify,你会欣赏它在不牺牲简洁性的前提下,带来了结构化和开箱即用的完整能力。
为什么选择 AdonisJS
AdonisJS 提供了全功能框架应有的结构、一致性和工具链,同时在设计上保持轻量和现代。
它适合重视以下方面的团队:
-
对后端逻辑的掌控:在内部构建关键功能,而不是在身份验证、速率限制或后台任务上依赖外部服务。
-
一致的开发体验:每个 AdonisJS 应用都遵循相同的约定和目录结构,便于新成员上手以及在团队间共享知识。
-
统一的生态:核心功能在一致的质量标准下统一维护,避免了依赖碎片化。
-
可扩展性与自由度:核心功能由底层包构建而成,你可以直接使用这些底层包来自定义流程、集成或抽象。
AdonisJS 旨在提供构建真实后端应用所需的一切,同时保持易上手、易配置。
你可以用 AdonisJS 构建什么?
AdonisJS 专为真实的后端应用而设计:
-
REST API:为移动应用或 SPA 构建类型安全的 API。已有公司使用 AdonisJS 支撑服务数百万请求的 API。
-
全栈 Web 应用:使用 Edge 模板进行服务端渲染,或配合 Vue/React 构建混合应用。随着应用增长,MVC 结构能让你的后端保持有序。
-
SaaS 平台:构建多租户应用,而无需在身份验证、授权或后台任务等核心功能上依赖第三方服务。
无论你是在构建创业公司的 MVP,还是服务数千用户的系统化生产环境,AdonisJS 都能提供坚实基础,且不会碍手碍脚。
务实,而非过度设计
许多框架引入了企业级的抽象,让项目变得复杂却并未带来清晰度。AdonisJS 选择了不同的思路。
它提供了一种务实的开发模型,专注于清晰、类型安全与可维护性,而不是为了模式而模式。框架通过约定鼓励良好的结构,但绝不强制厚重的架构层级。
框架开箱即用地提供了路由、中间件、验证和 ORM 等"电池",让团队专注于应用逻辑,而不是反复构建通用模式。
AdonisJS 的 API 兼具函数式与现代风格。你可以在需要结构化方法的地方(如控制器、模型和服务的场景中)使用基于类的组件。
AdonisJS 与其他框架的对比
对比 Express/Fastify:AdonisJS 提供了 Express 所缺失的结构与约定,同时保持同样的高性能。你无需自己拼装各种包,而是开箱即用地获得一套集成工具箱。
对比 NestJS:AdonisJS 专注于务实模式而非企业级抽象。没有到处都是的装饰器,没有需要配置的依赖注入容器,只有遵循清晰约定的直白 TypeScript 代码。
对比 Laravel/Rails:如果你热爱 Laravel 或 Rails,却又工作在 Node.js 中,AdonisJS 带来了同样一致的体验:迁移、种子文件、工厂、模型关联,以及一致的约定。
当你想要全功能框架的高生产力,又不想承受企业级模式的复杂或极简框架的碎片化时,选择 AdonisJS。
带有可配置视图层的 MVC
AdonisJS 使用**模型-视图-控制器(MVC)**模式,将数据、逻辑与表现分离。视图层是可选的,可以根据你的需求进行配置。
你可以使用:
- Edge(官方服务端模板引擎)构建传统的全栈应用。
- Vue、React 或其他前端框架构建单页或混合应用。
- 或者在构建 API 优先或纯后端服务时,完全跳过视图层。
无论你如何渲染视图,大多数后端代码(如路由、控制器、模型和中间件)都保持不变。这种灵活性让你可以从服务端渲染起步,之后过渡到现代 SPA 架构,而无需修改核心后端逻辑。
生态与稳定性
AdonisJS 自 2015 年起持续活跃开发,v7 凝聚了多年真实场景的使用与打磨。框架由其创建者全职维护,并得到核心团队成员和活跃社区的支持。
生态包含面向常见后端需求的 官方包 ,均由核心团队以相同质量标准维护。社区包则针对支付处理、云存储和第三方集成等特定需求扩展功能。
所有文档、工具链和包都遵循语义化版本控制,确保升级稳定且具备长期可维护性。
下一步
AdonisJS 文档的编排旨在同时引导新手和有经验的开发者: