Levio
Levio
Agile
11 May 2016

C’est pu comme dans mon temps…..

Ça faisait plus d’un an que j’avais pas mis le nez dans la programmation “front-end” soit depuis qu’on a mis de côté notre super feuille de temps maison pour un package commercial.  Pour rappel, c’était une bonne vieille SPA, codé “à la main” en javascript avec Knockout JS aidé de jQuery et bootstrap.  Quand même un beau design avec injection des scripts par requireJS ce qui nous permettait tout de même de faire des scripts de tests unitaires.

Dernièrement, on s’est lancé dans le développement d’une nouvelle application maison.  En tant que consultant, je pense qu’on doit rester à l’avant-garde des nouvelles technologies et essayer de deviner ce que nos clients vont/devraient utiliser comme technologie et s’assurer qu’on est capable de les utiliser. (parenthèse)Je parle ici bien sûr des vrais consultants, ceux qu’on devrait engager pour apporter une nouvelle expertise, pour apporter une force de frappe pour un moment, pour accompagner le client dans la mise en place d’un programme important qui lui rapportera des bénéfices; les consultants permanents, ceux qui s’incrustent chez les clients pendant des années et qui sont en partie la cause de la mauvaise réputation de notre profession de consultant ces temps-ci n’ont pas cette responsabilité, ils peuvent continuer à faire du cobol ou du VB6(fin de la parenthèse).  On a donc déterminé que Angular 2 était le cadre de développement qu’on utiliserait pour cette nouvelle application.  Pour le backend, on a choisit une architecture REST en C#.

Méchante courbe d’apprentissage… Fini le temps où on avait juste à référer des javascript.  On est maintenant rendu avec des packages managers qui s’assurent d’aller chercher les scripts dans un registre et de charger les bonnes versions dans le bon ordre.  Et y a pas juste un package manager, ça serait trop simple… grosso modo, j’ai vu à date npm et bower.  Ces outils sont configurés par le biais de fichier JSON (vous parlez bien sûr JSON maintenant??? XML, c’est fini).

J’avoue que pour une application Angular, je suis bien content d’avoir juste à faire “npm install” pour aller chercher toutes les dépendances; ça fait presque 80 Mo de scripts!!  Plus de 350 librairies!!  C’est fou…

Et maintenant, on code en TypeScript; ça c’est vraiment bien, un langage “strongly-typed” nous permet de trouver des bugs à la compilation plutôt qu’au runtime (bug qui peuvent être très difficiles à trouver).  Mais les fureteurs comprennent quand même juste le javascript, ça prend donc un “transpiler” pour traduire le TypeScript en javascript.

Pis on a encore des vieux fureteurs; donc si on code avec les toutes dernières versions de TypeScript/Javascript, ça nous prend un outil de type Babel pour transformer la nouvelle syntaxe en syntaxe traditionnelle équivalente.

Et tout ce beau code là (et les images, et les css), on va vouloir que ça soit le plus compact possible, alors on entre dans la danse webpack qui va s’occuper de “bundler” tout ça.

Ouf… quelques belles soirées en perspective pour apprendre à jongler avec tout ça…