Une bibliothèque Python pour construire des applications Web monopage avec Flask et Inertia.js
Qu’est ce que Inertia.js ?
Inertia.js a été conçu pour répondre à la problématique des développeurs de créer des applications Web Monopage en s'appuyant sur des cadriciels côté serveur tels que Laravel
, Ruby on Rails
, Django
ou encore Flask
et qui souhaitent utiliser un cadriciel contemporain JavaScript
pour construire leur interface utilisateur côté client.
La réponse présentée pour cette problématique est généralement la suivante :
Créer une API côté serveur qui me permettra de récupérer les données pour construire mes vues côté client.
Cependant cette réponse introduit certaines complexités non nécessaires au fonctionnement propre de l'application telles que par exemple :
- L'authentification et la sécurisation des accès à notre API
- La gestion de l'état de notre application côté client
- L'éventuelle conteneurisation de nos différents services
- Choisir entre un seul dépôt de code ou plusieurs et adapter notre intégration continue en ce sens
Il ne s'agit pas ici d'une liste exhaustive. Les complexités s'accumulent et ne répondent pas directement à la problématique client.
Avez-vous vraiment besoin de concevoir une API si l'ensemble des appels est réalisé par votre code côté client ?
Inertia.js vous permet de créer des applications Web monopage en JavaScript sans ajouter les complexités que nous avons listées précédemment.
Il ne s’agit pas uniquement d’un nouveau cadriciel JavaScript que vous allez rajouter à votre code client. Il permettra à vos codes côté serveur et client de communiquer et de fonctionner de façon similaire à une application qui ferait le rendu de ses vues côté serveur.
Mise en place
Pour fonctionner, Inertia.js utilise des adaptateurs à installer côté serveur et client qui communiqueront entre eux via un système de HEADER
.
Il existe plusieurs adaptateurs disponibles à installer côté client qui vous permettront de travailler avec le cadriciel de votre choix pour développer votre application. Inertia.js supporte nativement les applications en Vue 2
, Vue 3
, React
et Svelte
et fournit les adaptateurs respectifs officiellement.
Du côté des technologies serveur, Inertia.js a été développé pour fonctionner avec les technologies Laravel
et Ruby on Rails
. Il s’agit des adaptateurs officiels à installer côté serveur. Cependant, depuis, une large communauté a développé de nouveaux adaptateurs permettant d’ajouter le support d’Inertia.js à leurs langages de programmation et leurs cadriciels.
Intégration à Flask
Anybox est majoritairement orienté sur les solutions de développement utilisant le langage Python. Nous réalisons des projets Web en utilisant les cadriciels Django
ou Flask
. Inertia.js bénéficiait déjà d’un adaptateur pour Django
grâce au paquet inertia-django cependant il n’existait aucune intégration au cadriciel Flask
.
Pour pallier à cela, nous avons donc développé un nouvel adaptateur flask-inertia installable depuis le dépôt Pypi. Le code est publié sous licence MIT pour celles et ceux qui souhaiteraient participer. Il est disponible à l’adresse suivante : https://github.com/j0ack/flask-inertia/.
La documentation du projet est disponible sur la plateforme readthedocs : https://flask-inertia.readthedocs.io/en/v0.3/index.html ainsi que l'implémentation d'un projet de référence sur Github : https://github.com/j0ack/pingcrm-flask.
Ressources: