On Github tdd / parisweb-2015-talk
Une présentation de Christophe Porteneuve à Paris Web 2015
var christophe = { age: 37.90622861054072, city: 'Paris', company: 'Delicious Insights', trainings: ['JS Total', 'Node.js', 'Git Total'], webSince: 1995, claimsToFame: [ 'Prototype.js', 'Ruby On Rails', 'Bien Développer pour le Web 2.0', 'Prototype and Script.aculo.us', 'Paris Web' ] };
6 piliers
3 bonus
Plein de démos
Des étoiles dans les yeux
Comme en 1995. Y’a 20 ans. WTF, les gens.
1 Source : Wanegaine Institute™ Of Wing-It Statistics • 2 Base 2,5K€ nets en 39h • 3 5 sem. CPTirer parti de l’état courant de la runtime (complétion réelle, introspection, débogage pas à pas…)
Feedback immédiat (on y reviendra)
Desktop : tous ceux dont on a besoin (IE8+, Firefox, Chrome, Safari, Opera…)
Mobile : souvent connectable via l’équivalent desktop
HTML en mode « assisté »
CSS en assisté ou texte brut, hot-swapped.
JavaScript en texte brut, hot-swapped1
1 sur Chrome ; prochainement Firefox et MS EdgeSauve sur disque vos changements faits dans Chrome
Mapping URLs ⬌ chemins sur disque
On peut utiliser les Dev Tools comme un EDI, si on veut !
Les Dev Tools, c’est comme MS Office :tout le monde s’en sert… à 5%.
Cours interactif gratuit Discover DevTools, excellentissime manuel officiel, chaînes YouTube Chrome Devs, tutos sur HTML5 Rocks, sur le MDN ou Hacks Mozilla, tout plein de comptes Twitter à suivre…
Utilisez le navigateur le plus pratique à un instant t !
Tout ça est doté d’une tonne de raccourcis clavier, pour aller encore plus vite : consultez-les !
Dans les derniers Dev Tools de Chrome, on peut même réordonner nos onglets…Oui, genre faites depuis un éditeur / EDI externe au navigateur, quoi.
Et ce, évidemment, indépendamment de l’éditeur retenu.
Tous les navigateurs autorisent la prise en charge à la volée, programmatique, d’une feuille de style mise à jour : il suffit donc d’avoir un script dans la page (ou une extension) qui soit notifiée par l’extérieur.
Pléthore de solutions :LiveReload (bleark), fb-flo (sympa), BrowserSync (yay !)…
Présent aussi dans du dédié : Brackets, WebStorm…
Si la runtime permet le hot-swap : au top. Mais pour le moment, ça n’est vrai que pour v8 (Chrome, Safari, Opera, Node.js).
Sinon, on devra recharger la page / le programme (bon, certes, automatiquement).
BrowserSync toujours, partout (mais sans hot-swap…), fb-flo (Chrome seulement…), Webpack trituré (toutes v8).
BrowserSync brille aussi par son Ghost Mode, qui répercute la plupart des manips interactives d’un navigateur vers tous les autres connectés au même serveur.
Idéal pour tester en parallèle le comportement d’une même page sur plusieurs clients (dont mobiles, TVs, consoles…)
Découple le code source en dev (langage, découpage / enrobage, lisibilité…) de celui exécuté (bundle CSS/JS unique voire minifié).
Super idée, mais frein potentiel : le code interprété n’est plus celui écrit : comment s’y retrouver au débogage ?
Source Maps v3 depuis février 2011 (bientôt 5 ans). Large prise en charge : Fx23+, Cr26+, IE11+, Saf6+…
Fonctionne en multi-niveaux, donc à travers n étapes. Ex. : ES6 ⇢ ES5 ⇢ bundle unique ⇢ minification.
Plus d’excuse pour ne pas utiliser le top en dev !
On a aujourd'hui de véritables chaînes d’assemblage : le développement web, front comme back, s’est énormément industrialisé ces dernières années.
Beaucoup de tâches fréquentes, voire ultra-récurrentes, rébarbatives et faciles à gaufrer à la main.
Grunt a certes popularisé le truc, mais trop mal branlé ; déjà largement sur le retour.
Principaux acteurs aujourd'hui :
Gulp (générique, a néanmoins pas mal de problèmes)
Webpack (assemblage surtout, très avancé)
Browserify encore populaire, mais nécessite pas mal de code / CLI… Du coup Webpack et JSPM lui bouffent son lunch. Quant à Brunch, longtemps l’outsider qui défonce tout, il a raté sa prise en charge npm (on y reviendra), et devient condamné à la marge, où il retrouve Broccoli et d’autres :'-(Pour les mêmes raisons que côté back :modularité, découpage, dépendances explicites, chargement à la demande, etc.
…pour arrêter l’amateurisme crasse des tas de balises <script> dégueulasses jetées dans un ordre magique sur la page, avec leurs tas de requêtes synchrones bloquantes…
AMD (donc Require.js) est comateux #unleashthetrolls
CommonJS domine (Brunch, Browserify, Webpack…) mais en vrai on passe aux modules natifs ES6
Transition facile en tous les cas, grâce à des tours de force techniques comme SystemJS
Ne pas confondre avec Bower, qui simplifie juste l’installation de dépendances frontTrès, très grosse tendance
A émergé notamment grâce à des outils comme Browserify et le mouvement Universal JS1
Webpack est vraiment au top dans ce contexte
JSPM est une énorme tuerie, en complément
1 anciemment « Isomorphic JS »JS industriel = excellent corpus de tests
On a sans doute l’écosystème de tests le plus avancé, toutes technologies confondues
Des solutions haut de gamme pour les assertions (Chai et ses plugins), le mocking (notamment SinonJS), les harnais (Mocha, Tape…), les runners (Karma, BrowserStack, Sauce), la mesure de couverture (Istanbul, Isparta)…
Critique pour la CI (intégration continue), le CD (déploiement continu) et les builds incassables.
Approche qui a largement fait ses preuves, mais… il faut que les tests aillent vite. Très vite, pour être confortable.
Ça tombe bien : tester du JS, front comme back, en feedback temps réel (watchers), peut être extrêmement rapide, notamment grâce aux mockings I/O et DOM et au pur fonctionnel (qui rend l’isolation triviale, ex. Redux).
C’est là, ça y est, et c’est utilisable maintenant1
Énormes gains de productivité, de performance et de fiabilité à la clé, mais aussi…
Énormes gains de plaisir :-D
Pour tout savoir là-dessus, venez à mon atelier de samedi… ou à ma présentation à Blend à la fin du mois !
1 grâce à Babel + core-js, notamment : IE9+ suffisant, Node.js OK !votre temps avec des silex
en créant, plutôt qu’en attendant après vos outils
On fait des super formations de ouf surGit, JavaScript et le dev web front et Node.js.
Et ce qui est encore plus cool, c’est que pour l’auditoire Paris Web, c’est −15% sur toutes les sessions jusqu’à fin janvier, rien qu’avec votre n° d’inscription PW.
Christophe Porteneuve
Retrouvez les slides sur bit.ly/devfrontmach1