AdonisJS : un très bon "framework" NodeJS qui promet en 2018

AdonisJS : un très bon "framework" NodeJS qui promet en 2018

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

Maxence Rose

Écrit par Maxence Rose

Hyperactif du Web, fondateur de YubiGeek, passionné de technologie, de sciences, et fasciné par Google, j'écris ce que bon me semble et je teste pour vous les derniers services du Web.
Vous vous êtes abonné avec succès YubiGeek
Génial ! Ensuite, passez à la caisse complète pour obtenir un accès complet à tous les contenus premium.
Nous saluons votre retour ! Vous vous êtes connecté avec succès.
Unable to sign you in. Please try again.
Succès ! Votre compte est entièrement activé, vous avez désormais accès à tout le contenu.
Succès ! Vos informations de facturation sont mises à jour.
Échec de la mise à jour des informations de facturation.