一、初始化
版本要求:Node.js v14
创建项目
yarn create adonis-ts-app hello-adonis
|
|
启动开发服务器
node ace serve --watch
为生产编译
node ace build --production
cd build
node server.js
二、路由
网站或 Web 应用程序的用户可以访问不同的 URL,例如/,/about或/posts/1. 要使这些 URL 起作用,必须将它们定义为路由。
默认路由路径:start/routes.ts
列出路由
node ace list:routes
嵌套路由&路由域
|
|
三、控制器
控制器是处理路由的实际方式。通过将所有内联路由处理程序移动到其专用控制器文件来处理路由文件。
默认控制器路径:app/Controllers/Http
1. 自动生成控制器类
node ace make:controller Post
2. 编辑控制器
import { HttpContextContract } from '@ioc:Adonis/Core/HttpContext'
export default class PostsController {
public async index(ctx: HttpContextContract) {
return [
{
id: 1,
title: 'Hello world',
},
{
id: 2,
title: 'Hello universe',
},
]
}
}
3. 路由调用控制器
import Route from '@ioc:Adonis/Core/Route'
Route.get('/posts', async (ctx) => {
const { default: PostsController } = await import(
'App/Controllers/Http/PostsController'
)
return new PostsController().index(ctx)
})
四、中间件
将中间件编写为内联函数对于一些快速测试来说是很好的。但是,建议将中间件逻辑提取到它自己的文件中。
默认路径:app/Middleware
1. 自动生成中间件类
node ace make:middleware Auth
2. 编辑中间件
import { HttpContextContract } from '@ioc:Adonis/Core/HttpContext'
export default class Auth {
public async handle(
{ request, response }: HttpContextContract,
next: () => Promise<void>
) {
if (notAuthenticated) {
response.unauthorized({ error: 'Must be logged in' })
return
}
await next()
}
}
3. 注册中间件
要使中间件生效,必须在文件内注册为全局中间件或命名中间件。
路径:start/kernel.ts
全局中间件
全局中间件按照与注册时相同的顺序为所有 HTTP 请求执行。
Server.middleware.register([
() => import('@ioc:Adonis/Core/BodyParser'),
() => import('App/Middleware/LogRequest')
])
命名中间件
有选择地在路由/路由组上应用中间件。
Server.middleware.registerNamed({
auth: () => import('App/Middleware/Auth')
})
|
|
五、数据库
Lucid
Lucid 为框架的数据层提供支持。
1. 安装
yarn add @adonisjs/lucid
2. 自动生成配置文件
node ace configure @adonisjs/lucid
3. 验证配置环境变量
在 .env
文件中
|
|
所有数据库驱动程序的配置都存储在 config/database.ts
文件中。
|
|
4. 使用
在控制器 app/Controllers/Http/HelloWorldsController.ts
中使用
|
|