AdonisJS یک فریم ورک Node.js است که برای توسعه سریع و پایدار برنامه های سمت سرور (Backend) طراحی شده است. این فریم ورک با ارائه ابزارها و الگوهای معماری مدرن، به توسعه دهندگان کمک می کند تا با تمرکز بیشتری بر منطق کسب وکار، پروژه های خود را پیش ببرند. اگر به دنبال یک فریم ورک قدرتمند و در عین حال ساده برای توسعه APIها و برنامه های وب هستید، AdonisJS می تواند گزینه مناسبی برای شما باشد.
AdonisJS دارای مزایای متعددی است که آن را از سایر فریم ورک های Node.js متمایز می کند:
قبل از شروع کار با AdonisJS، مطمئن شوید که پیش نیازهای زیر را دارید:
برای ایجاد یک پروژه جدید AdonisJS، مراحل زیر را دنبال کنید:
npm init adonisjs@latest hello-world
cd hello-world
node ace serve --watch
یک پروژه AdonisJS دارای ساختار دایرکتوری زیر است:
Routing در AdonisJS برای تعریف نحوه پاسخگویی برنامه به درخواست های HTTP استفاده می شود. فایل `routes/web.ts` شامل تعریف مسیرهای وب و فایل `routes/api.ts` شامل تعریف مسیرهای API است.
مثال:
import Route from '@ioc:Adonis/Core/Route'
Route.get('/', async () => {
return { hello: 'world' }
})
Route.get('/users/:id', 'UsersController.show')
در مثال بالا، مسیر `/` به یک تابع anonymous متصل شده است که یک پاسخ JSON برمی گرداند. مسیر `/users/:id` به متد `show` در کنترلر `UsersController` متصل شده است.
کنترلرها مسئول دریافت درخواست ها، پردازش داده ها و برگرداندن پاسخ هستند. کنترلرها معمولاً در دایرکتوری `app/Controllers/Http` قرار دارند.
مثال:
import { HttpContextContract } from '@ioc:Adonis/Core/HttpContext'
export default class UsersController {
public async show({ params }: HttpContextContract) {
const user = await User.find(params.id)
return user
}
}
در مثال بالا، متد `show` در کنترلر `UsersController` درخواست را دریافت می کند، کاربر را با استفاده از ORM Lucid پیدا می کند و کاربر را به عنوان پاسخ برمی گرداند.
Lucid یک ORM قدرتمند است که تعامل با پایگاه داده را ساده تر می کند. مدل ها نمایانگر جداول پایگاه داده هستند و امکان انجام عملیات CRUD (Create, Read, Update, Delete) را فراهم می کنند. مدل ها معمولاً در دایرکتوری `app/Models` قرار دارند.
مثال:
import { BaseModel, column } from '@ioc:Adonis/Lucid/Orm'
export default class User extends BaseModel {
@column({ isPrimary: true })
public id: number
@column()
public username: string
@column()
public email: string
}
در مثال بالا، مدل `User` دارای سه ستون `id`, `username` و `email` است.
میان افزارها قطعه کد هایی هستند که قبل یا بعد از اجرای یک کنترلر اجرا می شوند. از میان افزارها می توان برای انجام کارهایی مانند احراز هویت، اعتبارسنجی داده ها و ثبت لاگ استفاده کرد.
برای مثال، یک میان افزار برای احراز هویت:
import { HttpContextContract } from '@ioc:Adonis/Core/HttpContext'
import User from 'App/Models/User'
export default class AuthMiddleware {
public async handle({ auth, request }: HttpContextContract, next: () => Promise) {
// Authenticate request
await auth.authenticate()
await next()
}
}
اعتبارسنجی داده ها قبل از ذخیره در پایگاه داده بسیار مهم است. AdonisJS با استفاده از Validator، یک سیستم قوی برای اعتبارسنجی داده ها ارائه می دهد.
import { schema, rules } from '@ioc:Adonis/Core/Validator'
import { HttpContextContract } from '@ioc:Adonis/Core/HttpContext'
export default class PostsController {
public async store({ request }: HttpContextContract) {
const payload = await request.validate({
schema: schema.create({
title: schema.string({ trim: true }, [
rules.maxLength(255)
]),
body: schema.string({ trim: true })
})
})
// Create post
}
}
تست کردن بخش مهمی از توسعه نرم افزار است. AdonisJS از ابتدا برای تست پذیری طراحی شده است و ابزارهای لازم را برای نوشتن تست های واحد و ادغام فراهم می کند.
این آموزش تنها یک مقدمه بر AdonisJS بود. برای یادگیری بیشتر، به مستندات رسمی AdonisJS مراجعه کنید.