Sans framework
Comme on l'a déjà vu, le code Javascript est envoyé au client lors de la réponse à la requête HTTP initiale. Et bien entendu, pour que la page web réagisse correctement aux actions de l'utilisateur, il faut lui envoyer tout le code Javascript lui correspondant.
Or, comme dans quasiment tous les langages de programmation courants, il est possible de séparer ce code en plusieurs fichiers .js
. Cette découpe a beaucoup d'avantages ! Elle permet une lisibilité accrue de votre code, un dèbogage bien plus aisé — et donc un gain de temps considérable ! —, une portabilité de vos modules très facile et une stabilité de votre application plus qu'appréciable !
Ces points forts ne sont pas à ignorer, mais, on va le voir, ont un prix.
Sachant qu'aujourd'hui les navigateurs mettent en cache les fichiers téléchargés, le développeur front-end se trouve face à un dilemme, et non des moindres. Vaut-il mieux :
- Utiliser le cache et tout envoyer au client dès sa première visite sur le site ?
ou
- Envoyer pour chaque page uniquement les fichiers utiles à celle-ci ? C'est le lazy-loading.
Le choix entre ces deux options n'est pas si facile. En effet, chaque réponse a ses avantages et inconvénients qu'il faut bien avoir en tête avant de pencher pour l'une ou l'autre. Voici un petit tableau comparatif des deux approches :
|
Approche classique (1) |
Lazy-loading (2) |
Avantages |
Côté client
- Après la première page, navigation plus rapide
Côté serveur
|
Côté client
Côté serveur
- Économie des ressources serveur
|
Inconvénients |
Côté client
- Premier chargement rallongé
- Si le client vide son cache régulièrement, les avantages sont perdus... :(
Côté serveur
- Si un fichier est modifié, il sera rechargé par tous les utilisateurs même s'il ne concerne qu'une page
|
Côté client
- Dépendances pas forcément évidentes
Côté serveur
|
En conclusion, les deux approches se valent mais répondent à différentes attentes. Si vous développez un petit site comme Tutoriel AngularJS, je vous conseille de ne pas vous compliquer la vie et de partir sur la première solution. Le chargement de la première page sera effectivement rallongé, mais pas excessivement dans la mesure où c'est un petit site. D'autant que si vous optimisez correctement et compressez votre code pour la production, les fichiers seront nettement allégés.
En revanche, si vous vous engagez dans un projet d'envergure, je pense qu'il devient vite intéressant et rentable de passer au lazy-loading. Pour vous faciliter la vie, il existe des solutions clef-en-main. Je vous conseille RequireJS.
Le lazy-loading est un concept général qui peut s'appliquer à d'autres éléments d'un site web que le Javascript. Il existe beaucoup de plugins pour charger les images, vidéos ou autres éléments gourmands en ressources de façon asynchrone.
Accélérez le chargement de votre site grâce au lazy-loading
Avec AngularJS
Comme vous le verrez par la suite, AnglarJS pousse à la modularité. Même si lors des premiers chapitres on concentrera le code en un ou deux fichiers par souci de simplicité, on sera vite amené, avec la partie 3 surtout, à séparer le Javascript en différents fichiers dans de multiples dossiers. En effet, il s'agit d'être ordonné et méthodique pour développer avec ce framework.
Dans les versions antérieures d'AngularJS, le Lazy-loading était souvent préconisé. Une solution intégrant RequireJS a vu le jour : AngularAMD.
Cependant, il est aujourd'hui préférable de concaténer puis minimiser vos fichiers Javascript pour la production en UN seul et unique fichier. De cette façon, aucun problème de dépendance ne viendra vous embêter et l'application sera fluide une fois chargée.
Vos commentaires