Libellés

mardi 9 août 2011

Commencer nodeJs avec npm, cloud9 et vows sur Archlinux

J'ai la chance de pouvoir tester nodeJs actuellement, je vais donc essayer de vous en faire profiter via mon blog.

Si vous êtes sous windows passez votre chemin. Désolé :-)

Pour les utilisateurs de Linux, je vais surtout vous expliquer comment j'ai installé mon environnement de développement sous Archlinux, mais il est également assez facile de le faire avec Ubuntu (via les ppa)


### Installer nodeJs

NodeJs est le JsDK basé sur le moteur javascript V8 de google, qui vous permettra de coder vos applications en JavaScript.

Contrairement à Java, nodeJs démarre très vite et ne prend pas beaucoup de RAM. C'est très agréable !!!

Le paquet nodejs se trouve dans community, pour l'installer il vous suffit donc de tapper :

pacman -S nodejs

### Installer npm

NPM comme node package manager, correspond au maven java, au gem ruby, ... c'est le gestionnaire de paquet.

Npm se trouve sur AUR, si vous avez yaourt vous pouvez l'installer comme ceci :

yaourt -S nodejs-npm


### Installer cloud9

Cloud9 est un IDE node réalisé en node. C'est un exemple vivant de ce que l'on peut faire avec nodeJs. Je vous conseil de l'installer rien que pour ça.

Le paquet AUR de cloud9 est moins bien conçu que les autres (mais cloud9 n'est simplement pas évident à installer)

yaourt -S cloud9

Puis éditer le PKGBUILD pour appliquer ce patch :

git clone $gitroot $gitname
cd $gitname
- git checkout $gittag
+ #git checkout $gittag
git submodule update --init --recursive


For x86 users, the build fails. You have to remove the 64 bit files :

package() {
+ find -name *linux64* | while read file; do
+ rm $file
+ done
install -d $pkgdir/opt/cloud9


### Installer vows

Vows est la librairie de test nodeJs. Il permet d'écrire des specifications de son code au format bdd. Pour plus d'info : http://vowsjs.org/

Pour l'installer sur votre système, il faut maintenant se reposer sur npm. C'est npm qui va se charger d'installer vows dans /usr

sudo npm install -g vows

sudo pour lui donner les accès root
-g pour qu'il l'installe dans /usr/bin/vows


### Démarrer cloud9

Cloud9 est un serveur web, vous accéderez à l'IDE via votre navigateur web, cool n'est-ce pas :) Et en plus c'est plus léger qu'un IDE lourd !

Bien évidemment Cloud9 n'est actuellement pas l'équivalent de Netbeans mais il propose déjà des corrections de syntaxe, la coloration syntaxique, la mise en forme automatique du code, une console et un debugger (qui ne marche actuellement pas chez moi).

Le meilleurs IDE Js est à mon avis IntelliJ mais il est payant. Sinon NetBeans fonctionne plutôt bien.

Pour lancer cloud9, il faut se placer dans le répertoire de son projet js et lancer la commande :

$ cd myProject
$ cloud9 &
...
Point your browser to http://127.0.0.1:3000


### Premier projet js

Créons la structure du projet :

$ touch index.js #main file
$ mkdir lib/ #sources
$ mkdir test/ #tests


Créons notre premier module :

$ cat lib/Playground.js

//Je déclare un classe, qui sera instanciée en tant qu'objet plus tard
function myClass(){
this.name= "Romain";
this.age=25;
this.getAge= function(){ return this.age; };
this.setAge= function(age){ this.age=age; };
}

//Puis je l'exporte pour pouvoir l'utiliser dans mes tests et dans mon projet
exports.myClass = myClass;



Et le test associé :

var vows = require('vows'),
assert = require('assert'),
playground = require('../lib/Playground');

var myClass = playground.myClass;

vows.describe('play with prototype').addBatch({
'given an object': { //je commence ma description au format BDD
topic: new myClass(), //topic sera l'objet de mon test

'when age is changed': {
topic: function (obj) { //obj === topic
obj.setAge(20);
return obj; //et je redéfinie topic pour qu'il reste === obj
},

'then I get the new age': function (obj) {
assert.equal(21, obj.getAge());
}
}
}
}).exportTo(module); //obligatoire pour utiliser vows comme cli.


Et maintenant si on run vows (soit via cloud9, soit via le cli) :

$ vows test/*.js

given an object when age is changed
✗ then I get the new age
» expected 20,
got 21 (==) // TestPlayGround.js:18

✗ Broken » 1 broken (0.015s)

Sympa le format de sortie :)

Aucun commentaire:

Enregistrer un commentaire