Cet article explique comment interagir avec les Web Components dans vos scripts, en tenant compte de leur encapsulation via le shadow DOM. Les Web Components, de plus en plus populaires, permettent de créer des éléments réutilisables et agnostiques des frameworks. Cependant, leur isolation complique l'accès à leur contenu depuis des scripts externes. L'auteur détaille comment identifier les Web Components, accéder à leur shadow DOM (en mode open) et parcourir leur contenu pour interagir avec des éléments comme les champs de formulaire. Une approche essentielle pour les développeurs travaillant avec des bibliothèques ou frameworks utilisant ces composants.
L'article présente 10 techniques avancées en JavaScript/TypeScript. Ces techniques, testées en production, incluent l'orchestration de promesses, le cache mémoire sécurisé, la maîtrise des données binaires et l'optimisation asynchrone. Elles permettent de résoudre des problèmes de performance critiques, comme réduire les fuites de mémoire de 38%, diminuer les coûts de base de données de 60%, et accélérer le traitement des données de 3,2 fois. Des techniques comme le "Void Guard" pour éviter les promesses flottantes, l'utilisation de l'API Performance pour des mesures de temps précises, et l'utilisation de AbortController pour l'orchestration de promesses sont expliquées en détail. Ces stratégies peuvent transformer la manière dont vous construisez des applications robustes.
L'article explique comment utiliser la nouvelle API Invoker Commands pour contrôler les éléments interactifs comme les popovers et les boîtes de dialogue modales sans écrire de JavaScript. Cette API introduit les attributs command et commandfor pour les éléments <button>, permettant d'effectuer des actions comme show-modal, close, request-close pour les dialogues, et show-popover, hide-popover, toggle-popover pour les popovers. L'article détaille également les différences entre les dialogues et les popovers, ainsi que les avantages de cette API pour simplifier le développement web.
L'article explore comment réduire la charge de travail de JavaScript en utilisant des fonctionnalités modernes de HTML et CSS. Il propose de remplacer certains patterns JavaScript par des méthodes natives, comme les éléments <details> et <summary> pour les accordéons, ou une ligne de CSS pour ajuster la taille des champs de formulaire. L'objectif est de diminuer la quantité de JavaScript nécessaire, améliorant ainsi les performances et l'expérience utilisateur. L'auteur promet également une bibliothèque de composants avec ces nouvelles approches.
L'article explore les défis de la gestion des images sur canvas pour éviter de bloquer le thread principal. Il compare différentes approches pour décoder des images sans bloquer l'interface utilisateur, en mettant en évidence les limitations de chaque méthode selon les navigateurs (Chrome, Firefox, Safari). L'auteur partage son expérience en tant que développeur chez Iconik, où la gestion efficace des images est cruciale pour leur plateforme de gestion d'actifs médiatiques. Il discute des solutions comme l'utilisation de decode() et OffscreenCanvas, tout en soulignant le besoin d'une solution universelle pour une expérience utilisateur fluide et réactive.
L'article explore les problèmes de superposition des éléments en CSS et les solutions modernes comme les popovers et les dialogs. Il explique comment les contextes de superposition (stacking contexts) peuvent compliquer l'utilisation de z-index et comment les éléments comme les popovers et les dialogs peuvent accéder à la "top layer" pour résoudre ces problèmes. Cependant, l'article met en lumière un conflit potentiel entre les popovers et les dialogs, notamment en matière d'accessibilité, où un utilisateur au clavier peut rencontrer des difficultés pour interagir avec un popover (comme une notification toast) lorsqu'un dialog est ouvert. L'auteur illustre ce problème avec un exemple concret et un CodePen démonstratif.
Améliorez le temps de réponse du serveur (TTFB) et l'expérience utilisateur (UX) grâce au streaming HTTP. Cet article explique comment le streaming HTTP peut accélérer la perception de la vitesse de chargement des pages dynamiques en envoyant progressivement le contenu au navigateur, plutôt que d'attendre que toute la page soit générée. Cela est particulièrement utile pour les pages affichant de nombreuses lignes de données. L'article fournit un exemple en JavaScript/TypeScript utilisant le framework Mastro et Kysely pour la base de données, démontrant comment utiliser le streaming pour améliorer les performances.
Découvrez 17 fonctionnalités récentes de JavaScript qui pourraient vous avoir échappé. Cet article explore des innovations comme Intl.ListFormat pour formater des listes selon les règles locales, Intl.RelativeTimeFormat pour afficher des temps relatifs, et Intl.DurationFormat pour décrire des durées de manière appropriée à la langue. Il aborde aussi des améliorations pour les objets, les tableaux et les chaînes de caractères, offrant des solutions légères et efficaces pour réduire les dépendances. Parfait pour ceux qui veulent moderniser leur code ou simplifier leurs projets.
L'article explique comment utiliser l'API SpeechSynthesis pour permettre à un navigateur de lire du texte à voix haute. L'API est accessible via window.speechSynthesis et permet de créer des objets SpeechSynthesisUtterance pour spécifier le texte à lire. L'exemple de code montre comment faire parler le navigateur avec une simple ligne de code. Bien que cette API ne remplace pas les outils d'accessibilité natifs, elle peut les compléter pour améliorer l'expérience utilisateur, notamment pour les personnes malvoyantes.
dependency-cruiser est un outil open source qui permet de valider et visualiser les dépendances dans les projets JavaScript, TypeScript, CoffeeScript ou LiveScript. Il analyse les dépendances selon des règles personnalisables, détecte les violations (comme les dépendances circulaires ou manquantes), et génère des rapports sous forme de texte, graphiques (dot, mermaid, SVG), HTML ou CSV. Idéal pour intégrer dans un pipeline CI/CD, il s’installe via npm/yarn/pnpm et se configure facilement avec npx depcruise --init. Il offre aussi des visualisations claires pour mieux comprendre l’architecture de son code.
Cet article explore le concept des expressions en JavaScript, extrait du cours JavaScript for Everyone. Une expression est un bout de code qui, une fois évalué, produit une valeur (exemple : 2 + 2 donne 4). L’article détaille plusieurs types d’expressions : les expressions primaires (comme les littéraux numériques ou les variables), les opérateurs de regroupement (parenthèses pour contrôler l’ordre d’évaluation), et les expressions avec effets de bord (comme l’assignation ou l’appel de fonction, qui produisent une valeur tout en effectuant une action). Il aborde aussi des cas particuliers comme l’opérateur virgule, qui évalue plusieurs expressions mais ne retourne que la dernière, et souligne que la plupart des déclarations (sauf var) ne sont ni des expressions ni des instructions. L’objectif est de clarifier comment JavaScript interprète et manipule les valeurs, offrant une base solide pour comprendre la logique interne du langage.
L’article explique pourquoi il n’est plus nécessaire de développer des APIs REST à partir de zéro en 2025. Il met en avant des frameworks modernes comme tRPC, Fastify et Hono, qui permettent de réduire la quantité de code répétitif grâce à une approche basée sur les schémas, améliorant ainsi la rapidité et la sécurité des développements. L’idée centrale est d’utiliser ces outils pour automatiser et standardiser la création d’APIs, plutôt que de tout coder manuellement. Une lecture utile pour les développeurs souhaitant optimiser leur workflow et adopter des pratiques plus efficaces.
Cet article explique comment générer des "captures d’écran" au format SVG d’éléments HTML, notamment pour les réutiliser dans des fichiers HTML, EPUB ou PDF. L’auteur présente deux bibliothèques JavaScript permettant de convertir du HTML en SVG, avec une préférence pour html-to-svg. Il détaille une méthode pour créer une page web contenant plusieurs démonstrations de mises en page CSS, chacune convertie en SVG via un script. Chaque section peut être affichée ou téléchargée sous forme d’image SVG, avec un nom de fichier dérivé de l’ID de la section. L’astuce repose sur l’utilisation de Blob et de URL.createObjectURL pour générer un lien de téléchargement fonctionnel. Une solution pratique pour intégrer des visuels dynamiques et scalables dans divers formats de documents.
Obsidian explique comment ils minimisent les risques d’attaques par la chaîne d’approvisionnement (supply chain attacks) en limitant au maximum ses dépendances externes. L’application privilégie le développement en interne (comme pour les fonctionnalités Bases et Canvas), évite les bibliothèques tierces quand c’est possible, et utilise des versions figées et vérifiées pour les dépendances inévitables (comme Electron ou CodeMirror). Les mises à jour sont rares, méticuleusement testées et espacées dans le temps, avec une revue approfondie des changements et des sous-dépendances. Cette approche réduit la surface d’attaque et permet de détecter rapidement d’éventuels problèmes avant qu’ils n’affectent les utilisateurs. Une stratégie qui combine minimalisme, contrôle strict et prudence pour garantir un environnement sécurisé et privé.
Cet article explique pourquoi l’utilisation de Math.random() pour générer des mots de passe est dangereuse (prédictibilité, absence de sécurité cryptographique) et propose une solution robuste via l’API Web Crypto et sa méthode crypto.getRandomValues(). Cette dernière utilise des sources d’entropie cryptographiquement sécurisées, évitant les biais de distribution grâce au rejection sampling.
L’article fournit un exemple d’implémentation complète, incluant :
- Une classe
SecurePasswordGeneratorpersonnalisable (longueur, types de caractères, exclusion des caractères ambigus). - Une méthode pour calculer la force du mot de passe généré.
- Des bonnes pratiques : validation côté serveur, gestion mémoire, et compatibilité navigateur (HTTPS requis).
À retenir : Toujours privilégier crypto.getRandomValues() et éviter Math.random() pour toute application sensible. L’API est largement supportée (Chrome, Firefox, Safari) et garantit une sécurité optimale.
Lyra Rebane défend l’idée que beaucoup de sites n’ont pas besoin de JS ou de frameworks lourds pour offrir une expérience riche : modernes, HTML et CSS seuls suffisent souvent. L’article montre de nouveaux outils CSS (naming, nesting, pseudo-classes, color mixing, unités viewport dynamiques, etc.), des composants interactifs accessibles (via « \:checked », « \:has », « details/summary », etc.), et des effets visuels performants. L’auteur insiste aussi sur les bénéfices pour la performance, l’accessibilité, la vie privée, et le plaisir de coder léger, esthétique et fonctionnel.
Cet article présente des astuces pour un code plus propre, rapide et maintenable. Découvre les named capture groups en regex pour un parsing lisible, Object.fromEntries() pour transformer des données en un clin d’œil, ou les champs privés de classe (#) pour encapsuler ton état. Utilise le top-level await pour simplifier tes modules, l’API Intl pour un formatting localisé sans dépendances, ou le pipeline operator (|>) pour des chaînes de fonctions élégantes. WeakMap stocke des métadonnées sans polluer tes objets, les opérateurs d’assignation logique (||=, &&=, ??=) réduisent les conditionnelles, et Array.at(-1) élimine les acrobaties d’indexation. Des outils comme optional chaining (?.) ou Intl remplacent avantageusement des librairies externes.
L’article souligne l’importance d’une gestion rigoureuse des versions npm pour sécuriser ses projets JavaScript, surtout après des attaques comme celles sur chalk et debug. Il recommande d’utiliser des versions exactes pour les dépendances critiques (ex: "react": "18.2.0") plutôt que des ranges permissifs (^, ~, >=), et d’always commiter les lock files (package-lock.json ou yarn.lock) pour éviter les incohérences entre environnements. Une méthodologie sécurisée inclut : des audits réguliers (npm audit), des mises à jour contrôlées (via npm-check-updates), des tests complets après chaque modification, et l’intégration de vérifications automatiques dans le CI/CD. L’objectif est de minimiser les risques liés à la supply chain en privilégiant la sécurité à la commodité, notamment pour les packages critiques en production. Une checklist pratique résume les bonnes pratiques : versions exactes, lock files versionnés, audits automatiques, monitoring continu et backups des versions stables. La sécurité devient ainsi un investissement clé pour la stabilité des projets.
L’article d’Alsacréations explique clairement la différence entre les redirections HTTP 301 (permanente) et 302 (temporaire), deux codes essentiels pour gérer les changements d’URL. Une redirection 301 indique aux moteurs de recherche et aux navigateurs que la page a définitivement déménagé, transférant ainsi le référencement (SEO) et l’autorité de l’ancienne URL vers la nouvelle. Elle est idéale pour les migrations de site ou les changements de structure durables. À l’inverse, la redirection 302 signale un déplacement temporaire, utile pour des maintenance ou des tests, mais sans transférer le capital SEO. L’article détaille aussi comment les implémenter via le fichier .htaccess (Apache) ou la configuration serveur, et souligne l’importance de choisir le bon type pour éviter de nuire au référencement ou à l’expérience utilisateur. En résumé : utilisez le 301 pour les changements définitifs, et le 302 pour les situations provisoires.
Il s'agit d'une visionneuse PDF JavaScript intégrable