adonisjs - a fully featured web framework for node.js


本站和网页 https://adonisjs.com/ 的作者无关,不对其内容负责。快照谨为网络故障时之索引,不代表被搜索网站的即时页面。

AdonisJS - A fully featured web framework for Node.js
Looking to migrate your application to AdonisJS 6? Checkout
our migration guide
! Menu Docs
Support program
Blog
About
15.3k
Create bespoke backend applications in record time
AdonisJS is a TypeScript-first web framework for building web apps and API servers. It comes with support for testing, modern tooling, an ecosystem of official packages, and more.
Get started
Register routes
Create a controller
Make a model
Define a validator
Put it all together
import
router
from
'@adonisjs/core/services/router'
PostsController
'#controllers/posts_controller'
router.
get
'posts'
, [PostsController,
'index'
])
post
'store'
'posts/:id'
'show'
node
ace
make:controller
posts
type
{ HttpContext }
'@adonisjs/core/http'
export
default
class
async
index
({}
HttpContext
) {
// return list of posts
store
// save post
show
// return post by id
make:model
{ BaseModel, column }
'@adonisjs/lucid/orm'
Post
extends
BaseModel
column
()
declare
id
number
title
string
contents
make:validator
vine
'@vinejs/vine'
const
createPostValidator
vine.
compile
object
({
title: vine.
().
trim
minLength
).
maxLength
256
),
contents: vine.
})
'#models/post'
{ createPostValidator }
'#validators/posts'
request
page
request.
input
'page'
return
Post.
query
paginate
(page)
payload
await
validateUsing
(createPostValidator)
create
(payload)
params
findOrFail
(params.id)
Type-safe
We pay a closer look at type-safety, seamless intellisense, and support for auto imports when designing framework APIs.
ESM ready
AdonisJS leverages modern JavaScript primitives, including ES modules, Node.js sub-path imports, and much more.
Fast - Wherever it matters
We ship with one of the fastest validation libraries, and our HTTP server has performance on par with Fastify.
Feature rich framework core
The core of the framework is
a single npm package
that provides all the base-level features you need to create a web application from scratch.
No need to spend hours finding and assembling dozens of packages together before you can write the first line of code.
Use AdonisJS and be productive from day one.
Config management
Type-safe environment variables
Thoughtful folder structure
Routing and controllers
Middleware
BodyParser
File uploads
Type-safe event emitter
Encryption
Password hashing
And much, much more.
User
'#models/user'
{ middleware }
'#start/kernel'
put
'me/avatar'
=>
avatar
file
'avatar'
, {
extnames: [
'jpg'
'png'
],
size:
'2mb'
avatar.
move
'uploads'
'/users/:id'
User.
findByOrFail
use
(middleware.
auth
())
World-class testing experience
Testing is not an afterthought for us. We ship with primitives to manage test databases, swap dependencies, generate fake data, interact with cookies and sessions, and much more.
With AdonisJS, you will love writing tests.
Browser testing
Open API tests
Trap outgoing mails
Command-line tests
{ test }
'@japa/runner'
{ UserFactory }
'#factories/user_factory'
test
'render polls created by the logged-in user'
visit
browserContext
user
UserFactory.
with
'polls'
/**
* Mark the user as logged in
*/
browserContext.
loginAs
(user)
* Visit the endpoint that renders the list of
* polls for the logged-in user
'/me/polls'
for
let
poll
in
user.polls) {
page.
assertExists
locator
'h2'
, { hasText: poll.title })
'get list of expenses for the logged-in user'
client
'expenses'
10
* Login user and visit the API endpoint to
* get the list of expenses
response
'/me/expenses'
* Assert response matches the schema defined
* in an OpenAPI schema file
response.
assertAgainstApiSpec
assertBodyContains
(user.expenses.
toJSON
mail
'@adonisjs/mail/services/main'
VerifyEmailNotification
'#mails/verify_email'
'create user account'
* Fake emails before executing the code that
* triggers emails
mails
mail.
fake
client.
'users'
json
email:
'virk@adonisjs.com'
password:
'secret'
assertStatus
201
* Assert an email was sent after making the request
* to the "/users" endpoint
mails.
assertSent
(VerifyEmailNotification, ({
message
hasTo
hasSubject
'Verify email address'
'@adonisjs/core/services/ace'
Greet
'#commands/greet'
'greet the user and exit successfully'
* Create an instance of the CLI command
* and execute it
command
ace.
(Greet, [
'virk'
command.
exec
* Write assertions for the command status and
* logs
assertSucceeded
assertLog
'[ blue(info) ] Hello world from "Greet"'
A huge collection of officially maintained packages
Always find yourself switching between the latest ORMs or migrating away from those two unmaintained libraries
We have been there too
That is why AdonisJS ships with a collection of officially maintained and well-documented packages.
Pick and use the ones you need.
Lucid
SQL ORM with a database query builder, Active record based models, support for migrations, and model factories for testing.
Auth
Driver-based authentication layer with support for sessions, API tokens, basic auth, and much more.
Bouncer
Bouncer provides low-level APIs to build custom authorization workflows like RBAC or ACL.
Drive
AdonisJS Drive provides a unified API to manage user-uploaded files on S3, GCS, and the local filesystem.
Limiter
Protect your API endpoints by implementing fine-grained rate limiting. Supports multiple backend stores.
Edge
A modern and batteries-included template engine for the ones who keep things simple.
Bento Cache
Speed up your applications by storing slowly changing data in a multi-tier cache store.
VineJS
A superfast and type-safe validation library for Node.js. VineJS comes with 50+ validation rules and 12+ schema types.
Ally
Add support for Social login to your apps. Ally ships Twitter, GitHub, Google, LinkedIn, and many more drivers.
i18n
Create multi-lingual web apps. We provide APIs for localization, formatting values, and managing translations.
Health checks
Monitor database connectivity, redis memory size, and your application health using a single package.
Mailer
Send emails from your application using a multi-driver mailer. Supports SMTP, SES, Mailgun, Resend and much more.
IoC container
AdonisJS ships with a zero-config IoC container that uses reflection to resolve and inject class dependencies.
Supercharged CLI
Scaffold resources, run database migrations, use application-aware REPL, or create custom commands. All using a unified CLI framework.
Security primitives
Implement CORS policies to protect your APIs, or use AdonisJS shield to protect against CSRF, XSS, and man-in-the-middle attacks.
A wall full of love and support from developers across the world
Mahmoud Mousa
@MahmMousa
Adonis in MVC is a blessing tbh!
I use it with HTMX or Turbo and it's just perfect!
Peter Vukovic
@pvukovic
Adonis is wonderful - just a perfect level of cognitive load a framework can have both in documentation and implementation.
Not too much, not too little, but exactly what you need as a developer.
Reagan Ekhameye
@techreagan
@adonisframework is the first ever framework I learnt from the docs, I'm in love with this framework,
it's just like @Laravel but for the @nodejs world
. I will be like I'm stuck how can i solve this, the docs got you covered. It's gonna be my long term buddy.
Trésor Muco
@mucotreso
The more I work with @adonisframework the more I'm convinced that it is the best framework in the Nodejs Ecosystem.
The docs are well written, well designed, you just want to stay there and learn more.
Thanks to all the people who are working on this project.
Josh Manders
@joshmanders
Completely bailed on everything this past weekend.
No React, No Remix, No Next.js
, still sipping that Tailwind sizzurup though.
Now we rocking @vuejs & @adonisframework
Carl Mathisen
@carlmathisen
We’ve used it at work for a couple of years, just replacing these express cocktails. They were fine, but I was tired of maintaining and upgrading a unique set of libraries that were our company unique combination of regular features.
Jofie Bernas
@jooop4y
Having a solid experience in Laravel and wanting to explore NodeJs, I found @adonisframework a good choice for me to go through. It is been easy for me to jump in since it feels like
I am just writing Laravel but in typescript and NodeJS
, Awesome developer experience!.
Dylan Britz
@britzdm
I've been using @adonisframework for the last two days an I've already got more done then I did in the last 3 weeks with just using expressjs.
Sam Newby
@SamNewby_
If you’re a PHP dev who loves Laravel and want to give another language a go and use a similar style framework then make sure to check out @adonisframework. It has its own ORM, Auth support, and even a CLI tool called Ace which is very similar to Artisan.#Laravel #NodeJS
Andrew Weir
@andruu
So funny seeing everyone looking/begging for the node/ts equivalent of rails/Laravel when it’s existed for years. I started using @adonisframework in 2016 in production for one of the biggest startups in Asia. If you
want full stack with everything built in
take a look.
Sponsored by fantastic companies and individuals
AdonisJS is an independent open-source project released under the MIT license. We rely on our
GitHub sponsors
and
partners to keep the lights on.
Your logo
AdonisJS is not yet another micro-framework or a wrapper on top of everything that already exists. Instead, we have written AdonisJS from scratch to be simple, elegant, and opinionated.
Community
Discord
Twitter
GitHub
Forum
Resources
Support
Packages
Code of Conduct
Brand guidelines
V5 Documentation
VSCode Extensions
AdonisJS
Japa