Je regarde un peu les frameworks JS pour « applications dans le navigateur ».
Plus j’avance plus je me dis qu’avec l’approche mobile et la gestion du offline, on abandonne le web tel que je le connaissais. Même avec une foultitude de javascript et d’ajax, nous avons longtemps gardé l’approche « vue sur le client, application sur le serveur », et j’en ai été un grand défenseur. Aujourd’hui l’idée c’est plutôt « application sur le navigateur, API sur le serveur ».
La démarche n’est pas neuve en informatique et le milieu a déjà subit plusieurs aller-retour entre les modes « application sur le client », « application sur le client synchronisée avec un serveur », et « application sur le serveur, vue sur le client ». Il s’agit juste d’un de ces mouvements mais côté applications web.
J’ai regardé quelques frameworks, nommément BackboneJS, AngularJS et EmberJS, plus quelques comparatifs plus étendus. Pour l’instant j’ai l’impression qu’ils proposent surtout une notion de MVC, avec éventuellement un système de rendu avec liaison directe entre la partie modèle et la partie contrôleur.
Je peux me leurrer sur la complexité ou sur la valeur ajoutée en maintenance mais j’ai l’impression que ça ne sera pas mes points d’attention. Organiser mes classes je le ferai certainement moins bien si je prends tout de zéro, mais ce ne sera pas ma difficulté principale. Les liaisons directes entre vue et modèle ne me semblent pas non plus forcément indispensable, ça peut même être contreproductif vue la perte de performance.
Par contre j’ai besoin de quelque chose pour gérer le côté applicatif :
- M’abstraire des différentes solutions de stockage client, si possible en gérant les quotas, en ayant un mécanisme quand on se rend compte que ce stockage a été écrasé et nécessite d’être recréé, etc. Dans l’idéal quelque chose qui ne se contente pas d’être un simple wrapper et qui sait faire la différence entre des préférences et de gros contenus par exemple, en me proposant des solutions différentes pour les deux cas en fonction de ce qui est disponible sur le navigateur (on n’utilise pas les API File et le local storage dans les mêmes contextes)
- Avoir en ligne de vue le fonctionnement hors ligne, avec un vrai mécanisme de mise à jour de l’application, un vrai mécanisme de mise à jour des données (synchroniser dans les deux sens, un premier mécanisme de conflit ou de priorisation en cas de conflit), des notions de « à exécuter plus tard une fois en ligne », etc. La question du login est aussi importante (jeton temporaire ou permanent, quelle sécurité, etc.)
- Un mécanisme complet de gestion des URL à base de popState et pushState de façon à ne pas avoir qu’un seul lien vers la page d’accueil mais pouvoir gérer le bouton retour arrière du navigateur, les favoris, les liens entrants, etc. Bref, si je regarde un contenu particulier je dois avoir une URL spécifique, que je peux copier, transmettre, utiliser. Et par pitié oubliez les #!. C’est aussi plus difficile qu’il n’y parait dès qu’on fait interagir ça avec le mode offline.
- * Une gestion de base pour les contenus. Si on stocke hors ligne, j’aimerai avoir à jouer le moins possible moi-même avec les data:uri, et pouvoir référencer des images ou des contenus dans mes vues, à partir de choses stockées hors ligne dans un localstorage, indexdb ou équivalent
- C’est annexe et peut être non relié, mais si possible un jeu de widget ou templates par défaut qui s’adaptent aux différents contextes de navigation (android, ios, win8, la manière dont on présente les listes, les menus, les retours arrière, ne sont pas les mêmes)
Vous avez quoi pour gérer ces aspects particuliers ? Parce que pour dessiner des pages à partir de modèles et vues OK, mais pour gérer une application j’ai l’impression d’être sans rien.
Oh, et en plus vu qu’il s’agit d’être multi-device, je ne souhaite pas quelque chose qui rame sur smartphone. Par contre j’accepte de coder beaucoup de choses à la main, je ne cherche pas forcément un truc qui fasse le café. Même 4 ou 5 petites lib qui s’occupent de leur partie spécifique, ça me va.
Laisser un commentaire