Bonjour à tous,
Je débute un nouveau projet et avant de me lancer dans le codage pur et dur je me suis dit qu’il était temps de revisiter un peu les framework js qui existait, peut-être existe-t’il un répondant le mieux à mes besoins.
Jusqu’ici j’ai fait quelques projets à l’aide d’Angular, j’ai commencé à l’époque d’Angular 1 et à présent on en est à la 5 et j’ai suivit. J’ai appris le TypeScript grâce à sa et concrètement j’aime sa !
Coté back, n’étant qu’un support de données pour le front j’ai toujours utilisé express et socketIO "à l’arrache", a fonctionne bien mais c’est moyennement maintenable, et tant qu’à faire, j’aimerai évoluer à ce sujet.
Bref, j’aimerai utiliser un framework ayant l’élégance d’Angular coté back, voir si possible front & back. En ce sens où, si on a un objet Voiture
à stocker dans la bdd, il faut être en mesure de le manipuler coté back pour vérifier que la voiture à 4 roues avant de l’enregistrer mais il faut également pouvoir manipuler cet objet Voiture
dans le front pour faire tourner les roues.
Donc les modèles doivent être partagé entre le front et le back et c’est là que cela pose des problèmes.
Concernant le stockage des données j’ai trouvé TypeORM, on défini des classes avec les annotation qui vont bien et le manager se débrouille ensuite à la manière de Doctrine avec php. Clairement un outil au top du top.
La difficulté c’est de partager les entités coté front & back. Je serai assez frustrer de devoir définir un objet Voiture
coté back avec ses propriétés et les annotations et devoir refaire exactement le même travail coté front. Lorsque l’on définit une entité c’est avec les annotation de TypeORM, hors si TypeORM n’est pas coté front je suis certain que le compilateur TypeScript va me faire passer un sale quart-d’heure.
Définir les modèles c’est bien, définir des modules c’est mieux. Si le back peut manipuler les données à loisir il ne peut pas les exposer sans retenue ni contrôle au front. C’est pour cette raison que l’on développe des API type REST, on peut contrôler ce qui est retourner à l’utilisateur.
Après quelques recherches j’ai trouvé Feathers.
Quand je suis tombé la dessus j’ai juste halluciné, on défini un service et on peu l’exposer sans ce poser de question via REST ou via websocket, ce qui permet donc de proposer du temps réel sur son API et donc de créer des application dynamique sans problème. Pourquoi vérifier toutes les minutes si on a un nouveau message si le serveur peu nous le dire immédiatement dés qu’on en a effectivement un.
Ce qui est dommage c’est qu’il n’utilise pas TypeScript, donc pas de jolie annotation ou d’implémentation d’interface. On soie on peut tout à fait s’en passer. N’empêche que j’aurai évidement préférer avec.
D’autant que j’ai parcouru la documentation, il propose bien un système pour gérer l’authentification des utilisateurs mais je n’ai rien vu de similaire au Guard
, autrement dit une mécanique permettant de vérifier que l’utilisateur effectuant une action à bel et bien le droit d’effectuer cette action.
Un peu par hasard je suis tombé sur le framework Nest, lui à l’avantage d’être conçu pour TypeScript, donc un code assez sympa à lire et utiliser.
Par contre on ne retrouve pas la fonctionnalité phare de Feathers, et si au début c’était une idée sympa mais sans plus, au fur et à mesure de ma réflexion je me suis dit qu’une telle fonctionnalité est juste indispensable car l’application cliente n’a plus à surveiller le serveur pour savoir s’il y a des nouveautés et on n’a pas besoin d’écrire du code spécifique pour se faire.
J’ai fais des recherches afin de savoir s’il y avait moyen d’avoir les deux framework mais cela n’a rien donné, j’ai fais d’autres cherches afin de savoir s’il y avait moyen d’avoir la même fonctionnalité sur Nest. Je suis tombé sur un article proposant d’utiliser Ably, sa à l’air sympa mais j’ai un gros problème avec l’idée de passer par un service externe alors que la fonctionnalité pourrai totalement être assumée seule.
En l’occurrence je cherche quelques chose comme Nest proposant la fonctionnalité de Feathers.
A partir du moment où l’on peu avoir une base commune entre le front et le back et la possibilité de faire communiquer les deux de manière structurée je pense que j’aurai les outils pour développer un projet qui sera aisément maintenable.
Toutes suggestion/remarque est la bienvenue.
Cordialement, La source