AdonisJS - le meilleur framework NodeJS de 2017

Il y a environ six mois, je cherchais une alternative à SailsJS - un framework MVC pour nœud. Malheureusement, Sails a beaucoup souffert de certaines choses - il était lent pour les requêtes POST, il ne supportait pas beaucoup de fonctions Postgres telles que les transactions et il manquait quelques autres fonctionnalités (par exemple, décrites ici). Mais le pire, c’est qu’il n’a reçu aucune mise à jour majeure au cours des trois dernières années.

Nous avons donc commencé à chercher quelque chose pour déplacer nos projets nodeJS. Nous avons essayé Koa.js (mais il lui manquait trop de choses), Meteor.js (nous n’avons pas vraiment besoin de solution tout-en-un, seulement des API), de Loopback (trop de magie) et de quelques autres.

Jusqu'à ce que je tombe sur AdonisJS. Pour être honnête, même si le framework a 2.5k démarre sur github, ce n’était pas facile à trouver. Mais j'en ai tout de suite eu le coup de foudre. Je vais essayer d’expliquer pourquoi.

Avantages

1. En regardant la structure des dossiers et la logique derrière, il est presque identique à un framework PHP très populaire - Laravel. Et Laravel a une structure bien pensée qui vous permet de garder les choses claires. Donc, si vous avez déjà travaillé avec, vous apprendrez très vite Adonis.

2. Son ORM est conçu pour les bases de données SQL, telles que Postgres ou MySQL. Il crée des requêtes SQL efficaces et est basé sur une idée d’enregistrement actif. Son constructeur de requêtes est facile à apprendre et nous permet de créer rapidement des requêtes simples. Par exemple:

const bicycles = yield Bicycle.query (). whereIn ('locationId', locationIds) .with ('verrous'). orderBy ('label', 'asc'). fetch ()

Mais même lorsque nous avons besoin de choses plus complexes, telles que des migrations, des transactions, des jointures, des mandrins ou des requêtes complètement en «langage SQL natif», tout est là et facile à utiliser. Quant aux amateurs de MongoDB, Adonis le soutient également.

3. Il a une extension de validation pratique. Facilite l’écriture de règles, par exemple:

règles const = {
  nom d'utilisateur: 'required | unique: users',
  email: 'obligatoire | email | unique: utilisateurs',
  mot de passe: 'requis | confirmé',
  groupe: 'existeIn: groupe'
}
const validation = rendement Validator.validate (userData, User.rules)
if (validation.fails ()) lance une nouvelle Errors.Validation (validation)

Ces vérifications peuvent être synchrones ou asynchrones, accéder à la base de données ou à tout autre besoin. Et il peut être étendu très facilement, par exemple, nous avons écrit un chèque pour prouver si un enregistrement existe dans notre base de données.

4. Juste un bonus! Personnellement, j'adore la manière dont Adonis utilise et utilise les fonctions du générateur. Par exemple:

// Classique aka façon spaghetti
Users.all ((err, users) => {
  users.bicycles (). fetch ((err, vélos)) => {
    res.send ({utilisateurs, vélos})
  })
})
// voie de promesse
laisser les utilisateurs = null
Users.all ()
.then (fetchedUsers => {
  utilisateurs = fetchedUsers
  retourne user.bicycles (). fetch ()
})
.then (bicycles => {
  res.send ({utilisateurs, vélos})
})
// manière génératrice (aussi appelée méthode AdonisJS)
// Yielding suspend l'exécution du code jusqu'à la fin de la fonction async
const users = rendement Users.all ()
const bicycles = return users.bicycles (). fetch ()
res.send ({utilisateurs, vélos})

Cela rend le code beaucoup plus clair! Plus de fonctions ou de promesses fermées, seulement du code simple sans tabulation.

Les inconvénients

  1. Il n'y a pas de configuration de test par défaut. Écrire du code sans test est une façon très naïve de développer :-) Nous avons donc dû investir du temps dans la mise en œuvre de notre propre configuration de test autour d'Adonis. Upd: la configuration officielle du test et le didacticiel seront introduits dans Adonis 4.0
  2. Comme il y a peu de contributeurs et d'utilisateurs, vous pouvez parfois toujours détecter un bogue dans les bibliothèques principales. Certaines sont assez évidentes :-)
  3. Même si la documentation est bonne, la communauté est encore petite. Il n'y a pas beaucoup de réponses sur StackOverflow et il n'y a pas beaucoup de tutoriels (sauf celui officiel)

Au lieu de conclusion

Nous utilisons AdonisJS en production depuis six mois. C'est stable et rapide. Nous aimons ça!

Si vous recherchez un framework Node.js moderne avec ES6, un support Postgres et une bonne structure, consultez Adonis.js

P. S. Mon dernier projet - https://pingdisco.com est 100% adonisjs, c’est un outil de surveillance gratuit du temps de disponibilité. Essayez de créer un compte là-bas (il ne faut qu'un seul champ à remplir) et constatez-vous à quelle vitesse

P. P. S. Et si vous avez besoin d’aide ou avez des problèmes avec le framework, n’hésitez pas à me donner un message sur Codementor. Je fais aussi des tutoriels où je peux vous montrer les bases et quelques trucs sympas d’Adonis.