JavaScript

JavaScript ou JS en abrégé est un des 3 langages de base des pages Web

JavaScript permet d’effectuer des actions: ouvrir une popup lorsqu’on appuie sur un bouton, faire défiler des images dans un diaporama, etc. De manière générale, il permet d’ajouter de l’action et de rendre la page interractive avec l’utillisateur.

Bien que leur nom se ressemble, JavaScript est un langage totalement différent de Java.


Client-serveur

JavaScript un langage executé côté client, par le navigateur. Cela signifie que le code JavaScript est envoyé au client, et que c’est lui qui l’execute et non le serveur. Mais l’utilisateur peut le désactiver dans son navigateur: le JavaScript doit donc être utilisé pour améliorer l’expérience utilisateur - le site doit pouvoir fonctionner sans.

JavaScript est intentionnellement limité, il n’a pas accès au système de fichiers de l’ordinateur sur lequel il s’execute, ce qui constituerai un risque de sécurité majeur.

JavaScript a été conçu pour fonctionner comme un langage de script executé par le navigateur, mais parce qu’il est devenu très populaire, il est apparu comme un langage de script dans d’autres applicatons commme Adobe Acrobat et Photoshop, et même dans des produits côté serveur, comme NodeJS et Google Apps Script.


Appliquer du JavaScript

Pour executer du JavaScript côté client, il doit être inclut dans une page HTML. On peut le mettre

Plusieurs scripts peuvent être ajoutés sur une meme page.

Par défaut, JavaScript sera interprété et exécuté dès que le navigateur le verra (donc la position du JavaScript dans la page est importante). L’interprétation du JavaScript peut retarder le chargement de la page, il est donc d’usage d’inclure le JavaScript en bas de la balise <body> - tandis que les feuilles de style sont conservées dans la balise <head>.


Structure

Comme dans la plupart des langages de programmation, le code est groupé en instructions. Ces instructions indiquent au navigateur ce qu’il doit faire: changer la couleur du texte, calculer l’âge de quelqu’un, déplacer une image à gauche, faire disparaître ou afficher un menu, afficher un message d’alerte, etc. Les instructions sont executées l’une après l’autre, de gauche à droite, de haut en bas.

De la même manière qu’on termine une phrase par point, on termine une instructions JavaScript par un point-virgule ;.
JavaScript est un langage qui “pardonne”, le navigateur essaie de deviner ce qu’il doit faire, si bien que dans la plupart des cas, une instruction JavaScript fonctionnera même si le point-virgule est omis. C’est une bonne pratique d’écrire du code valide et non juste du code “qui marche”, et donc toujours les mettre.

JavaScript est sensible à la casse mais insensible aux espaces et retours chariots.
Pour rendre la lecture plus facile, on met généralement une seule instruction par ligne.

alert("Hello World");
alert("Another message");

La plupart du temps, dans un navigateur, le code JavaScript ne doit s’executer qu’en réponse à un événément: lorsque l’utilisateur clique quelque part, lorsqu’il soumet un formulaire ou même lorsque la page a fini de charger par exemple. On regroupe ainsi le JavaScript dans des fonctions qui ne sont appelées que lorsqu’un événement se produit.

windows.onload = function() {
  alert("La page a fini de charger");
};
document.getElementById("mybtn").addEventListener("click", function(){
  alert("Clic sur #mybtn");
});

Commentaires

Deux types de commentaires sont possible en JavaScript:


Mode strict

JavaScript peut être utilisé en mode strict en ajoutant la directive 'use strict'; en haut du code. Le mode strict renforce les règles d’analyse et de traitement des erreurs sur le code, ce qui facilite le debuggage: les erreurs de code qui auraient été ignorées en tant normal lèvent une erreur en mode strict, comme le fait de réassigner une constante, d’assigner une variable non déclarée ou de supprimer une variables qui n’existe pas.

Il permet également de sécuriser le code: les variables et fonctions déclarées à l’intérieur d’une instruction eval() ne sont pas crées dans la portée environnante.

MDN Mode strict


Debugger

Pour debugger du code JavaScript, la plupart des navigateurs proposent une console et un ensemble d’outils destinés aux développeurs, dits DevTools. Une console est destinée aux développeurs et non aux utilisateurs, elle est donc fermée par défaut. Pour l’ouvrir sous Firefox: Ctrl + Maj + k.

console est un objet JavaScript crée par les navigateurs qui en ont une pour écrire dans la console.


Historique

The History of JavaScript: ECMAScript, TC39, and beyond
ECMAScript Editions
Tester ES6 en ligne


Les 5 étapes des évolutions ECMAScript

Le processus de proposition de nouvelles fonctionnalités à ECMAScript se déroule en 5 étapes:

Interesting ECMAScript 2017 proposals that weren’t adopted


Librairie, Plugin, Framework & API

Librairie

Une librairie est un ensemble de fonctions que l’on peut appeler.
Une librairie est généralement organisée en module / classe.

Exemples: JQuery, underscore.js, React

Plugin

Un plugin est un utilitaire que l’on peut ajouter à une librairie pour ajouter des nouvelles fonctions, qui se base sur cette librairie pour fonctionner.

Exemples: JQuery UI, React Router

Framework

Un framework est un “squelette” d’application, avec une architecture pré-établie, qui contient un ensemble de librairies déjà inclues, et par dessus lequel on ajoute nos propres sous-classes et plugins.

Exemples: Ember.js, Angular.js, Backbone

La principale différente entre une librairie et un framework est l’inversion du contrôle. Dans le cas d’une librairie, on en appele les méthodes, on a le contrôle. Avec un framework, le contrôle est inversé: c’est le framework qui appelle nos méthodes. La plupart du temps, une librairie prend peu de temps à apprendre tandis qu’un framework prend plus de temps.

API

Une API (Application Programming Interface) est une interface (un ensemble de propriétés et méthodes) qui permet d’interagir avec une application. Dit simplement, une API est la partie exposée (publique) d’une application, que l’on peut appeler. On accède à une librarie ou à un service web via son API.

Le navigateur fournit une API Web, du JavaScript qui ne fait pas partie des spécifications ECMAScript, pour interagir avec

Vanilla JavaScript

Lorsqu’aucune librairie ni framework n’est utilisé, que l’on n’utilise que les méthodes JavaScript natives (méthodes supportées par le navigateur sans avoir à inclure des ressources externes), alors on parle de Vanilla JavaScript.