WebPagetest est un outil qui permet de mesurer les performances, en terme de rapidité de rendu, d'une page. Il peut être utilisé en ligne pour obtenir des indicateurs mondiaux mais également en local, sur un machine virtuelle par exemple, ce qui permet de contrôler de manière continue les performances d'un site pendant son développement.
Oui, mais tous ces outils (à part WebPagetest) peuvent être lancés par un "task runner", par exemple Grunt. Il se charge d'enchainer les programmes selon la configuration fournie et peut être déclenché dès qu'un fichier est modifié.
module.exports = function(grunt) {
grunt.initConfig({
...
qunit: {
files: ['test/**/*.html']
},
jshint: {
files: ['gruntfile.js', 'src/**/*.js', 'test/**/*.js']
}
},
watch: {
files: ['<%= jshint.files %>'],
tasks: ['jshint', 'qunit']
}
});
grunt.loadNpmTasks('grunt-contrib-jshint');
grunt.loadNpmTasks('grunt-contrib-qunit');
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.registerTask('test', ['jshint', 'qunit']);
};
extrait de configuration de Grunt ou JSHint et QUnit sont lancés dès modification d'un fichier ou lancement de la tâche test.
Couplé à des pages reloader (ex: livereload), de nouveaux workflows très productifs sont apparus où, dès que le développeur a fini d'écrire son code, le task runner lance la compilation, JSHint et les tests associés tandis que le navigateur se rafraichit automatiquement. Yeoman (basé sur Grunt) permet de réaliser ce workflow.
Tracez la limite de responsabilité entre ces utilitaires et vos frameworks coté serveur. On pourra par exemple laisser à Grunt le soin de compiler et tester le code front tandis que les mécanismes bundle de asp.net 4.5 ou asset pipeline de ruby on rails s'occuperont de minifier et de donner un nouveau nom au fichier.
En ce qui concerne l'usine de développement, Grunt est pilotable par la ligne de commande ce qui lui permet d'être facilement intégrable à vos jenkins et autre TFS. Pour nos amis javaiste, on parle également du plugin Maven-Grunt. Essayer de ne pas supprimer vos dépendances node local pour ne pas avoir à les retelecharger à chaque build. Utilisez les codes retours pour faire échouer vos builds si votre code n'atteint pas la qualité attendue.
L'outillage javascript à suivi son utilisation massive et on ne peut juste demander à une équipe de réaliser un site magnifique sans lui fournir les outils adaptés.
Prenons soin de notre code coté client en permettant à nos développeurs front-end de coder plus vite et mieux avec des outils adaptés.
« Ok, je commence à comprendre: si on veut gagner l'adhésion des utilisateurs, il nous faut des interfaces sexy. Ca demande du boulot js et css et sans outils adaptés, on court au casse-pipe. Capitalisons sur notre industrialisation backend et appliquons les mêmes principes à notre développement front ! »