Salut à tous !
J'ai la volonté d'écrire un cours sur JS pour zds car il me semble que ça serait utile. De plus la plupart des cours en français sur le sujet sont assez datés, peu complets voir carrément pleins de bêtises.
Voici ce que j'ai retenu pour l'instant : - Utiliser ES2015 (ES6) afin de proposer du js moderne - Ne par parler du js dans le navigateur ni de node, du moins dans les premiers tutos - Découper le tuto en deux tutoriels : un tuto "introduction" qui présente les rudiments du langage et un tuto"intermédiaire" qui présente plus en détail les principes de bases (fonctions comme objet de premier ordre, prototypes, nouvelles structures de données etc.).
Je pensais commencer par rédiger en premier le cours intermédiaire car cela permet aux gens de compléter le cours de deux façons : - Soit en écrivant le tuto débutant en sachant précisément ce qu'il faudra mettre dedans. Ce qui devrait rendre le travail plus facile. - Soit en se basant sur le tuto intermédiaire pour écrire des tutos avancés qui viendraient le compléter (js dans le navigateur, node js, angular 2.0, react, programmation fonctionnelle…).
Mon but serait de parvenir à finir ce tuto pour la rentrée scolaire. Au moins dans les grandes lignes concernant la rédaction. Je penses que c'est possible.
Je précise que je ne suis absolument pas un spécialiste de js : je suis étudiant en économie (et je compte le rester) donc je ne pratique le JS qu'en amateur et en apprenant par moi même. C'est justement en étant frustré de ne pas trouver de ressources en français de qualité que j'ai envie d'essayer de partager ce que j'apprends sur le sujet. Même si j'apprends en même temps que j'écris. Il n'est donc pas impossible que je raconte quelques bêtises de temps en temps (surtout sur ES6 que je commence à explorer).
Voici une ébauche du plan du cours débutant qui me semble suffisant pour donner les bases du langage (version ES 2015) et permettre d'aborder le cours intermédiaire :
Introduction au JS moderne
Introduction
- Pourquoi programmer ?
- Présentation de JS
- Avoir les bons outils : le logiciel Brackets
Variables, types et expressions
- Stocker une valeur dans une variable (let/const)
- communiquer avec l'utilisateur (alert,print,console.log)
- les types de variables (primaires sauf symboles)
- les expressions
Les boucles
- boucle for
- boucle while
- switch
Réutiliser son code avec les fonctions
- Ecrire ses premiéres fonctions
- La portée des variables (ES6)
- gestion des paramétres
- Les fonctions expressions et anonymes
Les Objets et la POO
- Ecrire des objets : syntaxe litérale, propriétés et méthodes
- Les Classes
- Les méthodes statics
- Ettendre une classe avec extands et super
Stocker ses données grace aux tableaux
- Ecrire un tableau
- Les tableaux sont des objets
- Méthodes à connaitre : map,reject, filter etc.
Annexes
- Aller plus loin : sites à connaitre, bonnes pratiques etc
- Rendre son code compatible avec les anciens navigateurs
- Déboguer son code
- Le mode strict (op on met ça là car on ne sait pas où le mettre ailleurs )
Le but est de proposer un cours pas trop gros, qui donne le minimum pour se débrouiller correctement : variables, fonctions et objets (avec les classes uniquement, vive ES2015). Ensuite on peut attaquer le cours intermédiaire :
Voici le plan que j'ai retenu pour le cours intermédiaire :
JS moderne intérmédiaire
Retour aux bases (vraiment nécessaire ?)
- Retour sur les types
- La portée des variables
- Le Hoisting
Aller plus loin avec les fonctions
- qu'est ce qu'une fonction ? (objet de premier ordre)
- invocation (on parle du this ici)
- closure
- les fonctions fléchées (ou les fonctions "normales" ?)
Les objets au cœur de javascript
- rappel sur les objets et classes
- le constructeur et le mot clef new
- la chaine de prototypes
- la véritable nature des classes
- tous est un objet… ou presque : les wrappers objets
Les structures de données
- rappels sur les structures de données
- la méthode reduce
- stockez vos données avec les collections
- stockez vos données avec les dictionnaires
Organisez votre code en modules
- pourquoi découper son code en modules ?
- export et import
- chargement dynamique
- isolation
J'essaye de présenter dans ce cours ce qui me semble fondamental pour avoir des bonnes bases en js moderne. Comme j’apprends moi-même en réfléchissant sur le sujet, il est possible que mon plan soit un peu bancal. Sentez vous libre de le critiquer et de proposer des améliorations.
La question des fonctions et du mode strict :
Je me pose deux questions importantes concernant la façon d’aborder deux choses :
- La plus simple : quand et comment parler du mode strict ? Faut-il le présenter dés le début et demander au débutant de l'utiliser partout et tout le temps ? Est-ce vraiment une bonne pratique ? Je ne sais pas trop où placer ce truc…
- La plus compliquée : la question des fonctions. Est-ce qu'on doit dans le cours pour débutant parler uniquement des fonctions fléchées ? Après tout elles peuvent remplacer les fonctions classiques dans la majorité des cas si je ne dis pas de bêtises. D'un autre coté ne pas présenter les fonctions classiques serait un peu dérangeant… Du coup je pensais garder ça pour la partie avancée. J'avoue être un peu perdu là dessus. Vous en pensez quoi ?
Il y a plein de trucs de ES6 (et d'ES5 :D) que je n'aborde pas, par ce que je ne les maitrise par forcement et par ce qu'en plus je ne vois pas trop où les placer dans des cours pour débutants : déstructuration, symboles, itérateurs, promises etc.
Voilà, j’attends vos retours pour être sur que mon plan ne soit pas totalement stupide, et essayer qu'on propose à terme du contenu cohérent qui s'articule bien. Je suis ouvert à toute remarque et bien entendu à toute aide : je ne suis qu'un amateur qui essaye d'apprendre et en même temps de contribuer à la communauté !
Merci d'avance pour vos retours !