Skip to content

Latest commit

 

History

History
165 lines (127 loc) · 4.51 KB

slides.md

File metadata and controls

165 lines (127 loc) · 4.51 KB
theme background class highlighter lineNumbers info drawings
default
/assets/images/cover.png
text-center
shiki
true
## Slidev Starter Template Presentation slides for developers. Learn more at [Sli.dev](https://sli.dev)
persist

Web worker

Comment comprendre Web worker avec une histoire facile

<style> h1 { position: absolute; top: 1rem; left: 20rem; color: #2980b9; text-transform: uppercase; } h1 + p { position: absolute; top: 6rem; left: 13rem; color: #3498db; font-size: 1.5rem; } .cover { background-image: url('/assets/images/cover.png') !important; background-size: contain !important; } </style>

Je vais vous raconter l'histoire du petit Nicolas et de son père

Qu'est ce que fait son père dans sa famille:

  • 📝 Écouter - toutes les demandes de sa femme et son fils
  • 🎨 Planifier - tout les voyages
  • 🧑‍💻 Construire - la maison
  • 🤹 Dessiner - tout les murs
  • 🎥 Appeler - des amis pour organiser les soirées
  • 📤 Envoyer - des cartes postales aux grand-parents
  • 🛠 Réparer - ce qui a été dans la maison


Et il existe une journée

Le père du petit Nicolas est trop occupé avec son travail, il n'a plus de temps pour sa femme et son fil. Il est temps de partager!

sequenceDiagram
  Maman->Papa: N'oublie pas d'acheter un bouquet de fleur
  Papa->Maman: Mais je me suis s'occupé
  Papa->Nicolas: Peux-tu m'aider?
  Nicolas->Papa: Oui, papa!
Loading


Quel est le rapport avec notre sujet d'aujourd'hui?

On remplace père par main thread, et on recommence avec ce contexte:

Main thread, qu'est ce qu'il fait dans notre navigateur:

  • 📝 Écouter - tout les évenements sont déclenchés par notre application et chercher qui les interesse
  • 🎨 Planifier - comment gérer les résources
  • 🧑‍💻 Construire - l'arbre de DOM
  • 🤹 Dessiner - appliquer les styles (CSS)
  • 🎥 Appeler - requêtes pour remplir notre app avec des données en réel
  • 📤 Envoyer - les demandes à Web API comme geolocation, notification,...etc
  • 🛠 Réparer - l'appel qui a échoué

layout: image-right image: /assets/images/solution.png

Quel est le problème et comment les Web workers nous aident ?

Aujourd'hui, avec l'évolution des technologies, le main thread gère beaucoup de tâches, et Javascript est un langage single thread, il ne peut pas faire deux tâches en même temps.

Par contre, nos CPUs ont aussi évolués, ils ont plus que un coeurs ❤️, pourquoi ne pas en profiter ?


layout: image-left image: /assets/images/action.png

Worker in action

// main.js
const worker = new Worker("worker.js");
worker.postMessage(someMessage);
worker.onmessage = (message) => {
	// traiter message
};

// worker.js
onmessage = function (e) {
	const data = e.data;
	const workerResult = doSomethingWithData(data);
	postMessage(workerResult);
};
<style> .grid.grid-cols-2 .w-full { background-size: contain !important; } </style>

Démo avec Vanilla JS

---

Questions ?


Merci beaucoup pour votre attention!