Vue normale

Il y a de nouveaux articles disponibles, cliquez pour rafraîchir la page.
Aujourd’hui — 1 juin 2024Kalvn's links
Hier — 31 mai 2024Kalvn's links
À partir d’avant-hierKalvn's links

Programmatic file downloads in the browser - DEV Community

30 mai 2024 à 07:45

Comment déclencher un téléchargement dans le navigateur purement en local depuis le code JavaScript, en utilisant l'objet Blob.

J'ai vérifié, ça fonctionne même en local en ouvrant simplement un fichier HTML dans votre navigateur, pas besoin de serveur HTTP.
Je me dis que ça peut être très utile par exemple pour partager une espèce de mini application qui pré-calcule un truc et permet de l'exporter en CSV ou JSON. Un calculateur de salaire par exemple, un ou petit outil pour estimer un risque.

Je me copie-colle le snippet en dessous.

const blob = new Blob(
  [ /* CSV string content here */ ],
  { type: 'text/csv' }
);

function downloadBlob(blob, filename) {
  const url = URL.createObjectURL(blob);

  const a = document.createElement('a');

  a.href = url;
  a.download = filename || 'download';

  const clickHandler = () => {
    setTimeout(() => {
      URL.revokeObjectURL(url);
      this.removeEventListener('click', clickHandler);
    }, 150);
  };

  a.addEventListener('click', clickHandler, false);

  a.click();
}

downloadBlob(blob, 'result.csv');

Permalink

WeakMaps (`WeakMap`) (advanced) • JavaScript for impatient programmers (ES2022 edition)

26 mai 2024 à 07:36

Enfin un 🇬🇧 article clair sur ce que sont les WeakMap en JavaScript et quels sont les cas d'usage.

Elles servent à attacher une valeur à un objet de manière "externe", sans modifier l'objet lui-même. Un peu comme si vous êtes vendeur dans un magasin et attachez l'étiquette avec le prix sur un objet. Si l'objet disparaît, l'étiquette disparaît aussi. Donc si l'objet auquel vous attachez la WeakMap est supprimé par le garbage collector, votre WeakMap l'est aussi.

C'est donc parfait pour attacher une computed property à un objet par exemple, ou pour créer des propriétés réellement privées qui ne seront pas accessible à du code qui n'a pas accès à la WeakMap.

Ce sont des cas bien spécifiques mais c'est intéressant de savoir que ça existe.


Permalink
❌
❌