L’article de Victor Ayomipo, publié sur Smashing Magazine, remet en question la règle souvent absolue de ne jamais bloquer le fil principal (main thread) du navigateur en JavaScript. Bien que cette pratique soit généralement déconseillée pour éviter de figer l’interface utilisateur, l’auteur explique qu’il a dû y déroger lors du développement d’une extension Chrome de capture d’écran, Fastary. Malgré l’utilisation d’un Offscreen Document (un processus en arrière-plan), les opérations sur le canevas restaient lentes, parfois plus que si elles avaient été exécutées directement sur le fil principal.
L’argument central repose sur les limites des architectures recommandées, qui séparent strictement les tâches lourdes des opérations d’interface. L’auteur souligne que la communication entre les différents contextes (fil principal, Web Workers, Service Workers) peut introduire des latences supplémentaires, notamment lors de la sérialisation et désérialisation des données. Dans certains cas, comme celui de son extension, le transfert de travail vers un fil secondaire s’est avéré plus lent que de le laisser sur le fil principal.
Pour illustrer ce propos, l’article aborde brièvement l’architecture d’isolation des contextes du navigateur, expliquant comment les différents environnements (fil principal, Web Workers, etc.) communiquent entre eux. Cette analyse met en lumière les compromis inhérents aux bonnes pratiques en matière de performance, invitant les développeurs à évaluer au cas par cas l’opportunité de bloquer le fil principal.
Oskar Dudycz partage une leçon apprise à propos de la gestion des données, notamment des grands entiers (bigints) dans les environnements JavaScript/TypeScript. Il explique les défis de la sérialisation et de la désérialisation des données, en particulier avec JSON, qui ne supporte pas nativement les grands entiers ou les dates. Il décrit ses tentatives pour contourner ces limitations, y compris une approche "sneaky" qui a finalement causé des problèmes, soulignant l'importance de bien parser les données plutôt que de deviner leur type. Il conclut en recommandant une approche plus rigoureuse et moins "sneaky" pour éviter les erreurs.
Tout est dans le titre
Tout est dans le titre
Tout est dans le titre... sinon il y a API Platform :-)
Tout est dans le titre
Tout est dans le titre
Tout est dans le titre
L'auteur montre surtout comment créer son propre "sérialiseur / désérialiseur", notamment quand on souhaite créer une API.
Tout est dans le titre
Tout est dans le titre
Tout est dans le titre