Maison > interface Web > js tutoriel > Développement natif JavaScript après Internet Explorer

Développement natif JavaScript après Internet Explorer

Lisa Kudrow
Libérer: 2025-02-17 12:48:10
original
440 Les gens l'ont consulté

Native JavaScript Development after Internet Explorer

Native JavaScript Development after Internet Explorer

Bienvenue dans la troisième et dernière partie de cette série, où nous explorerons la retraite de l'ancien IE et l'impact de cet incident sur le champ de développement frontal. Jusqu'à présent, nous avons traité des technologies obsolètes qui peuvent être rejetées en toute sécurité, ainsi que des propriétés HTML5 et CSS3 qui sont désormais pleinement soutenues nativement dans les navigateurs grand public. Aujourd'hui, nous nous concentrerons sur la technologie JavaScript native et d'autres contenus qui ne figurent pas dans les catégories ci-dessus. Merci encore à Caniuse.com, c'est une ressource très précieuse. Je vais également réitérer le dernier avertissement:

Cet article n'a rien à voir avec l'opportunité de renoncer à la décision de soutenir
vieil IE

. Vous devez prendre vos propres décisions en fonction des détails spécifiques de votre site Web ou de votre application.

sans plus tarder, continuons!

points clés

Adoption des API JavaScript moderne: avec le retraite d'Internet Explorer, les développeurs peuvent désormais utiliser des API JavaScript modernes (comme le codage de base64 et les constructions blob) directement dans les navigateurs traditionnels sans polyfilant, améliorant ainsi les performances et la compatibilité.
  • Capacités de communication améliorées: la disponibilité des API telles que la messagerie de canaux et les coffres Web dans les navigateurs modernes favorise respectivement une communication inte-script plus efficace et des connexions persistantes entre les navigateurs et les serveurs.
  • Introduction de la syntaxe ES6: Prise en charge des fonctionnalités ES6 telles que
  • et
  • pour les déclarations de variables au niveau des blocs et la popularité des fonctions Arrow permet aux développeurs d'écrire un code plus propre et plus efficace. const let Sécurité et confidentialité d'abord: API de cryptographie Web et la politique de sécurité du contenu (CSP) sont désormais entièrement prises en charge, fournissant un outil puissant pour améliorer la sécurité des applications Web.
  • Optimisation des performances: de nouvelles fonctionnalités telles que l'API de visibilité sur la page et la requête Animation ont amélioré l'efficacité des applications Web et optimiser l'utilisation des ressources et les performances d'animation.
  • Développement Web sécurisé à l'avenir: avec la désactivation de l'explorateur Internet, les développeurs peuvent tirer parti du plein potentiel de HTML5, CSS3 et JavaScript sans se limiter à la compatibilité des navigateurs hérités, ce qui le rend plus innovant et plus avancé les applications sexuelles sexuelles de la façon dont les applications sexuelles plus innovantes et prospectives ouvrent la voie à la manière .
    API JavaScript
  1. Dans cette section, nous présenterons beaucoup de fonctionnalités, d'API et de fonctionnalités JavaScript. Qu'ont-ils en commun? Aucun d'eux ne peut être vraiment utilisé pour les anciens IES, nécessite l'utilisation de divers polyfills ou doit réaliser leurs effets via divers autres cadres et bibliothèques, si possible. Dans l'environnement actuel (IE11 Edge), ils ont un support natif intégré au navigateur, ce qui signifie qu'ils peuvent être utilisés directement.

Base64 Encodage et décodage (BTOA et ATOB)

Base64 est un outil très utile sur le Web. Beaucoup d'entre vous l'ont peut-être utilisé pour intégrer des polices ou des images dans CSS. Une autre utilisation courante consiste à faire face à diverses ressources qui interfèrent généralement avec le protocole de transmission. Un bon exemple est l'authentification d'accès de base, où la paire de nom d'utilisateur: mot de passe est emballée à l'aide de la base64, puis envoyée au serveur. La prise en charge native pour les opérations de codage / décodage signifie qu'elles peuvent être exécutées plus rapidement. Voici quelques ressources d'introduction:

  • atob () et btoa () documents sur mdn
  • base64.js polyfill

build blob

Un grand objet ou un blob binaire est une collection de données brutes stockées dans une seule entité dans un système de gestion de base de données. Il peut s'agir d'un clip audio ou d'une image et est stocké au format Base64. Ou un ensemble d'images. Dans de nombreux cas, les champs blob sont utilisés pour les données dont les structures de données ne sont pas aussi strictes que les tableaux normaux ou les schémas de table tels que les objets JSON. Certains d'entre vous se souviennent peut-être de l'ancêtre de l'interface blob, à savoir blobbuilder. Cependant, cette approche a été obsolète et il est fortement recommandé que toutes les opérations BLOB soient effectuées via la nouvelle interface.

Plus important encore, puisque cette collection est très similaire à un fichier, l'interface native de l'objet Blob a été utilisée comme base de l'interface fichier (). Il existe donc une belle fonctionnalité appelée "URL blob" qui permet aux développeurs de créer des URL pour les objets blob qui peuvent être utilisés n'importe où peut être utilisé. Dans cet esprit, le support natif couvre désormais tous les navigateurs traditionnels, ce qui est très apprécié.

  • blob sur mdn
  • BLOB URL sur MDN
  • Introduction à JavaScript Blob et Interfaces de fichier

Messagerie de canaux

Habituellement, deux scripts exécutés dans différents contextes de navigateur sont interdits de communiquer entre eux pour éviter de nombreux pièges de sécurité. Cependant, parfois une telle communication est non seulement nécessaire, mais est vraiment nécessaire. C'est là que l'API de messagerie Channel entre en jeu. Cette interface permet à nos deux scripts de communiquer entre eux via un pipeline bidirectionnel. C'est comme donner à chacun un talkie-walkie sur le même canal. Très intelligent, n'est-ce pas?

  • Introduction à la messagerie Web HTML5 sur dev.opera
  • MessageChannel sur mdn

Variables constant et au niveau du bloc

const et let sont deux nouvelles façons de définir des données dans ES6. Bien que VAR définisse les variables qui ont des lunettes globales ou fonctionnées, le nouveau contenu a des lunettes de niveau bloc. Cela signifie que la portée des variables créées avec const et LET est limitée aux paires de supports qui les définissent.

bien que LET définisse une variable (sauf la portée) qui se comporte de la même manière qu'une variable classique, une constante (const) est une référence en lecture seule à une valeur. Il ne peut pas être réaffecté, ne peut pas être redéfini et ne peut partager le même nom avec aucune autre variable ou fonction dans la même plage. La seule exception est lorsqu'une constante est un objet avec ses propres propriétés. Ces propriétés ne sont pas protégées par des changements et se comportent comme des variables normales.

avec cela étant dit, consultez comment utiliser correctement les variables constantes et au niveau du bloc dans votre code:

  • constante sur mdn
  • Soit
  • sur MDN
  • Préparation sur SitePoint Ecmascript 6: LET et const
  • wes bos 'es6 let vs const variable

Logotage de la console

La plupart des développeurs frontaux conviendront que la console Web est l'un des outils les plus utiles en main lorsque les scripts se comportent anormalement. Cependant, Internet Explorer est essentiellement lent à l'intégrer, et seule la version 10 commence à fournir un support complet. Maintenant, avec la retraite de l'ancien IE , rien ne peut nous empêcher de tirer le meilleur parti de cette fonctionnalité. Si vous devez actualiser vos connaissances et même trouver de nouvelles façons d'utiliser la console, consultez les spécifications suivantes:

    Console sur MDN
Partage des ressources source

Le partage de ressources croisées (CORS) est une API HTML5 qui permet des demandes de ressources en dehors de son propre domaine. Il décrit un ensemble d'en-têtes HTTP qui permettent aux navigateurs et aux serveurs de demander des ressources distantes lors de l'octroi d'autorisations spécifiques. Les ressources suivantes sont un bon point de départ pour apprendre à utiliser correctement cette fonctionnalité:

    Contrôle d'accès DOM à l'aide du partage de ressources d'origine transversale sur dev.opera
  • Contrôle d'accès HTTP (CORS) sur MDN
  • compréhension approfondie des COR sur SitePoint
API de cryptographie Web

La sécurité et la confidentialité sont deux des fonctionnalités les plus recherchées de toute application ces jours-ci, ce qui signifie que le bon (et le chiffrement rapide) est très apprécié. Maintenant, tous les navigateurs grand public prennent systématiquement l'API de cryptographie Web, à l'exception de IE11 (qui met en œuvre les spécifications des versions plus anciennes) et de Safari (qui nécessite le préfixe crypto.webkitsubtle). Heureusement, certaines fonctions spécifiques, telles que la génération de valeurs aléatoires, sont mieux implémentées. Par conséquent, il est plus facile que jamais de mettre en œuvre des éléments cryptés en utilisant le support natif. Voici quelques guides sur la façon de le faire correctement:

    Objet crypto sur mdn
  • getrandomValues ​​sur mdn
  • API de cryptographie Web pour les navigateurs hérités sur GitHub Shim
Internationalisation

La prévalence de l'accès à Internet aujourd'hui signifie que les visiteurs de votre site Web peuvent provenir du monde entier. Étant donné que les gens font confiance aux choses plus familières, il est préférable de présenter toutes les informations dans leur langue et dans le format auquel ils sont habitués. C'est là que vous avez besoin d'internationalisation (également connue sous le nom de I18N) et de localisation (ou L10N). Cela ressemble-t-il à un non-sens? Citation Aurelio de Rosa dans son article sur la façon de réaliser l'internationalisation (i18n) en javascript:

L'internationalisation (également connue sous le nom de I18N) est le processus de création ou de conversion de produits et services afin qu'ils puissent facilement s'adapter à des langues et des cultures locales spécifiques. La localisation (également connue sous le nom de L10N) est le processus d'ajustement des logiciels internationalisés pour une région ou un langage spécifique. En d'autres termes, l'internationalisation est le processus d'adaptation de votre logiciel pour prendre en charge plusieurs cultures (formats de devises, formats de date, etc.), tandis que la localisation est le processus de mise en œuvre d'une ou plusieurs cultures.

Le support du navigateur est légèrement meilleur qu'au début de cette année, et Safari V10 a rejoint les rangs en septembre. Cela semble-t-il intéressant? Voici quelques ressources pour vous mettre sur la bonne voie:

  • API international sur MDN
  • API de l'internationalisation JavaScript - Bref introduction
  • comment réaliser l'internationalisation en JavaScript (i18n)

Traitement des requêtes multimédias

La conception Web réactive est la norme actuelle pour les sites Web efficaces, et la caractéristique clé qui le rend possible est l'existence de requêtes multimédias. MatchMedia présente des requêtes multimédias de CSS à JavaScript, offrant aux développeurs une plus grande flexibilité pour optimiser le contenu sur divers appareils. Un bon exemple consiste à gérer les modifications du mode portrait au mode paysage et au mode inverse pour les téléphones mobiles et les tablettes. Bien qu'il existe une API qui gère la détection d'orientation de l'appareil, la majeure partie de la prise en charge du navigateur est partielle et seul Microsoft Edge fournit une prise en charge complète. Voici quelques ressources d'introduction sur ce sujet:

  • Test Media Query sur MDN
  • window.matchMedia sur mdn
  • Comment utiliser les requêtes multimédias en javascript sur SitePoint

Extension de source de médias

Les extensions de source multimédia (MSE) ajoutent des fonctionnalités supplémentaires aux éléments vidéo et audio sans utiliser de plugins. Cela vous fournit un streaming multimédia adaptatif, un streaming en temps réel, une modification vidéo et vidéo. YouTube utilise MSE dans ses joueurs HTML5 depuis septembre 2013. Le support du navigateur est également assez bon, seuls iOS Safari et Opera Mini manquent de cette fonctionnalité. IE11 est entièrement pris en charge uniquement lorsqu'il est utilisé sur Windows 8. Malheureusement, les utilisateurs IE11 / Win7 ne peuvent pas bénéficier de cette technologie. Que vous soyez juste curieux ou que vous souhaitiez vraiment commencer à utiliser cette API, vous trouverez les ressources suivantes très utiles:

  • API MediaSource sur MDN
  • Extension de source de média sur MSDN
  • HTML5 Média Source Extension: Apporter des vidéos de production sur le Web (Smashing Magazine)

Observer mutationnel

Les applications JavaScript deviennent de plus en plus complexes chaque jour. En tant que développeur, vous devez contrôler les changements qui se produisent sur la page, en particulier lorsque l'arbre Dom change ou "mute". Le besoin de ce type de surveillance n'est pas nouveau, mais il y a en fait un événement de mutation solution. Le problème avec cette interface est qu'en tant qu'événements, ils sont tous deux synchrones (déclenchés lors de l'appel et peuvent empêcher les autres événements d'être déclenchés) et doivent également être capturés ou bouillonnants dans le DOM. Cela déclenche à son tour d'autres événements, surchargeant le thread JavaScript et générant une défaillance en cascade entière dans certains cas spéciaux, provoquant le plantage du navigateur.

Par conséquent, l'événement de mutation a été obsolète et remplacé par l'observateur de mutation. Vous pourriez demander, quelle est la différence? Premièrement et surtout, l'observateur est asynchrone. Ils n'empêcheront pas votre script d'exécuter. Ils ne sont pas déclenchés à chaque mutation, mais sont adoptés par lots une fois l'activité principale terminée. Plus important encore, vous pouvez affiner l'observateur pour observer toutes les modifications du nœud ou observer uniquement les modifications d'une catégorie spécifique (telles que les modifications à uniquement des sublilistes ou uniquement des attributs, etc.). Utilisez les ressources suivantes pour commencer à apprendre à faire ceci:

  • mutationobserver sur mdn
  • Comprendre l'observateur de mutation
  • Nouvelles variantes qui se développent sur SitePoint

Visibilité de la page

La navigation sur les onglets a changé la façon dont nous interagissons avec le réseau. Il n'est pas rare que beaucoup de gens ouvrent des dizaines de pages en même temps. Chaque page effectue ses propres actions, exécute ses scripts, télécharge les ressources qu'elle possède, etc. Même si un seul onglet peut être activé à la fois, toutes les pages ouvertes consomment le temps du processeur et la bande passante. Certaines demandes peuvent envoyer périodiquement et recevoir des mises à jour sur la connexion. Mais si vous n'ouvrez pas l'application dans l'onglet Activité, doit-il être mis à jour toutes les x secondes en arrière-plan? Cela semble un peu gaspillé, n'est-ce pas? En particulier dans les appareils mobiles et les plans de données, chaque ressource est précieuse.

C'est là que l'API de visibilité de la page entre en jeu. Cette interface permet aux développeurs de savoir si leur application se trouve dans l'onglet actif ou en arrière-plan. Prenons l'application que j'ai mentionnée plus tôt qui effectue des mises à jour comme exemple. En utilisant l'API de visibilité de la page, vous pouvez détecter quand l'application est en arrière-plan, puis au lieu d'effectuer des mises à jour toutes les 5 ou 10 secondes, vous le faites toutes les 60 secondes ou même moins. Une fois que la page redevient visible, vous pouvez revenir au taux de mise à jour normal. Très cool, n'est-ce pas?

Alors, qu'attendez-vous? Consultez le guide suivant pour commencer à lancer votre application pour la visibilité de la page. Vos utilisateurs vous remercieront:

  • API de visibilité de la page sur MDN
  • Introduction à l'API de visibilité de la page sur SitePoint

Événement de conversion de page

Avez-vous déjà utilisé un formulaire Web qui apparaît lorsque vous essayez de quitter ou de fermer la page, vous incitant que vous avez des données non enregistrées? Ceci est courant de nos jours sur les pages où vous modifiez les paramètres, les détails du profil, etc. Comment les scripts de la page savent-ils que vous partez? Ils écoutent les événements de PageHide.

PageHide et ses partenaires Pageshow sont les principaux protagonistes des événements de conversion de page. Nous avons vu au-dessus de quoi le premier est principalement utilisé. L'objectif principal de PageShow est de déterminer si la page est chargée à partir du cache ou directement à partir du serveur. Ce n'est pas l'utilisation la plus courante, mais si vous avez besoin de l'une ou l'autre fonctionnalité, consultez les ressources suivantes:

  • Pageshow sur mdn
  • PageHide sur mdn

DequestanimationFrame

L'animation sur le Web a parcouru un long chemin des premiers <marquee></marquee> et <blink></blink> aux gifs d'animation, des effets jQuery, aux animations actuelles CSS, SVG, Canvas et WebGL. Une constante de toutes ces méthodes est la nécessité de contrôler l'écoulement de l'animation et de la rendre aussi fluide que possible.

La méthode initiale utilise SetInterval et setTimeout pour contrôler les étapes de l'animation. Le problème est que les résultats ne sont pas cohérents de manière fiable et que l'animation est généralement rude. C'est pourquoi une nouvelle interface a été conçue - DemandeAmationFrame. Le principal avantage de cette approche est que le navigateur peut faire correspondre librement la demande à son propre cycle de dessin, lisant ainsi considérablement l'animation. Avec son homologue CanceLanimationFrame, ces deux méthodes sont à la base de l'animation JavaScript moderne.

Comme d'habitude, voici quelques ressources qui vous amèneront à maîtriser cette fonctionnalité.

  • Requestanimationframe sur mdn
  • CanceLanimationFrame sur MDN
  • Animation simple à l'aide de requestanimationframe sur SitePoint
  • Regardez sur SitePoint: Utilisez la requête de demande pour les tests de performances

API chronométré

Les performances en ligne sont un sujet brûlant aujourd'hui, et tout le monde fait de son mieux pour réduire les ressources, optimiser les scripts et tirer le meilleur parti des outils dont ils disposent. Il existe deux façons principales de résoudre ce problème: les performances du réseau (la vitesse de livraison des sites et des ressources) et des performances de l'utilisateur (la vitesse d'exécution des applications elles-mêmes).

Les performances du réseau sont desservies par deux API: synchronisation de navigation et synchronisation des ressources. Ils fournissent tous tous les types d'informations liées aux performances du réseau, telles que le DNS, le CDN, la demande et le temps de réponse, etc. La seule différence est que la synchronisation de navigation cible la page HTML elle-même, tandis que les ressources synchronisaient toutes les autres ressources (images, scripts, médias, etc.).

En termes de performances de l'utilisateur, nous avons une API: synchronisation de l'utilisateur. Cette API gère deux concepts principaux, appelés Mark (horodatage très détaillé) et mesure (l'intervalle de temps entre deux marques). Utilisez ces concepts pour mesurer la vitesse d'exécution du code et identifier où il doit être optimisé. Malheureusement, Safari ne prend toujours pas en charge cette API, donc un polyfill peut être nécessaire.

La maîtrise de l'utilisation de ces interfaces est essentielle pour garantir des performances optimales de votre site Web ou de votre application. C'est pourquoi nous vous fournissons du matériel d'apprentissage:

  • Timing de navigation
    • API de synchronisation de navigation sur MDN
    • Analyser le chargement de la page à l'aide de l'API de synchronisation de navigation sur SitePoint
    • API de synchronisation de navigation sur SitePoint: Comment analyser efficacement le chargement des pages
  • Timing des ressources
    • API de synchronisation des ressources sur MDN
    • Mesurer les performances du réseau à l'aide de l'API de synchronisation des ressources sur Google Developers Blog
    • Introduction à l'API de synchronisation des ressources sur SitePoint
  • Timing de l'utilisateur
    • Découvrez l'API de synchronisation utilisateur sur SitePoint
    • API de synchronisation de l'utilisateur sur HTML5ROCKS
    • User-Timing-rum.js et usertiming.js polyfill sur github

tableau typique

Les tableaux typés JavaScript sont des objets de type tableau et fournissent un moyen d'accéder aux données binaires brutes. Pour une flexibilité et une efficacité maximales, la mise en œuvre est effectuée le long de deux concepts: un tampon (bloc de données brutes) et une vue (fournissant un contexte qui peut interpréter les données de tampon). Il existe de nombreuses API Web qui utilisent des tableaux typés, tels que WebGL, Canvas 2D, XMLHTTPREQUEST2, fichier, source multimédia ou Websockets binaires. Si votre code gère ces techniques, vous pouvez être intéressé par les ressources suivantes:

  • Tableau typé javascript sur mdn
  • Array typique: données binaires dans le navigateur (html5Rocks)

WebSockets

Nous avons discuté de la messagerie de canaux plus tôt et comment il fait que deux scripts différents communiquent directement entre eux. WebSockets est similaire à cela, avec plus de fonctionnalités. Utilisez cette API pour créer un canal de communication persistant entre le navigateur et le serveur Web.

Comme HTTP, le protocole WebSocket a également deux versions: disapes (ws: // ...) et sécurisé (wss: // ...). Il considère également les serveurs proxy et les pare-feu, à travers lesquels les tunnels sont ouverts. En fait, les connexions WebSocket commencent avec une connexion HTTP normale, assurant la compatibilité avec l'infrastructure existante.

WebSockets est une technologie fascinante (ils ont même un site Web dédié) et il y a beaucoup à apprendre. Pour vous aider à démarrer, voici quelques ressources sélectionnées:

  • À propos de WebSocket sur WebSocket.org
  • Websockets sur mdn
  • Introduction à l'API HTML5 WebSockets sur SitePoint

WEB WEBLESS

Par défaut, toutes les tâches JavaScript s'exécutent dans le même thread. Cela signifie que tous les scripts de la page doivent partager la même file d'attente de temps de traitement. C'est bon et simple lorsque le processeur n'a qu'un seul noyau. Cependant, les processeurs modernes ont au moins des cœurs doubles, et certains modèles atteignent même 4, 6 ou 8 cœurs. Ne serait-ce pas bien si certaines tâches peuvent être déplacées dans des fils séparés qui peuvent être traités par des noyaux supplémentaires disponibles? C'est pourquoi les travailleurs du Web ont été inventés.

À l'aide de l'API des travailleurs Web, les développeurs peuvent déléguer des fichiers de script nommés aux travailleurs en cours d'exécution dans des threads séparés. Le travailleur ne répond qu'au script qui l'a créé, communique dans les messages bidirectionnelle, peut exécuter des appels XMLHTTPRequest et n'interagit pas avec certaines méthodes et propriétés par défaut de l'objet DOM ou Window. Dans la catégorie des exceptions, nous pouvons mentionner des mécanismes de stockage de données tels que WebSockets (qui peuvent affecter la gestion des connexions WebSocket aux travailleurs) ou IndededDB. Avoir votre propre assistant pour gérer les tâches secondaires, tandis que le fil principal se concentre sur l'exécution de l'application entière, rien n'est mieux que cela.

Pour commencer cette fonctionnalité (y compris une liste de fonctions et de classes disponibles pour le travailleur Web), consultez les ressources suivantes:

  • API des travailleurs Web sur mdn
  • Fonctions et classes disponibles pour les travailleurs Web sur MDN
  • Threading JavaScript à l'aide de travailleurs Web HTML5 sur SitePoint

xmlhttprequest Fonctions avancées

L'adoption de XMLHttpRequest indique une nouvelle ère de développement Web. Les données peuvent désormais être échangées entre le navigateur et le serveur sans recharger toute la page. AJAX est la nouvelle norme qui permet à chacun d'avoir une seule application de page.

Cette technologie utile sera développée, ce qui est normal. C'est ainsi que XHR obtient de nouvelles fonctionnalités, telles que les téléchargements de fichiers, transférer des informations de progression ou envoyer directement des données de formulaire. Toutes ces fonctionnalités (légères exceptions dans le cas d'IE11 ou Android plus ancien) sont prises en charge par des navigateurs grand public après la retraite. Pour plus de détails, n'hésitez pas à vérifier les ressources suivantes:

  • formdata sur mdn
  • Simplifiez AJAX en utilisant l'interface HTML5 FormData sur SitePoint
  1. Autres fonctions

Le Web moderne est plus que HTML, CSS et JavaScript. Il existe de nombreux héros invisibles (et non rassasiés) dans les coulisses qui travaillent dur pour rendre notre expérience en ligne aussi grande que possible. Ci-dessous, nous discuterons de certaines de ces fonctionnalités qui, comme celle ci-dessus, ne peuvent pas être utilisées sur des navigateurs plus âgés IE (ils sont connus pour leurs vulnérabilités de sécurité et leur manque de soutien aux fonctionnalités modernes). Chargement JavaScript non bloquant en utilisant "async" et "différer"

Chaque développeur Web apprend que les scripts "bloquent les charges" et bloquent toute la page jusqu'à ce qu'ils soient chargés. Nous nous souvenons tous de la suggestion de charger jQuery avant

. Cependant, dans le cas d'une seule application de page, cette approche est inutile car tout le comportement du site Web est motivé par JavaScript. Cela nous ramène au point de départ.

Mais la vérité est que dans la plupart des cas, votre site Web ou votre application n'a besoin qu'une partie de tout JavaScript qu'elle charge. Le reste sera nécessaire plus tard, ou ils effectuent des opérations qui n'affectent pas le DOM. La manière évidente consiste à charger uniquement les scripts clés de manière régulière et à charger le reste d'une manière qui n'affecte pas négativement l'application. En fait, il existe deux méthodes de chargement de ce type.

La première méthode consiste à utiliser l'attribut de différence, qui est utilisé pour marquer les scripts qui n'affectent pas le DOM et sont destinés à être exécutés après l'analyse du document. Dans la plupart des cas, ces scripts gèrent les interactions utilisateur, afin qu'elles puissent être chargées en toute sécurité de cette manière. La deuxième méthode utilise l'attribut async et marque un script qui, bien que chargé en parallèle, sera exécuté immédiatement après le téléchargement. Cependant, il n'est pas garanti que l'ordre de chargement est le même que l'ordre d'exécution.

tous les avantages de ces deux paramètres, ils deviennent un outil important pour améliorer les performances du site Web et de l'application. Consultez les ressources suivantes pour plus d'informations sur la façon et le moment de l'utilisation de cette technologie:

supprimer le blocage du rendu JavaScript sur Google Developers

    Chargement JavaScript non bloquant à l'aide de l'async HTML5 et reportez-vous sur SitePoint
  • Politique de sécurité du contenu
Dès le début, la sécurité sur le Web a été construite autour du modèle "homologue", ce qui signifie que seuls les scripts du même domaine peuvent interagir avec une page donnée. Cependant, au fil du temps, nous devons intégrer des scripts tiers dans nos pages: bibliothèques JavaScript de CDN, widgets de médias sociaux de Facebook, Google ou Twitter et d'autres cas similaires. Cela signifie que nous ouvrons la porte et permettons au script "invité" de rencontrer notre cour métaphorique. Le problème se pose lorsque des scripts malveillants se faufilent également et sont exécutés comme d'autres scripts - une méthode d'attaque que nous connaissons tous, appelée script inter-sites ou XSS.

La stratégie de sécurité du contenu est la principale arme contre XSS. Ce mécanisme contient un ensemble de politiques et directives qui spécifient quels scripts peuvent être exécutés, où les ressources peuvent être chargées, que les styles ou scripts en ligne puissent être exécutés, etc. CSP est basé sur les listes blanches, ce qui signifie que par défaut, tout est refusé et que seules les ressources spécifiées sont accessibles. Cela signifie que lorsque la règle est affinée, elle ne sera pas exécutée même si le script malveillant est inséré dans notre site.

Voici quelques ressources qui peuvent vous aider à mieux comprendre ce mécanisme:

  • Référence de la politique de sécurité du contenu
  • Utilisez des stratégies de sécurité de contenu sur SitePoint pour améliorer la sécurité Web
  • Introduction aux politiques de sécurité du contenu sur HTML5ROCS

Protocole HTTP / 2

Dès le début, le Web a fonctionné sur le protocole HTTP. Cependant, alors que le premier s'est développé très rapidement, HTTP est resté en grande partie le même. Dans l'écosystème complexe des sites Web et applications modernes, HTTP peut devenir un goulot d'étranglement des performances. Bien sûr, il existe certaines techniques et pratiques qui peuvent optimiser ce processus, mais seulement beaucoup peuvent être faits.

C'est pourquoi la deuxième itération du protocole a été développée, appelée HTTP / 2, qui est basée sur le protocole SPDY de Google. Il a été approuvé en février 2015 et les spécifications ont été publiées sous le nom de RFC 7540 en mai 2016. Jusqu'à présent, les navigateurs grand public ne prennent en charge HTTP / 2 que sur les connexions cryptées, et il est très probable qu'il restera ainsi dans un avenir prévisible pour encourager les propriétaires de sites à passer à HTTPS.

L'adoption HTTP / 2 n'est pas seulement une question de modification de certains paramètres de configuration. Certaines meilleures pratiques pour améliorer les performances HTTP peuvent affecter les performances sur HTTP / 2. Pour déterminer si votre site Web est prêt à utiliser HTTP / 2, vous pouvez consulter les ressources suivantes:

  • Préparation pour HTTP / 2: un guide pour les concepteurs Web et les développeurs (Smashing Magazine)
  • comment HTTP / 2 modifie les meilleures pratiques pour les performances Web (nouveau blog de relique)
  • http / 2 pour les développeurs Web (blog CloudFlare)

Conseils de ressources: préfetch

Les performances Web sont un sujet brûlant aujourd'hui, et pour une bonne raison. Comme le savent tout le personnel du domaine, une grande partie du temps de chargement de page est prise en compte par les téléchargements des ressources. Ne serait-ce pas génial si vous pouvez utiliser du temps après le chargement de la page pour précharger les ressources pour les prochaines étapes? C'est à cela que servent les invites de ressources.

Les invites de ressources sont une série d'instructions qui indiquent au navigateur de fournir les ressources spécifiques qui seront nécessaires à l'avenir. La liste contient cinq invites comme suit:

  • dns-préfetch
  • Préconnecter
  • Préfet
  • Preload
  • PRÉRENDER

de ces cinq options possibles, la seule avec un bon support de navigateur actuellement est la préfet. Cette invite indique au navigateur de mettre en cache des documents que l'utilisateur est susceptible de demander après la page actuelle. Cela limite son utilisation aux éléments qui peuvent être mis en cache. L'utiliser avec d'autres types de ressources ne fonctionnera pas.

Si vous êtes intéressé par ce sujet, voici quelques ressources qui fournissent plus de détails:

  • Conseils sur les ressources Articles sur le milieu
  • Préfet, précharge, prévisualisation sur CSS-Tricks
  • Conseils de ressources sur le blog KeycDN

Sécurité de transmission stricte

https devient la nouvelle norme de navigation, et de plus en plus de sites Web n'acceptent que des connexions sécurisées. Les connexions normales (sur HTTP) sont généralement redirigées vers la version HTTPS et les choses se déroulent comme d'habitude. Cependant, cette approche est vulnérable aux attaques "man-in-the-middle", où les redirectes se produisent plutôt vers un clone usurpé du site Web que vous souhaitez (généralement un site Web bancaire) afin de voler vos informations d'identification de connexion.

C'est là que les en-têtes de sécurité de transmission stricts entrent en jeu. La première fois que vous vous connectez au site Web souhaité à l'aide de HTTPS, l'en-tête sera envoyé au navigateur. La prochaine fois que vous vous connectez, même si vous n'utilisez que la version HTTP de l'URL, le navigateur ira directement à la version HTTPS sans passer par le cycle de redirection. Étant donné qu'aucune connexion n'est établie sur HTTP, l'attaque décrite ci-dessus ne se produira pas.

Pour plus de détails sur la transmission strictement des en-têtes de sécurité, veuillez consulter le site Web suivant:

  • HTTP STRICT TRANSMISSION Sécurité sur MDN

Ratio de pixels de l'appareil

window.devicepixelratio est une propriété en lecture seule qui renvoie le rapport de la taille (verticale) d'un pixel physique sur le dispositif d'affichage actuel à la taille d'un pixel CSS. De cette façon, les développeurs peuvent détecter des écrans à haute densité (tels que l'écran Retina d'Apple ou l'écran Android haut de gamme). Lorsqu'il est utilisé avec Media Query et MatchMedia (nous avons discuté ci-dessus), cette propriété permet des ressources optimisées pour la meilleure expérience.

  • window.devicepixelratio sur mdn

Track de texte vidéo Web

La piste de texte vidéo Web (ou WebVTT) est un format utilisé pour marquer les sous-titres de texte des ressources multimédias. Il est utilisé avec des éléments html5 <track></track> et permet d'ajouter des sous-titres, des traductions, des titres ou des descriptions aux actifs multimédias (audio ou vidéo) de manière synchrone. La présence de ces informations textuelles facilite l'accès aux ressources médiatiques.

Pour des instructions sur la façon de commencer cette fonctionnalité, veuillez consulter les ressources suivantes:

  • webvtt sur mdn
  • Introduction à webvtt et <track></track> sur dev.opera
  • Débutant des éléments de piste sur HTML5ROCS

Résumé

Nous sommes ici, à la fin de cette série, qui commence par un simple exercice intellectuel: " Old IE est parti! Célébrez! (… Quelques heures plus tard……) Que faire maintenant ? ». Nous couvrons un large éventail de sujets, des techniques et des pratiques qui ne sont plus nécessaires à tout ce que nous sommes maintenant libres de faire sans polyfill, que ce soit HTML, CSS ou JavaScript natif. Nous avons même abordé une gamme plus large de sujets tels que l'optimisation des performances et la sécurité améliorée.

devriez-vous commencer à refactoriser tout votre code dès maintenant? Probablement pas. De telles décisions doivent être prises en fonction de l'équilibre entre les coûts reconstitués et le coût de la dette technique. Cependant, si vous démarrez un nouveau projet, assurez-vous de le construire pour l'avenir, pas pour le passé.

FAQ (FAQ) sur le développement de JavaScript natif après la retraite Internet Explorer

Quelle est l'importance du développement de JavaScript natif après la retraite d'Internet Explorer?

Le développement JavaScript natif après Internet Explorer est essentiel car il permet aux développeurs de créer des applications Web plus efficaces et efficaces. Avec la désactivation de l'explorateur Internet, les développeurs ne se limitent plus aux contraintes et aux problèmes de compatibilité qui sont généralement associés à ce navigateur. Ils peuvent désormais utiliser les capacités complètes de JavaScript, y compris ses dernières fonctionnalités et mises à jour, pour créer des applications Web plus dynamiques, interactives et conviviales.

Comment activer JavaScript dans mon navigateur?

Activer JavaScript dans un navigateur est un processus facile. Pour la plupart des navigateurs, vous pouvez trouver des options pour activer ou désactiver JavaScript dans le menu Paramètres ou Préférences. En règle générale, cela implique de naviguer vers la section "Security" ou "Privacy" et à la recherche d'options liées à JavaScript. Assurez-vous de l'activer pour une meilleure expérience de navigation.

Quelle est la différence entre Internet Explorer et JavaScript dans d'autres navigateurs?

Oui, il existe des différences significatives dans le fonctionnement de JavaScript dans Internet Explorer et d'autres navigateurs. Internet Explorer possède différents moteurs JavaScript, ce qui conduit souvent à des problèmes de compatibilité et des limitations. Les navigateurs modernes tels que Chrome, Firefox et Safari utilisent des moteurs JavaScript plus avancés qui prennent en charge les dernières fonctionnalités et normes JavaScript, qui améliorent les performances et réduisent les problèmes de compatibilité.

Quels sont les avantages de l'utilisation de JavaScript natif au lieu de bibliothèques ou de cadres?

L'utilisation de JavaScript native présente de nombreux avantages par rapport à l'utilisation de bibliothèques ou de cadres. Il permet de meilleures performances car il n'y a pas de frais généraux de chargement et d'analyse du code inutile. Il fournit également plus de contrôle sur le code, car les développeurs ne sont pas liés par des bibliothèques ou des cadres spécifiques. De plus, la compréhension et l'utilisation de JavaScript natif peuvent vous donner une compréhension plus profonde de la langue et de ses fonctionnalités.

Comment la désactivation de l'Internet Explorer affecte-t-elle le développement JavaScript?

La désactivation d'Internet Explorer a eu un impact significatif sur le développement de JavaScript. Les développeurs n'ont plus besoin d'écrire du code supplémentaire ou différent pour assurer la compatibilité avec Internet Explorer. Cela conduit à un processus de développement plus efficace et à la capacité de profiter de la pleine fonctionnalité de JavaScript. Cela conduit également à une expérience utilisateur plus cohérente entre les navigateurs.

Quelles sont les dernières fonctionnalités que je peux utiliser JavaScript en développement?

JavaScript est constamment mis à jour et a ajouté de nouvelles fonctionnalités et améliorations. Certaines des dernières fonctionnalités incluent Async / Await pour la gestion des opérations asynchrones, une syntaxe étendue pour l'extension des tableaux ou d'autres objets itérables et des fonctions de flèche pour une syntaxe de fonction plus concise. Ces fonctionnalités peuvent améliorer considérablement votre développement JavaScript et vous permettre d'écrire du code plus efficace et lisible.

Comment s'assurer que mon code JavaScript est compatible avec tous les navigateurs?

Assurer la compatibilité du navigateur est un aspect important du développement JavaScript. Une façon d'y parvenir consiste à utiliser la détection des fonctionnalités, qui consiste à vérifier si le navigateur de l'utilisateur prend en charge la fonctionnalité avant de l'utiliser. Une autre approche consiste à utiliser PolyFill, un script qui fournit des fonctionnalités plus récentes pour les navigateurs plus âgés qui ne les soutiennent pas.

Quel est l'avenir du développement JavaScript après la retraite d'Internet Explorer?

L'avenir du développement JavaScript après que Internet Explorer est à la retraite semble prometteur. Avec la désactivation de l'explorateur d'Internet, les développeurs peuvent désormais se concentrer sur le profit des capacités complètes de JavaScript sans se soucier des problèmes de compatibilité. Cela a combiné avec les mises à jour continues et les améliorations de la langue, annonçant un avenir où JavaScript est plus efficace, plus puissant et plus polyvalent.

Quelles sont les bonnes ressources pour en savoir plus sur le développement de JavaScript natif?

Il y a beaucoup de grandes ressources pour en savoir plus sur le développement de JavaScript natif. Certaines plateformes en ligne populaires incluent Mozilla Developer Network (MDN), FreeCodeCamp et CodeCademy. Ces plateformes fournissent des guides et des tutoriels complets sur JavaScript, couvrant tout, des bases aux sujets plus avancés.

Comment déboguer efficacement le code JavaScript?

Le débogage est une partie indispensable du développement JavaScript. La plupart des navigateurs modernes sont livrés avec des outils de développement intégrés qui peuvent être utilisés pour le débogage. Ces outils vous permettent de parcourir le code, de vérifier les variables et de voir toutes les erreurs ou exceptions qui se produisent. De plus, l'utilisation de bonnes pratiques de codage, telles que l'écriture de code propre et concise et annotant le code, peut également faciliter le processus de débogage.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal