Il y a environ six mois, je cherchais une alternative à SailsJS, un “framework” Model View Controller (MVC) pour NodeJS. Malheureusement, Sails était lent sur les requêtes POST, il ne supportait pas beaucoup de fonctions PostgreSQL comme les transactions et il manquait quelques autres fonctionnalités. Mais le pire, c’est qu’il n’a pas été mis à jour au cours des trois dernières années.

J’ai donc commencé à chercher un autre “framework” pour migrer mes projets NodeJS. J’ai essayé Koa.js (mais il manquait trop de choses), Meteor.js (je n’ai pas vraiment besoin de solution tout-en-un, seulement une API), Loopback (trop de magie) et quelques autres…

Jusqu’à ce que je suis tombé sur AdonisJS. Pour être honnête, même si le framework démarre sur Github (4K stars), ce n’était pas facile à trouver. Mais j’en suis tombé amoureux. Je vais essayer d’expliquer pourquoi.

Avantages

En regardant la structure de dossier et la logique derrière AdonisJS, il est presque identique à un “framework” PHP super populaire : Laravel. Et Laravel a une bonne structure réfléchie, qui vous permet de garder les choses claires. Donc, si vous avez déjà travaillé avec, vous apprendrez rapidement Adonis.

Son ORM (Object-Relational Mapping) 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 l'”active record pattern“. Son générateur de requêtes est facile à apprendre et nous permet de créer rapidement des requêtes simples. Par exemple :

const cars = await Car.query().whereIn('locationId', locationIds).with('locks').orderBy('label', 'asc').fetch()

Mais même lorsque nous avons besoin de choses plus compliquées comme des migrations, des transactions, des jointures ou des requêtes complètement “en langage SQL natif”, tout est là et facile à utiliser. Quant aux amoureux de MongoDB, AdonisJS le soutient aussi !

AdonisJS possède également une extension de validation pratique et facilite l’écriture de règles, par exemple :

const validation = await validate(data, {
  username: 'required|max:20|unique:users',
  email: 'required|max:254|email|unique:users',
  password: 'required|strongPassword',
  password_confirmation: 'required_if:password|same:password'
})

if (validation.fails()) {
  return response.send(validation.messages())
}

Ces vérifications peuvent être à la fois “synchrones” ou “asynchrones”, peuvent accéder à la base de données et il peut être étendu très facilement, par exemple, j’ai écrit une vérification pour prouver qu’un mot de passe est fort.

Le TDD (Test-Driven Development) ou en Français “développement piloté par les tests” est une technique de développement de logiciel qui préconise d’écrire les tests unitaires avant d’écrire le code source d’un logiciel. AdonisJS pratique le TDD et je pense que c’est une bonne philosophie à prendre en compte pour vos prochains développement !

Inconvénients

Comme il n’y a pas beaucoup de contributeurs et d’utilisateurs, vous pouvez parfois attraper un “bug” dans les bibliothèques principales. Certains d’entre eux sont assez évidents.

Même si les documentations sont bonnes, 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.

En conclusion

J’utilise AdonisJS en production depuis six mois. C’est stable et rapide. J’aime ça ! Si vous cherchez un framework NodeJS moderne avec ES6, le support Postgres et une bonne structure, passez chez AdonisJS.

Source : Medium

AdonisJS : un très bon “framework” NodeJS qui promet en 2018
5 (100%) 1 vote
6 commentaires
Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Inscrivez vous à notre newsletter

Soyez informé des derniers articles sur YubiGeek. Saisissez votre adresse email et validez le formulaire. Un email de confirmation vous sera communiqué.

Vous devriez également aimer

Raspberry Pi : un compteur d’abonné visuel pour les réseaux sociaux

Je fais suite au tutoriel sur la création d’un compteur d’abonné vocal…

Raspberry Pi : comment concevoir un bot qui dicte la météo chaque jour ?

Cette semaine a été remplie d’article pour votre Raspberry Pi, aujourd’hui on…

API Streaming Twitter : Bot Node JS

Il y a quelques temps, je vous avais présenté la procédure pour…

PM2 : un gestionnaire de processus de production pour les applications NodeJS

Vous cherchez à laisser tourner vos applications NodeJS en processus sur votre…