• [^] # Re: javascript ?

    Posté par . En réponse à la dépêche Node.js passe la sixième vitesse. Évalué à 6.

    Pour réapprendre proprement le langage, j'étais tombé sur un tuto interactif avec uniquement des code à modifier: http://ejohn.org/apps/learn/

    Ça ne concerne ni NodeJs, ni les nouveautés apportées par ES6, mais c'est excellent pour comprendre les spécificités de Javascript, notamment le fonctionnement des closures, le comportement de this et l'orienté objet par prototype.
    Apparemment, ce serait une partie et/ou les exemples du livre Secrets of the JavaScript Ninja de John Resig, le créateur de jQuery.

    Je n'ai pas de lien global pour apprendre le js "moderne", mais pour donner quelques orientations:

    • La norme ECMAScript 6, aussi appelée ES6 ou ECMAScript 2015, est finalisée depuis juin 2015. Tout les navigateurs ne supportent pas encore toutes les nouveautés, loin de là, mais ça arrive vite, et il existe des outils pour pour utiliser ES6 en gardant la compatibilité avec tout le monde.
      Il y a de la doc très détaillée sur le site de doc de mozilla, et on peut avoir un aperçu avec exemple de code de chaque nouveauté sur cette page github.
      En résumé, beaucoup de nouvelles fonctions/méthodes dans la lib standard qui auraient dues être là depuis des années, pas mal de sucre syntaxique, et quelques fonctionnalités qui permettent de gérer beaucoup plus facilement le code asynchrone.
      Avec ca, je trouve que le langage ressemble de plus en plus à Python (mais ne le dites surtout pas à un dev Python, il le prendrait très mal ;) ).
      Je suis également le blog 2ality (en) qui propose des articles vraiment détaillés sur chaque point d'ES6 et explore tout les cas tordus. Une mine d'or.

    • Ensuite, on a NodeJs.
      C'est "juste" un interpréteur javascript, avec une lib pour communiquer avec l'OS (filesystem, réseau). En pratique, l'API de NodeJS est clairement orientée serveur, et repose beaucoup sur l'asynchrone. Sa doc est assez lisible pour trouver ce que l'on veut, et on monter un serveur HTTP ou faire un petit exécutable CLI en quelques lignes. Le cas d'utilisateur le plus courant de NodeJs, c'est un site web basé sur un framework web minimaliste tel que ExpressJS.
      C'est très, très simple de monter un site web et d'avoir un visuel en 5 minutes, mais on peut facilement s'y perdre si on ne maîtrise pas la notion de scope en Javascript.
      Le code asynchrone est énormément utilisé par NodeJs et son écosystème. Comme en js, il est très facile de créer des fonctions lambda, les callbacks sont énormément utilisées.
      Sauf que l'asynchrone apporte forcément une dose de complexité, et qu'il est très facile de s'y perdre et de produire du code dégueulasse (callback-hell). Face à ça, des conventions et des design patterns ont émergés. On trouve énormément d'articles sur le sujet en cherchant les notions d'error-first callback, de thunk et de Promise .