Les Service Workers ne vont pas magiquement améliorer les performances d'une application notamment car l'envoi de données entre les processus (postMessage
) est relativement lente comme tous les autres mécanismes d'Inter Process Communication (IPC)
En général pour faire des calculs intensifs il est préférable de le faire durant le temps restant après que le navigateur ait terminé le rendu d'une frame de la page Web avec requestIdleCallback
Un meta article qui résume pleins de choses sur les Service Workers des navigateurs.
Très bon explication sur les différences entre les Map
et les POJO en Javascript.
En substance:
- utilisez les POJO lorsque le nombre de clé est connu d'avance et en tant que Data Transfer Object (DTO)
- utilisez les
Map
pour tout ce qui s'apparente à un cache RAM et nécessite des insertions/deletions arbitraires
Lorsqu'elle sont bien utilisées, les Map
auront une meilleure performance, utilisent moins de RAM et offre une meilleure API plus complète POJO (e.g. Map.clear
) au prix d'une perte en DX (e.g. initialisation, spread operator)
Un article très complet sur le fonctionnement des lexer / parser de v8 (Chrome, Node.js) et SpiderMonkey (Firefox)
On comprend notamment que v8 se "plie" aux conventions des outils de minification du code ou encore que le point virgule est bien nécessaire ;-)
Un article très complet sur l'utilisation de AbortController
pour annuler des requêtes réseau en cours notamment.
Je ne savais pas qu'il était aussi possible d'arrêter un listener de cette manière ! C'est pratique car il n'y a pas besoin de garder une référence sur la callback.
const controller = new AbortController();
const { signal } = controller;
window.addEventListener('resize', () => doSomething(), { signal });
// later
controller.abort();
Un runtime Javascript (comme v8 qui est utilisé dans Chrome et Node.js) qui utilise seulement 8.5 Ko d'espace disque et minimum 34 octets de RAM!
Le but est d'utiliser du Javascript dans des micro contrôleurs qui pour la plupart ont 64 Ko de disque et 2 Ko de RAM.
L'auteur défend son projet avec notamment l'argument du single thread de javascript qui consomme moins de ressources que le multi thread.
On peut aussi ajouter qu'il est nettement plus simple et maintenable d'écrire du JS à mémoire managé que du C.
Un mix entre bash et javascript pour écrire des scripts bash avec plus d'aisance. (Car oui écrire des scripts un peu compliqué en bash est une chienlit..)
#!/usr/bin/env zx
await $`cat package.json | grep name`
let branch = await $`git branch --show-current`
await $`dep deploy --branch=${branch}`
Un article très intéressant sur le fonctionnement interne de v8 (le moteur JS de Node.js et Chrome) qui explique la représentation interne des différents types.
Si le sujet vous intéresse, j'avais compilé des ressources sur le fonctionnement des moteurs Javascript (et particulièrement v8) ici 👉 https://github.com/Aschen/understand-js-runtimes
Un site qui regroupe des demo visuel en Javascript en utilisant le moins de caractères possible 😄
https://www.dwitter.net/d/25451
https://www.dwitter.net/d/25556
Une ville entière https://www.dwitter.net/d/25311
Utilisation d'un rate limiter pour éviter de se prendre des 429 quand on fait appel à une API externe
Une utilisation de la metaprogrammation en Javascript pour ajouter des simili propriétés sur n'importe quoi, même les nombres par exemple.
1[to(8)] // [1, 2, 3, 4, 5, 6, 7, 8]
const hex = Metho.add(
Number.prototype,
function() { return this.toString(16) }
)
console.log(65535[hex]) // 'ffff'
Un outil pour gérer plusieurs versions de Node.js qui pourrait remplacer NVM.
Un framework fullstack avec une structure et une syntax inspirée de Ruby On Rails (particulièrement pour l'ORM).
C'est un des créateurs de Github derrière ce projet, pas étonnant que ça ressemble autant à Rails!
Ils exposent une API GraphQL, une auth générique, un ORM basé sur Prisma et utilisent React pour le frontend
Un bon résumé de ce qu'il est possible de faire avec le JSON en Javascript
Quelques astuces pour réduire la taille de son bundle frontend
Un retour d'expérience sur Deno plutôt que Node.js en production
Un framework conçu pour optimiser l'utilisation de WebRTC pour de la visio conférence avec réduction automatique des flux vidéos et audio reçus en fonction du nombre de participants et de la visibilité des flux.
C'est du super boulot et c'est open source ❤️
Article sur le scaling de connexion WebSocket avec RabbitMQ et Nginx.
La seule question c'est: pourquoi Socket.IO 😬
Le package ws
ou encore uwebsockets sont beaucoup plus performants
Des astuces pour mieux utiliser console.log
. (Certaines ne fonctionnent pas en Node.js)
Perso j'aime beaucoup afficher les variables dans un objet, c'est plus lisible je trouve:
const name = 'aschen';
const age = 28;
console.log({ name, age }); // { name: 'aschen', age: 28 }
Une lib pour créer des workflows visuels à la NodeRed