Javascript : les possibles nouveautés en 2019

JavaScript est un langage de programmation de scripts utilisé le plus souvent dans les pages web interactives, mais aussi coté serveur (par exemple avec Node.js). C’est un langage orienté objet à prototype et qui supporte le paradigme objet, impératif et fonctionnel. Il a été standardisé sous le nom d’ECMAScript en juin 1997 par Ecma International dans le standard ECMA-262. JavaScript n’est depuis qu’une implémentation d’ECMAScript (ES), celle mise en œuvre par la fondation Mozilla.

Au cours des dernières années, JavaScript a évolué avec de nouvelles fonctionnalités de langage apportées à la spécification ECMAScript. Il est déjà possible de se faire une idée des fonctionnalités qui pourraient arriver en JavaScript cette année.

Les classes : Un certain nombre de modifications ont été proposées, notamment les déclarations de champ, les méthodes et champs privés et les méthodes et champs statiques.

La méthode trim() (pour les chaines de caractères) supprime les espaces en début et en fin de chaîne. Les nouvelles méthodes trimStart() et trimEnd() proposées pourraient permettre la suppression d’espaces seulement en début ou en fin de chaine.

Les grands nombres : BigInt est un objet natif qui permet de représenter des nombres entiers supérieurs à 253 la plus grande valeur entière accessible avec le type number. Un objet BigInt est créé en ajoutant un n à la fin d’un entier (25n par exemple)  ou en appelant la fonction BigInt().

Applatissement de tableaux : La méthode flat() permet de créer un nouveau tableau contenant les éléments des sous-tableaux. Les sous-tableaux sont aplatis et leurs éléments sont concaténés récursivement jusqu’à une profondeur précisée en paramètre.

La méthode flat() supprime aussi les éléments manquant d’un tableau :

[‘a’,  ‘b’,  ,  ‘c’,  ‘d’].flat()  retournera [‘a’,  ‘b’,  ‘c’,  ‘d’].

La méthode flatMap() permet d’appliquer une fonction à chaque élément du tableau puis d’aplatir le résultat en un tableau. Cela correspond à l’enchaînement des fonctions map() et flat() de profondeur 1. flatMap() est plus efficace que la combinaison de ces deux opérations.

Parmi les autres fonctionnalités candidates, on peut citer  : globalThis, qui offre un mécanisme universel d’accéder à l’objet global même dans des fonctions strict ou des modules, quelle que soit la plateforme ; un import() dynamique ; une méthode matchAll() pour le type String ; une méthode Object.fromEntries(), méthode statique pour transformer une liste de paires clé-valeur en un objet.

Il est probable que la spécification ES2019 soit publiée en milieu d’année 2019. Afin d’expérimenter ces fonctionnalités de langage candidates, certaines sont déjà disponibles dans les moteurs et les utilitaires JavaScript. Elles sont parfois désactivées par défaut, mais peuvent être configurées pour être utilisées.

Il est utile de rappeler qu’actuellement,  rien ne garantit que ces  fonctionnalités feront partie de la spécification officielle d’ECMAScript.

sources : https://www.developpez.com/actu/242578/Quelles-sont-les-nouvelles-fonctionnalites-qui-pourraient-debarquer-dans-JavaScript-en-2019-Un-tour-d-horizon-des-candidats-pour-ES2019/

les nouveaux inputs type apparus avec HTML5 : le point

En 2014, 13 nouveaux types de saisie de formulaire étaient apparus avec l’arrivée de l’HTML5, ajoutant de la diversité. Qu’en est-il 5 ans plus tard ?

L’ajout de ces nombreux types d’input a été l’une des caractéristiques principales de HTML5. Pendant bien longtemps, les champs étaient assez généraux et ils fallait passer par une utilisation de JavaScript pour déterminer si l’utilisateur entrait des données valides. Ces inputs permettent de saisir des valeurs beaucoup plus spécifiques, ce qui présente un avantage certain, l’idée étant  ce soit le navigateur qui fournisse lui-même les validations nécessaires.

Type « search »

L’entrée type = « search » est destinée à être utilisée pour les champs de recherche. Sur le plan fonctionnel, ils sont très similaires aux champs de texte de base, mais le fait d’avoir un type dédié permet au navigateur d’appliquer un style différent. Cela est particulièrement utile si le système d’exploitation de l’utilisateur a défini un style pour les champs de recherche, car cela permet au navigateur d’apparier les styles de champs de recherche des pages Web.

La spécification indique que la différence entre recherche et texte est purement stylistique, il est donc préférable de l’éviter si vous avez l’intention de modifier le style du champ avec CSS. Il ne semble y avoir aucun avantage sémantique à son utilisation.

Utilisez type = « search » si vous souhaitez laisser le style du champ de recherche au navigateur.

Type « tel »

L’entrée type = « tel » est utilisée pour entrer les numéros de téléphone. Ce sont comme les noms d’utilisateur uniques utilisés par Whatsapp. En cas de doute, demandez à vos grands-parents.

Sur le plan international, les numéros de téléphone prennent de nombreux formats, pour des raisons techniques et de localisation. De ce fait, l’entrée tel ne tente pas de valider le format d’un numéro de téléphone. Vous pouvez utiliser les outils de validation associés tels que l’attribut de modèle sur la balise ou la méthode JavaScript setCustomValidity () pour appliquer un format si nécessaire.

Sur les navigateurs de bureau, l’utilisation des champs téléphoniques semble avoir peu d’impact. Sur les appareils dotés de claviers virtuels, ils peuvent toutefois s’avérer très utiles. Par exemple, sur iOS, le fait de centrer la saisie sur un champ téléphonique fait apparaître un clavier numérique prêt à saisir un numéro. De plus, les mécanismes de saisie semi-automatique de l’appareil entrent en jeu et suggèrent des numéros de téléphone pouvant être remplis automatiquement avec un robinet.

Utilisez type = « tel » pour n’importe quel champ de numéro de téléphone. C’est très utile là où elle est mise en œuvre et elle n’a aucun coût si ce n’est pas le cas.

Type « url »
Le champ type = « url » peut être utilisé pour capturer des URL. Vous pouvez par exemple utiliser cette option pour demander à un utilisateur de saisir l’adresse de son site Web dans un répertoire professionnel. La chose curieuse à propos du champ URL est qu’il ne prend que des URL complètes et absolues. Il n’existe pas d’option permettant de capturer simplement un nom de domaine ou un chemin par exemple. Cela limite son utilité à certains égards, car j’imagine que les développeurs de CMS et d’applications Web auraient trouvé de nombreuses utilisations pour un champ qui accepte et valide les chemins relatifs.

Bien que ce soit une URL absolue valide:


Les deux ne passeraient pas la validation du champ:

smashingmagazine.com
/ 2019/01 / css-plusieurs-colonnes-layout-multicol /
Cela donne l’impression que différentes parties d’une URL ne peuvent pas être spécifiées, mais c’est ce que nous avons. La prise en charge des navigateurs est très bonne dans l’ensemble, avec des périphériques à clavier virtuel offrant une certaine personnalisation pour la saisie d’URL. iOS personnalise son clavier avec., / et un bouton de saisie semi-automatique pour les TLD courants tels que .com et pour mes paramètres régionaux, .co.uk. C’est un bon exemple de navigateur capable de proposer des choix plus intelligents que les développeurs Web.

Utilisez type = « url » chaque fois que vous devez collecter une URL complète et absolue. La prise en charge du navigateur est excellente, mais rappelez-vous qu’elle ne convient pas aux composants d’URL individuels.

Type « email »
Une des options les plus utilisées parmi les plus récentes est peut-être le type = « email » pour les adresses email. Comme avec les numéros de téléphone et les URL, les appareils dotés de claviers virtuels personnalisent les touches (pour inclure des éléments tels que les boutons @) et permettent la saisie automatique à partir de leur base de contacts.

Les navigateurs de bureau l’utilisent également, avec Safari sur macOS permettant également le remplissage automatique des champs de courrier électronique, en fonction des données de l’application Contacts du système.

Les adresses électroniques semblent souvent suivre un format très simple, mais les variations les rendent plutôt complexes. Si vous tentez naïvement de valider des adresses électroniques, une adresse parfaitement valide peut être marquée comme non valide. Il est donc formidable de pouvoir s’appuyer sur les méthodes de validation plus sophistiquées et bien testées du navigateur pour vérifier le format.

Utilement, l’attribut multiple peut être ajouté aux champs d’e-mail pour collecter une liste d’adresses e-mail. Dans ce cas, chaque adresse électronique de la liste est validée individuellement.

Safari sur iOS affiche, entre autres, des claviers personnalisés pour les champs de téléphone, de courrier électronique et de numéro. (Grand aperçu)
Champs numériques

Type « number »
Le champ type = « nombre » est conçu pour les valeurs numériques et possède quelques attributs très utiles avec lui sous la forme de min, max et step. Une valeur valide pour un champ numérique doit être un nombre à virgule flottante compris entre les valeurs minimale et maximale spécifiées par les attributs min et max.

Si step est défini, une valeur valide est divisible par la valeur de step.

<type d’entrée = « numéro » min = « 10 » max = « 30 » step = « 5 »>
Une entrée valide pour le champ ci-dessus serait 10, 15, 20, 25 et 30, toute autre valeur étant rejetée.

La prise en charge du navigateur est large, encore une fois, les claviers virtuels utilisant souvent un mode de saisie numérique pour saisir des valeurs.

Certains navigateurs de bureau (notamment Chrome, Firefox et Safari, mais pas Edge) ajoutent des boutons bascule permettant de déplacer les valeurs de haut en bas de la valeur de step ou, si aucune étape n’est spécifiée, l’étape par défaut semble être 1 dans chaque implémentation.

Utilisez type = « numéro » pour n’importe quel nombre à virgule flottante, car il est largement pris en charge et peut aider à prévenir les entrées accidentelles.

Type = « range »
Moins évident en utilisation que certains des autres types, type = « range » peut être considéré comme une alternative à type = « number » où l’utilisateur ne se soucie pas de la valeur exacte.

Les champs de plage prennent et utiliseront souvent les mêmes attributs min, max et step que les champs de numéro, et les navigateurs les affichent presque universellement sous forme de curseur graphique. L’utilisateur ne voit pas nécessairement la valeur exacte qu’il définit.

Les champs de plage peuvent être utiles pour ce type de questions sur des formulaires tels que «Quelle est la probabilité que vous recommandiez ceci à un ami?», Avec «Probable» à une extrémité et «Peu probable» à l’autre. L’utilisateur peut faire glisser le curseur vers l’endroit où il pense représenter son opinion et sous le capot qui lui est soumis sous forme de valeur numérique que vous pouvez stocker et traiter.

La prise en charge du navigateur est bonne, bien que l’apparence varie selon les implémentations.

Les utilisations de type = « range » peuvent constituer un créneau mais le support est bon et le curseur fournit une méthode de saisie conviviale, le cas échéant.

Type « color »
Le champ type = « color » est conçu pour capturer les couleurs RVB en notation hexadécimale, telles que #aabbcc. La spécification HTML appelle cela un «contrôle de couleur bien», avec l’intention que le navigateur fournisse un sélecteur de couleur convivial.

Certains navigateurs le proposent, notamment Chrome et Firefox, qui permettent tous deux d’accéder au sélecteur de couleur du système via un petit nuancier.

Ni IE ni Safari ne fournissent de support ici, laissant à l’utilisateur l’imagination qu’il est supposé entrer lui-même un numéro hexadécimal à 7 chiffres.

Les champs de couleur peuvent être utilisés dans les thèmes de personnalisation et de CMS, mais à moins que les utilisateurs ne soient suffisamment techniques pour gérer les codes de couleur hexadécimaux, il peut être préférable de ne pas compter sur le navigateur pour leur fournir une belle interface utilisateur.

À moins que vous ne sachiez que vos utilisateurs seront ravis de saisir les codes de couleur hexadécimaux, il est préférable de ne pas compter sur les navigateurs prenant en charge le type = « color ».

HTML5 a introduit un certain nombre de valeurs de type différentes pour la création d’entrées pour les dates et les heures. Ceux-ci incluent la date, l’heure, l’heure locale, le mois et la semaine.

À première vue, cela semble être un paradis, car la collecte de dates dans un formulaire est une expérience difficile à la fois pour le développeur et pour l’utilisateur, et elles sont nécessaires assez souvent.

En tant que tel, une entrée valide pour le type = « date » est une valeur année-mois-jour sans ambiguïté telle que 2019-01-16. Les développeurs aiment cela, car ils correspondent assez bien au format de date ISO 8601, qui est utilisé dans la plupart des contextes techniques. Malheureusement, peu d’êtres humains utilisent ce format de date et ne sont pas susceptibles de l’atteindre quand on leur demande de fournir une date dans un seul champ de texte vide.

Et, bien sûr, un seul champ de texte vide correspond à ce qui est présenté à l’utilisateur si son navigateur ne fournit pas d’interface utilisateur pour choisir les dates. Dans ces cas, il devient alors très difficile pour un utilisateur d’entrer une valeur de date valide à moins qu’il ne soit familier avec le format requis ou que l’entrée soit annotée avec des instructions claires.

Cependant, de nombreux navigateurs offrent une bonne interface utilisateur pour choisir les dates. Firefox a un excellent sélecteur de date, et Chrome et Edge ont également de très bonnes interfaces. Cependant, il n’ya aucun support dans le vieil IE pauvre et aucun dans Safari, ce qui pourrait poser problème.

Bien qu’il soit pratique où cela fonctionne, le mode de défaillance de type = « date » et ses types de date et heure associés sont très médiocres. Cela en fait un choix risqué qui risque de laisser les utilisateurs peiner pour répondre aux critères de validation.

En résumé, beaucoup de choses ont changé dans le paysage des navigateurs depuis quatre ans que la spécification HTML5 est devenue une recommandation. La prise en charge des nouveaux types d’entrée est assez forte, en particulier sur les appareils mobiles dotés de claviers virtuels tels que les tablettes et les téléphones. Dans la plupart des cas, ces entrées peuvent être utilisées en toute sécurité et offrent une utilité supplémentaire à l’utilisateur.

Il existe quelques exceptions notables, la pire étant les champs de date et d’heure, qui manquent non seulement d’utilité, mais qui sont également pris en charge par les navigateurs. Lorsque le support n’est pas disponible, le mode de secours de ces champs est médiocre. Dans ces cas, il peut être préférable de s’en tenir aux solutions basées sur JavaScript pour améliorer progressivement les champs de saisie type = « text » de base.

Si vous souhaitez en savoir plus, je vous recommande vivement les documents Web MDN sur ces types de champs et, comme toujours, sur la spécification W3C.

PDF.js

PDF.js est la bibliothèque javaScript qui permet la restitution de fichiers PDF au format HTML. Ceci est fait grâce au canevas HTML5.

Elle peut être intégrée à un site Web ou à un navigateur.  Initié en 2011, le projet est dirigé par Mozilla et est inclus dans Mozilla Firefox depuis 2012.

Une construction en 3 couches

PDF.js est construit en 3 couches : Core, display et viewer. Core, première couche et couche principale,  analyse et interprète les fichiers PDF qui seront utilisés par les autres couches. Ce code s’exécute en arrière-plan dans le navigateur.  La couche Affichage, elle, fournit l’API JavaScript permettant de récupérer et de manipuler les données de documents PDF. Enfin, la couche Viewer, fournit une interface utilisateur pour l’affichage et la pagination au moyen de fichiers PDF dans le navigateur (Mozilla, ou tout autre navigateur possédant l’extension appropriée).

 

sources : https://mozilla.github.io/pdf.js/

https://rossta.net/blog/building-a-pdf-viewer-with-vue-part-1.html

Symfony

Symfony est un ensemble de composants PHP ainsi qu’un framework MVC libre écrit en PHP. Il fournit des fonctionnalités modulables et adaptables qui permettent de faciliter et d’accélérer le développement d’un site web.

L’agence web française SensioLabs est à l’origine du framework Sensio Framework. À force de toujours recréer les mêmes fonctionnalités de gestion d’utilisateurs, gestion ORM, etc, elle a développé ce frameworkpour ses propres besoins. Comme ces problématiques étaient souvent les mêmes pour d’autres développeurs, le code a été par la suite partagé avec la communauté des développeurs PHP.

Le projet est alors devenu Symfony (conformément à la volonté du créateur de conserver les initiales S et F de Sensio Framework), puis Symfony2 à partir de la version 2. La version 2 de Symfony casse la compatibilité avec la branche 1.x.

Le 5 septembre 2017, Symfony passe la barre du milliard de téléchargement.

Symfony est utilisé par Askeet et beaucoup d’autres applications, dont Delicious et Yahoo! Bookmarks. En 2009, Dailymotion a porté son code sur Symfony et a continué la transition.

Les projets les plus connus utilisant Symfony sont eZ Publish (utilisation de Symfony 2 en full stack), Drupal depuis la version 8 (utilisation de composants Symfony), phpBBLaravelJoomla!ComposerMagentoPiwikPrestaShop depuis la version 1.7 (utilisation de composants Symfony).

Symfony utilise la version 5 de PHP (PHP ≥ 5.2.4 pour Symfony 1.x, PHP ≥ 5.3.3 pour Symfony 2.x et PHP ≥ 5.5.9 pour Symfony 3.x).

Symfony 4.0 requiert la version 7.1.13 ou supérieur afin de fonctionner.

Symfony (1.x) propose entre autres :

  • une séparation du code en trois couches, selon le modèle MVC, pour une plus grande maintenabilité et évolutivité ;
  • des performances optimisées et un système de cache afin d’assurer des temps de réponse optimaux ;
  • une gestion des URL parlante, permettant à une page d’avoir une URL distincte de sa position dans l’arborescence ;
  • un système de configuration en cascade utilisant pleinement le langage YAML ;
  • un générateur de back-office et un lanceur de module (scaffolding) ;
  • l’internationalisation native ;
  • le support d’AJAX ;
  • une architecture extensible permettant créations et utilisations de plugins.

Symfony fournit une interface en ligne de commande pour améliorer la productivité en créant un code de base modifiable à volonté.

Les accusations de sabotage contre Google

Selon un développeur en stage chez Microsoft, il est possible que Google cherche à réduire la part du marché de ses concurrents grâce à des changements dans le code de certains sites. De cette manière, les autres navigateurs seraient moins performants et Google Chrome pourrait gagner des utilisateurs..

Certaines sources indiquent que Google fait exprès de procéder à plusieurs modifications de ses sites web, dont YouTube, qui reste l’une des plateformes web les plus utilisées au monde. Par conséquent, les navigateurs concurrents seraient forcés de se mettre à jour régulièrement pour rester compatibles avec les services de Google concernés, sous peine de voir leurs utilisateurs partir. Pour ce qui est de la plateforme vidéo justement, in est dit que Edge a été supérieur a Chrome pendant un temps, mais que ce dernier est repassé devant lui après avoir modifié le code pour pénaliser son concurrent. Google aurait donc choisi cette solution plutôt que d’amélioration de son propre outil.

D’autre part, Microsoft aurait fait le choix d’abandonner le moteur de rendu EdgeHTML au profit de Chromium pour la même raison. Lors de l’abandon de EdgeHTML, Microsoft a indiqué qu’il contribuerait au développement et à l’amélioration de Chromium. Pour l’instant, aucune des deux entreprises n’a confirmé ou infirmé les informations de Joshua Bakita. Néanmoins, si Google venait à dire que cela est vrai, cela reviendrait à avouer qu’il s’adonne à du sabotage en règle.

Angular.js

Angular est un framework JavaScript libre et open source développé par Google permettant de développer des pages web.

Angular vise plusieurs objectifs :

améliorer la testabilité du code en découplant les manipulations du DOM de la logique métier ; considérer le test d’une application aussi important que l’écriture de l’application elle-même. La difficulté de la phase de test est considérablement impactée par la façon dont le code est structuré ; découpler les côtés client et serveur d’une application. Cela permet au développement logiciel des côtés client et serveur de progresser en parallèle, et permet la réutilisabilité de chacun des côtés ; guider les développeurs pendant toute la durée de la construction d’une application : de la conception de l’interface utilisateur, en passant par l’écriture de la logique métier, jusqu’au test de l’application,

Une page web conçue avec Angular suit le modèle d’architecture MVC. Dans un langage web, cette séparation a l’avantage d’améliorer la testabilité du code.

Avec Angular, la « vue » est déclarée dans une version étendue du HTML traditionnel, qui comporte de nouvelles balises et de nouveaux attributs. Ce HTML étendu est utilisé pour déclarer une liaison de données bidirectionnelle entre les modèles et les vues. Ainsi, les données sont synchronisées automatiquement, et moins d’éléments ont besoin d’être définis en Javascript. Les modèles sont composés de plusieurs couches appelés « scopes ». Les contrôleurs dans Angular permettent de prototyper des actions en code JavaScript natif. En proposant l’injection de dépendances, Angular apporte aux applications web côté client les services traditionnellement apportés côté serveur, comme les contrôleurs de vues. En conséquence, une bonne partie du fardeau supporté par le back-end est supprimée, ce qui conduit à des applications web beaucoup plus légères côté serveur.

Par ailleurs, AngularJS a la particularité d’utiliser des promesses, c’est-à-dire des opération asynchrone qui renvoient leur résultat final à une fonction de rappel dès que celui-ci est connu. AngularJS exécute en permanence une boucle qui consiste à surveiller et à détecter des modifications sur un objet JavaScript.

À ses débuts en 2009, AngularJS devait être un logiciel manipulant des données au format JSON (indépendamment du web). Le projet a finalement basculé dans le domaine open source.

La version 2.0, plutôt différente (ECMAScript 6, TypeScript, abandon entre autre de jQuery), est en développement depuis 2014. Le TypeScript remplaçant le JavaScript en tant que langage conseillé, le nom du produit est raccourci, devenant « Angular 2 »

leaflet.js

Leaflet est une bibliothèque JavaScript de cartes interactives.

Cette bibliothèque est assez légère (moins de 40 Ko de script) Elle a les fonctionnalités essentielles de toute application de cartographie. (vision d’une partie de la Terre, reliefs, pays, villes, routes, zoom et dé-zoom, marqueurs à placer en renseignant longitude et la latitude).

Après avoir intégré deux liens dans une page html, il faut créer une variable qui représente la map, avec des coordonnées initiales.

On peut par exemple placer des marqueurs qui pointeront un endroit précis et qui pourront afficher des informations.

Ce n’est qu’un exemple, leaflet possède bien d’autres fonctionalités.

Le site propose documentation complète sur son utilisation.En plus de ces fonctionnalités, il existe un grand nombre de plug-ins qui viennent compléter la bibliothèque : géolocalisation, routage, animations, chargement dynamique des données,  recherche d’addresse, cartes thermiques … pour ne citer qu’eux.

Leaflet est open-source, n’importe qui peut tenter de contribuer à son développement.

https://leafletjs.com/

Fancybox

FancyBox est une bibliothèque JavaScript qui permet d’afficher différents types de contenu, HTML ou multimédia dans une lightbox, un overlay au premier plan devant la page Web.
Le contenu affiché peut être des images, des iframes, des films au format swf, des éléments HTML. En plus du contenu, on choisit l’animation qui va l’afficher, et s’il y a plusieurs éléments, les transitions entr eux. Pour ça, FancyBox supporte les animations et transitions sophistiquées en utilisant l’accélération matérielle. Enfin on choisit les événements qui vont déclencher l’animation. Conçu avec JQuery, la bibliothèque est optimisée pour mobile avec la gestion des événements tactiles.

Elle est assez configurable et personnalisable, autant par les paramètres du script qu’en css. . Il peut s’agir des dimensions du contenu, de la couleur et l’opacité de la lightbox, de placer les flèches pour basculer d’un élément au suivant, d’afficher ou non un titre,  ou une icone, ou des boutons liés aux réseaux sociaux.

Il est possible d’utiliser de l’utiliser directement, sans écrire aucune ligne de script.

Le site propose une documentation complète ainsi que quelques exemples pour se donner une idée du rendu.

FancyBox est libre pour une utilisation personnelle et à but non commercial.

http://fancyapps.com/fancybox/

HTTP/3

Le protocole HTTP a vu le jour il y a maintenant plus de 20 ans dans sa version 1.0.  En 2012 commençait le développement de HTTP/2. Le protocole évolue maintenant en HTTP/3.

HTTP/3 est une évolution du protocole QUIC. Acronyme de Quick UDP Internet Connections, le protocole tire son nom du fait qu’il réduit la latence par rapport au protocole TCP. Il est basé sur les protocoles HTTP/2 et UDP mais se veut plus complet en  apportant des fonctionalités importantes mais jusqu’ici absentes. Parmi ces fonctionnalités, le multiplexage, la migration de connexions, la possibilité d’envoyer en une fois toutes les requêtes de connexions au serveur (chose impossible en TCP) , et la réduction de la latence par un meilleur contrôle de la congestion du réseau.

Le but est d’utiliser ce protocole plus souvent, plutôt que le TCP quand celui-ci n’est pas nécessaire.

Développé par google depuis 2012, QUIC a été adopté par l’IETF – organisme en charge des normalisations internet – pour devenir le HTTP/3. Actuellement, encore peu de site web supportent le protocole QUIC, mais les chiffres risquent d’évoluer rapidement.

 

dropzone.js

DropzoneJS est une bibliothèque javascript open source qui permet le téléchargement de fichiers par « drag & drop ».

DropzoneJS est indépendante de toute autre bibliothèque, et peut être personnalisée. Pour l’utiliser, il faut lier la librairie sur la page sur laquelle on veut une zone de Drag&Drop, et ajouter un formulaire, comme suit :

Il est aussi possible d’inclure un style pré-défini, en ajoutant un ensemble de feuilles de styles (téléchargeables sur le site de Dropzone), mais cela est tout à fait optionnel. On peut préférer appliquer son propre style.

Depuis la version 5.2, il est possible d’effectuer des téléversements groupés.

Il est important de préciser que cette librairie permet simplement l’ajout de fichiers dans un formulaire. Elle ne permet pas de téléverser lesdits fichiers sur un serveur ou une base de données.

DropzoneJS est écrit en EcmaScript6.