
Explication du fonctionnement du moteur JavaScript : moteur, WebAPIs, Call Stalk, Simultanéité.
Bienvenue dans le deuxième article de notre série : JavaScript sous le capot ! Dans cet article, nous nous intéresserons au fonctionnement du moteur JavaScript. Allez, c’est parti !
Ce qu’il ne faut surtout jamais oublier quand on développe en JavaScriptLangage de scripting orienté objet, c’est que les actions sont effectuées 1 à 1, et jamais simultanément : c’est un langage single-threaded.
Nous allons voir ici ces concepts plus en détail, afin de comprendre comment JavaScript fonctionne plus en profondeur.
Cela vous permettra de comprendre un peu mieux pourquoi le JS peut être « bizarre » comparé à d’autres langages.
Un des moteurs les plus populaire de JavaScript est le moteur V8 de Google, utilisé dans Google Chrome et NodeJS.
Voici une vue simplifiée de ce à quoi il correspond :

Le moteur est composé de 2 composants principaux :
Des APIs situées en dehors du moteur sont également à la disposition du développeur. La plupart sont souvent utilisées, tel que DOM ou setTimeout, et c’est également ici que nous avons les fameuses callback queue ainsi que event loop.

JavaScript étant single-threaded, cela veut dire qu’il n’y a qu’une seule pile d’exécution, nous ne pouvons donc faire qu’une chose à la fois.
La pile d’exécution est une structure de données qui enregistre où nous en sommes dans le programme.
Si nous entrons dans une fonction, nous la mettons en haut de la pile.
Si nous revenons d’une fonction, nous l’enlevons du haut de la pile. C’est tout ce que la pile peut faire.
Prenons le programme suivant :
function multiply(x, y) {
return x * y;
}
function printSquare(x) {
var s = multiply(x, x);
console.log(s);
}
printSquare(5);
Quand le moteur exécute le code, la pile est vide, puis elle se remplit de la façon suivante :

Avoir qu’une seule pile d’exécution peut être pratique, car cela enlève tous les problèmes engendrés par le multithreading.
Cependant, exécuter un programme sur 1 seul thread a aussi un très gros inconvénient : tout est bloqué quand une tache est longue !
Que se passe-t-il quand une fonction dans la pile d’exécution prend énormément de temps à finir, par exemple, pour un traitement d’images dans votre navigateur ?
Tout se bloque, de l’UIL'UI signifie "user interface", et se compose de tous les éléments graphique d'une interface utilisateur. de votre page internet jusqu’au navigateur en lui-même.
En effet, votre navigateur va essayer de rafraichir la page toute les 1/60 secondes, et ne peut le faire que si la pile est vide.
Si une de vos fonctions prend du temps, c’est la réactivité de votre site web qui en prendra un coup.
La solution qui nous est proposée (et que vous utilisez sans doute sans modération) est l’asynchrone, avec la callback queue et event loop.
Pour aller plus loin dans la compréhension de Javascript, voici quelques liens utiles :
Explication du fonctionnement de Callback queue & Event loop en Javascript.
Découvrez la planche #44 !
Vue.js est l'un des frameworks JavaScript les plus populaires du moment, et devance même Angular en termes d'utilisation selon le State of JS 2023 ! Dans cet article, nous allons faire un focus sur la réactivité dans Vue.js, un élément crucial à prendre en compte pour créer des interfaces dynamiques et performantes. Dans Vue.js, celle-ci peut sembler complexe à première vue, surtout quand on la compare à d'autres frameworks comme React et son hook useState ou Angular et ses Observable. Mais en réalité, une fois les concepts clés découverts, Vue.JS est plus facile à prendre en main grâce à certains outils et techniques qui simplifient grandement la gestion de cette réactivité. Découvrons comment optimiser vos développements !