RSS
 

Cakefest #3 – Second jour de conférences

12 août

«»

Javascript et Git pour les développeurs PHPFelix Geisendörfer

Suite à la première conférence de la matinée et au lot de questions soulevées, une présentation plus interactive a été effectuée par Felix Geisendörfer de Debuggable. Le but initial était de présenter leur manière d’organiser les scripts Javascript au sein d’une application CakePHP, ainsi que les bases de jQuery mais la seconde partie a finalement été remplacée (à la demande de la majorité) par quelques illustrations de l’utilisation de Git pour versionner ses projets. Comme vous pouvez le remarquer le passage sous Git du projet et l’utilisation de ce SCM a suscité de nombreuses questions de la part d’utilisateurs de SVN !

Felix a donc commencé par nous présenter une manière d’organiser les fichiers Javascript afin de diminuer la quantité de code à télécharger par l’utilisateur sur chaque page, et pour également se retrouver plus facilement dans le code. L’architecture proposée est somme toute relativement simple. Il suffit en effet d’organiser ses fichiers au sein d’une arborescence identique à l’arborescence des vues de votre application. J’ai rapidement reproduit cette arborescence dans une application de test afin de faire une capture d’écran car une image vaut mieux que mille mots !

Cette organisation de fichier permet en effet de factoriser le code Javascript nécessaire à l’affichage de toutes les vues dans le fichier « layouts/default.js » et d’avoir ensuite un fichier Javascript par vue pour le code spécifique. De plus, si vous utilisez une fonctionnalité au sein de différentes pages cela vous forcera (pour éviter des redondances) à utiliser des éléments afin de factoriser votre code … ce qui est une bonne pratique !

jsFiles

Afin de se faciliter la vie avec l’inclusion des fichiers strictement nécessaires, Felix a également rendu disponible le script effectuant l’inclusion des bons fichiers au sein des applications de Debuggable. Le code ci-dessous doit être placé dans un élément « views/elements/js_include.ctp » et être appelé sur chacune des pages (dans le layout par exemple).

<?php
// Source : http://bin.cakephp.org/view/709895328
$includeScripts = array(
 'jquery',
 'jquery.tooltip',
);
 
$layoutScript = sprintf('%sviews/layouts/%s.js', JS, $this->layout);
if (file_exists($layoutScript)) {
 $includeScripts[] = substr($layoutScript, strlen(JS));
}
 
$action = (isset($viewElement))
 ? $viewElement
 : $this->params['action'];
 
$viewScript = sprintf('%sviews/%s/%s.js', JS, $this->params['controller'], $action);
 if (file_exists($viewScript)) {
 $includeScripts[] = substr($viewScript, strlen(JS));
}
 
if ($this->params['pass'] && preg_match('/^\w+$/', $this->params['pass'][0])) {
 $viewScript = sprintf('%sviews/%s/%s.js', JS, $this->params['controller'], $action . '_' . $this->params['pass'][0]);
 if (file_exists($viewScript)) {
 $includeScripts[] = substr($viewScript, strlen(JS));
 }
}
 
foreach ($includeScripts as $script) {
 echo $javascript->link($script);
}
?>

La première partie de cette conférence s’est terminée avec quelques astuces génériques sur l’utilisation de Javascript et notamment un appel à ne pas vouloir faire de la programmation orientée objet en Javascript car le langage n’est pas fait pour ça !

La seconde partie concernant l’utilisation de Git (branches, merge, résolution de conflits, fast forwarding, repositories multiples …) était assez interactive et il est difficile de la retranscrire ici … voici une raison de plus pour participer à la prochaine édition du CakeFest ;)

Pensez à utiliser mon flux RSS pour vous tenir au courant des futurs articles ! Vous pouvez aussi me retrouver sur Twitter pour une actualité plus fréquente.

«»

 
3 Comments

Posted in En vrac

 

Tags: , , ,

  • http://www.gravisure.com/ Vanitom

    Bonsoir,

    Je viens de tester « siege ». C’est bien comme soft pour savoir où on en est.
    Car avant j’utilisais l’affichage réseau de FireBug et ce n’était pas très précis.
    Mais là c’est top, on peut tout paramètrer pour avoir une comparaison exact entre différente version.

    Par contre j’ai une question. Est’il possible de faire ces tests sur une page nécessitant une authentification ?

    Pour finir juste une petite remarque. As tu testé « siege » sur http://www.google.com/ . C’est impressionnant mais c’est Google.

    En tout cas merci pour ces articles intéressant.

  • http://www.pierre-martin.fr Pierre MARTIN

    Bonjour Vanitom,

    J’ai découvert siege lors de ce Cakefest, et ne l’ai utilisé que pour faire quelques tests et voir ce que celà donnait (d’ailleurs c’est vrai qu’on se rend bien compte des performances des grands sites omparés à d’autres plus modestes).

    Du coup je ne peux pas trop t’éclairer sur l’authentification … si ce n’est que leur site indique « Siege supports basic authentication, cookies, HTTP and HTTPS protocols » …

    Bonne continuation en tout cas pour tes tests de performance !
    Pierre

  • Pingback: CakePHP n’est pas mort !