Skip to content

介绍

::include

什么是 AdonisJS?

AdonisJS 是一个 TypeScript 优先的 Node.js Web 框架。你可以用它来创建全栈 Web 应用或 JSON API 服务器。

从根本上说,AdonisJS 为你的应用提供结构,配置无缝的 TypeScript 开发环境,为后端代码配置 HMR,并提供大量维护良好且文档详尽的包。

我们设想使用 AdonisJS 的团队可以花更少的时间在琐碎的决策上,比如为每个小功能挑选 npm 包、编写胶水代码、争论完美的文件夹结构,而花更多的时间交付对业务需求至关重要的真实功能。

前端无关

AdonisJS 专注于后端,让你选择自己喜欢的前端技术栈。

如果你喜欢保持简单,可以将 AdonisJS 与传统模板引擎配合使用,在服务器端生成静态 HTML;为你的 Vue/React 前端应用创建 JSON API;或使用 Inertia 让你喜欢的前端框架完美协作。

AdonisJS 旨在为你提供从零开始创建强大后端应用所需的全部工具。无论是发送电子邮件、验证用户输入、执行 CRUD 操作还是用户认证,我们都能帮你搞定。

现代且类型安全

AdonisJS 建立在现代 JavaScript 原语之上。我们使用 ES 模块、Node.js 子路径导入别名、SWC 执行 TypeScript 源代码,以及 Vite 进行资源打包。

此外,TypeScript 在设计框架 API 时发挥着重要作用。例如,AdonisJS 具有:

拥抱 MVC

AdonisJS 拥抱经典的 MVC 设计模式。你首先使用函数式 JavaScript API 定义路由,将控制器绑定到路由,并在控制器中编写处理 HTTP 请求的逻辑。

ts
// title: start/routes.ts
import router from '@adonisjs/core/services/router'
const PostsController = () => import('#controllers/posts_controller')

router.get('posts', [PostsController, 'index'])

控制器可以使用模型从数据库获取数据,并渲染视图(即模板)作为响应。

ts
// title: app/controllers/posts_controller.ts
import Post from '#models/post'
import type { HttpContext } from '@adonisjs/core/http'

export default class PostsController {
  async index({ view }: HttpContext) {
    const posts = await Post.all()
    return view.render('pages/posts/list', { posts })
  }
}

如果你正在构建 API 服务器,可以用 JSON 响应替换视图层。但是,处理和响应 HTTP 请求的流程保持不变。

ts
// title: app/controllers/posts_controller.ts
import Post from '#models/post'
import type { HttpContext } from '@adonisjs/core/http'

export default class PostsController {
  async index({ view }: HttpContext) {
    const posts = await Post.all()
    // delete-start
    return view.render('pages/posts/list', { posts })
    // delete-end
    // insert-start
    /**
     * Posts 数组将自动序列化为 JSON
     */
    return posts
    // insert-end
  }
}

指南假设

AdonisJS 文档是作为参考指南编写的,涵盖了核心团队维护的多个包和模块的用法和 API。

本指南不教你如何从零开始构建应用。如果你正在寻找教程,我们建议从 Adocasts 开始你的旅程。Tom(Adocasts 的创建者)制作了一些高质量的视频教程,帮助你迈出使用 AdonisJS 的第一步。

话虽如此,文档广泛涵盖了可用模块的用法和框架的内部工作原理。

最近发布

以下是最近发布的列表。点击这里查看所有发布。

::include

赞助商

::include