|
| 1 | +--- |
| 2 | +layout: page |
| 3 | +title: JavaScript |
| 4 | +permalink: /javascript/ |
| 5 | +--- |
| 6 | + |
| 7 | +Le **JavaScript** n'a rien à voir avec **Java**, un autre language de programmation. |
| 8 | + |
| 9 | +Il a été créé en 1995, pour Netscape Navigator, par Brendan Eich (en 10 jours, selon la légende, pour coïncider avec la sortie de Netscape 2). En fin 1996, Netscape entreprend des démarches pour faire de JavaScript un standard (qui s'appelle ECMAScript). |
| 10 | + |
| 11 | +Ce standard est révisé régulièrement, la 6ème version (ES6) a été finalisée en juin 2015. |
| 12 | + |
| 13 | +Etat du JavaScript en 2016 |
| 14 | +== |
| 15 | + |
| 16 | +De nombreux utilitaires ont été construits sur la base du JavaScript: |
| 17 | + |
| 18 | +- **jQuery** est une *bibliothèque* JavaScript (library) - une boîte à outils pour faciliter les usages les plus communs. |
| 19 | +- **Node.js** est une *plateforme serveur* JavaScript (runtime) - comme Apache, mais exécutant du code JavaScript plutôt que du PHP. |
| 20 | +- **AngularJS** est un *framework* de programmation JavaScript front-end, créé par Google. |
| 21 | +- **Ember** est un autre *framework* front-end JavaScript. |
| 22 | +- **React** est encore un *framework* JavaScript front-end, créé par les développeurs de Facebook. |
| 23 | + |
| 24 | +Une application web contemporaine, au lieu d'utiliser **LAMP** (**L**inux, **A**pache, **M**ySQL, **P**HP), pourrait tourner sur **MEAN**, acronyme pour l'utilisation de **M**ongoDB (base de données), **E**xpress.js, **A**ngular.js, et **N**ode.js - une base logicielle entièrement codée en langage JavaScript. |
| 25 | + |
| 26 | +La librairie jQuery |
| 27 | +== |
| 28 | + |
| 29 | +Lancée en janvier 2006 par John Resig, **jQuery** est une bibliothèque JavaScript libre et multi-plateforme créée pour faciliter l'écriture de scripts côté client dans le code HTML des pages web. |
| 30 | + |
| 31 | +Dans son article, *[Thank you, jQuery](https://adactio.com/journal/10806)*, publié en juin 2016, Jeremy Keith indique qu'au cours des 10 années depuis la sortie de jQuery, de nombreuses améliorations proposées par jQuery ont été intégrées nativement par les navigateurs (*querySelector*, *querySelectorAll* - voir [Selectors API](https://developer.mozilla.org/en-US/docs/Web/API/Document_object_model/Locating_DOM_elements_using_selectors)), tandis que d'autres (comme l'animation) ont été intégrées dans le CSS3. |
| 32 | + |
| 33 | +Il est désormais nettement plus facile de se passer de jQuery, et d'écrire du "Plain Vanilla JavaScript". L'objectif ultime d'un outil comme jQuery serait de ne plus être nécessaire. |
| 34 | + |
| 35 | +Le site [Vanilla JS](http://vanilla-js.com/) expose sous un mode parodique (en se présentant comme une énième librairie JavaScript) les avantages (en termes de vitesse) à utiliser du JavaScript pur, plutôt que de se reposer sur une librairie telle que jQuery, Prototype, Dojo, MooTools. |
| 36 | + |
| 37 | + |
| 38 | + |
| 39 | +Préprocesseurs: |
| 40 | +=== |
| 41 | + |
| 42 | +On a vu l'apparition de préprocesseurs (comme SASS ou LESS) pour faciliter l'écriture du CSS. Cela existe aussi pour le JavaScript: |
| 43 | + |
| 44 | +**CoffeeScript** est un langage de programmation plus épuré que le JavaScript, pouvant être automatiquement converti en JavaScript normal. |
| 45 | + |
| 46 | +Apprendre le JavaScript |
| 47 | +=== |
| 48 | + |
| 49 | +- Une approche proposée par Remkus de Vries: [https://remkusdevries.com/learning-javascript-in-wordpress-deeply/](https://remkusdevries.com/learning-javascript-in-wordpress-deeply/) |
| 50 | +- Deux livres recommandés: [https://tommcfarlin.com/recommended-javascript-books/](https://tommcfarlin.com/recommended-javascript-books/) |
| 51 | + |
| 52 | +ES6 |
| 53 | +=== |
| 54 | + |
| 55 | +Qu'est-ce que ES6 ? Une nouvelle version du standard JavaScript, dont la spécification a été finalisée en 2015. |
| 56 | + |
| 57 | +Table de compatibilité JavaScript: |
| 58 | +[http://kangax.github.io/compat-table/es6/](http://kangax.github.io/compat-table/es6/) |
| 59 | + |
0 commit comments