Beruflich Dokumente
Kultur Dokumente
PourquoiNode.jssembletilaussiapprcidesdveloppeursweb?
PourquoiavoirutilisunlangagecommeJavaScript?Jecroyaisquec'taitjustepourfairedeseffets
danssapageweb?
D'ovientcetterapiditsupposedeNode.js?Aquoiapeutmeservir?
Estcequecetrucestmature?Quil'utilise(partdesgeeksbarbus)?Devraisjel'utilisermoiaussi?
Allez,pasdechichis,onvarpondretoutaetmmeplusdanscepremierchapitre.
Danslesannes90,onparlaitdeDHTML(DynamicHTML).Onutilisaitenfaitlestoutespremires
versionsdeJavaScriptpourfairedespetitseffetsdanssespagesweb:afficheruneimagelorsd'unclic
surunboutonparexemple.C'taitl'poquedeNetscapeetd'InternetExplorer5.5(monDieuame
rajeunitpas!).
2.
Danslesannes2000,onacommencutiliserlelangagepourcrerdesinterfacesctclient.C'estl
quedesbibliothquescommejQueryouMootoolssontapparues.Aujourd'hui,cetusagedeJavaScript
esttrsrpanduetmature.Onaprisl'habitudedemanipulerleDOM(DocumentObjectModel)pour
affectersesbalisesHTMLenJavaScriptetleurfairesubirtoutessortesdetraitements.
3.
Puis,auxalentoursde2010,JavaScriptestentrdansunenouvellere.Googleacommencrendrele
langagebeaucoupplusrapideavecl'apparitiondunavigateurGoogleChrome.Aveccenavigateurest
nlemoteurd'excutionV8quiaconsidrablementpermisd'acclrerl'excutiondecodeJavaScript
(j'yreviendrai).DesoutilscommeNode.jssontensuiteapparus.Lesbibliothquesdontlenomfinit
par.jssesontmultiplies:Backbone.js,Ember.js,Meteor.js.JavaScriptal'airnouveaucool...et
sembleenmmetempspluscompliququ'iln'yparaissaitaupremierabord.
Soyons clairs : jQuery n'est pas mort et a ne veut pas dire qu'il faut
cesser de l'utiliser (par contre DHTML et Netscape sont bel et bien morts
eux
). Les nouveaux outils JavaScript comme Node.js font des choses
trs diffrentes de jQuery et consorts. Les deux peuvent tout fait se
complter.
Bon,maisaapportequoiconcrtementNode.js?
PourquoiNode.jssembletilsidiffrent?Parcequ'ilutiliseJavaScript?
Oui,etparcequeJavaScriptestunlangagebassurlesvnements,doncNode.jsestluimmebassurles
vnements.Ducoup,c'esttoutelafaond'criredesapplicationswebquichange!Etc'estdelqueNode.js
tiretoutesapuissanceetsarapidit.
AvecNode.js,vouspouvezcrerdesapplicationsrapidescomme:
UnserveurdeChat
Unsystmed'uploadtrsrapide
...etdefaongnralen'importequelleapplicationquidoitrpondredenombreusesrequtes
rapidementetefficacement,entempsrel
Node.jsn'estpasunframework.Node.jsestunenvironnementtrsbasniveau.Ilserapprochedoncenquelque
sorteplusduCquedePHP,RubyonRailsouDjango.Voilpourquoiiln'estpasvraimentconseillaux
dbutants.
Notezqu'ilexistedesframeworkswebcommeExpressquisontbasssurNode.js.Ilsnouspermettentd'viter
lestchesrptitivesquinoussontimposesparlanaturebasniveaudeNode.js,maisilsrestentquandmme
pluscomplexesutiliserquedeslangagescommePHP.
JavaScriptn'estpasvraimentunlangageorientobjet,ilestdonctrsloindeJava,RubyouPython.Ecrireune
applicationavecNode.jsdemandeunegymnastiqued'espritcompltementdiffrente!C'estunpeudroutantau
dbutpourtoutvousavouer,maisquandoncommencematrisercetoutil,onsesentunpeucommesion
venaitd'avoirdenouveauxsuperpouvoirsqu'onnesouponnaitpas.
VoilpourquoitantdegeeksbarbussontexcitsproposdeNode.js!
Le moteur V8
Node.jsutiliselemoteurd'excutionultrarapideV8deGoogleChrome.CemoteurV8avaitfaitbeaucoupparler
deluilasortiedeGoogleChrome,carc'estunoutilopensourcecrparGooglequianalyseetexcutedu
codeJavaScripttrsrapidement.
).
LeprogrammevatlchargerunfichiersurInternet
2.
Leprogrammeaffichelefichierl'utilisateur
3.
Puisensuiteleprogrammepeutfaired'autreschoses(effectuerd'autresactions)
Maintenant,onpeutcrirelemmecodesurunmodlenonbloquant:
TlchargerunfichierDsquec'esttermin,afficherlefichier
Faireautrechose
Leprogrammen'excuteplusleslignesdansl'ordreoellessontcrites.Ilfaitceci:
1.
Leprogrammelanceletlchargementd'unfichiersurInternet
2.
Leprogrammefaitd'autreschoses(leprogrammesuitsoncours)
3.
Dsqueletlchargementesttermin,leprogrammeeffectuelesactionsqu'onluiavaitdemandes:il
affichelefichier
Schmatiquement,l'excutionduprogrammepeutdoncsereprsentercommea:
Mais...Commentamarche?Jevoisunefonctionenparamtredelafonctionrequest!C'estunefonctiondans
unefonction,ausecourscesbarbussontfous!
Holapasdepanique.
Cequevousvoyezlestunefonctiondecallback.EnJavaScriptonpeuttoutfait
envoyerunefonctionenparamtred'uneautrefonction.Celasignifieici:"Excutecettefonctionquandle
tlchargementesttermin".
Ici,lafonctionn'apasdenom.Onditquec'estunefonctionanonyme.Maisonpourraitdcomposercecode
commececi,lersultatseraitidentique:
//Rsultatidentiqueaucodeprcdent
varcallback=function(error,response,body){
console.log("Fichiertlcharg!");
});
request('http://www.site.com/fichier.zip',callback);
console.log("Jefaisd'autreschosesenattendant...");
Lafonctiondecallbackestenregistredansunevariable.Commetouteslesfonctions,ellen'estpasexcute
tantqu'onnel'apasappele.
Ensuite,onenvoiecettefonctiondecallbackenparamtredelafonctionrequest()pourdire:"Dsquela
requtedetlchargementesttermine,appellecettefonctiondecallback".
Enpratique,lesdveloppeursJavaScriptmettentrgulirementdesfonctionsanonymesdirectementl'intrieur
d'autresfonctionsenparamtre,commedansmonpremiercode.C'estunpeutrangeaudbutmaisons'yfait
vite!
Jenevoispaspourquoiarendraitleprogrammeplusrapide.J'ail'impressionquealerendsurtoutplus
compliqu!
JevousavaisditqueNode.jsn'taitpassimple,maislejeuenvautlachandelle!Vousallezcomprendre
pourquoi.Imaginezqu'ondemandeletlchargementde2fichiersNode.js:
varcallback=function(error,response,body){
console.log("Fichiertlcharg!");
});
request('http://www.site.com/fichier.zip',callback);
request('http://www.site.com/autrefichier.zip',callback);
Silemodleavaittbloquant,leprogrammeaurait:
1.
Lancletlchargementdufichier1,etattenduqu'ilsetermine...
2.
...puislancletlchargementdufichier2,etattenduqu'ilsetermine.
Or,avecNode.js,lesdeuxtlchargementssontlancsenmmetemps!Leprogrammen'attendpaslafindu
premiertlchargementpourpasserl'instructionsuivante.
Ducoup,letlchargementdes2fichiersautotalvabeaucoupplusvitepuisqueleprogrammefaitles2la
fois:
Lesappelsauxbasesdedonnes
Lesappelsdesservicesweb(ex:l'APIdeTwitter)
Node.jsnousvitedeperdredutempsennouspermettantdefaired'autreschosesenattendantquelesactions
longuessoienttermines!
InstallerNode.js
Voustesconvaincus?VousvoulezvousmettreNode.js?
Trsbien!N'attendonspasalors,etinstallonslabte!
Danscechapitre,nouscouvrironsl'installationpourchaqueOS:
Windows
MacOSX
Linux
Vousdevezjustelirelasectionquicorrespondvotresystmed'exploitation.Iln'yaurariendebiendifficileici
rassurezvous.
Ensuite,noustesteronsunetoutepremireapplicationtrssimplepourvrifierqueNode.jsestbieninstallet
fonctionnecorrectement.Cettederniresectiondoitvidemmenttreluepartoutlemondesivousvouleztre
prtspourleprochainchapitre.
InstallationdeNode.jssousWindows
PourinstallerNode.jssousWindows,ilsuffitdetlchargerl'installeurquiestpropossurlesitedeNode.js.
CliquezsimplementsurlelienInstall.
Vouspouvezaussivousrendresurlapagedestlchargementspouravoirplusd'options:
LapagedetlchargementdeNode.js
Vouspouveztlchargersoitle.msi,soitle.exe(lersultatseralemme).Prenezlaversion64bitssivousavez
unWindows64bits(casdelaplupartdesPCrcents).
Dansledoute,prenezlaversion32bits.
Lancezensuitel'installeur:
InstallationdeNode.js
Aprsquelquescransclassiquesonvousdemanderacequevousvoulezinstaller.Jevousinvitetoutlaisser
coch:
Choixdeslmentsinstaller
L'installationselanceensuite.Elleneprendquequelquessecondes!
L'installationesttermine!
Alafin,onvousditqueNode.jsestinstall...oui,maiso?Commentamarche?
Enfait,vousdevriezvoiravoir2programmesinstalls:
Node.js:c'estl'inteprteurdecommandesdeNode.js(dontnousparleronslafindecechapitre).Nous
l'utiliseronsassezpeuenpratique.IlserttesterdescommandesJavaScript.
Node.jscommandprompt:c'estuneconsoledeWindowsconfigurepourreconnatreNode.js.C'est
parlquevouspasserezpourlancervosprogrammesNode.js,c'estdonccequenousutiliseronsleplus
souvent.
Node.jsL'interprteurNode.jssousWindows(serapeuutilis)
Node.jscommandprompt
LaconsoleNode.js(serafrquemmentutilise)
InstallationdeNode.jssousMacOSX
SivoustessousMacOSX,vouspouvezcliquersurlelien"Install"surlapaged'accueildeNode.js.
Sivousvoulezplusd'options,affichezlapagedestlchargements:
LapagedetlchargementdeNode.js
Lemieuxestdeprendrel'installeur(fichier.pkg).Ilouvreunassistantd'installation,danslequelilsuffitde
cliquerfrntiquementsur"Suivant","Suivant","Suivant","Terminer".
L'installationdeNode.jssousMacOSX
Unefoisl'installationtermine,vouspouvezvrifierqueNode.jsfonctionnecorrectemententapantla
commandenodedanslaconsole.OuvrezunefentredeTerminal(leTerminaltantinstallpardfautsousMac
OSX),enallantdansleFinder,section"Applications","Terminal".Jevousconseilledemettreunraccourci
dansledock!
Tapezquelquescommandescommenodev(pouravoirlenumrodeversion)ounodetoutcourtpourlancer
l'interprteurinteractif.
ExcutiondeNode.jsdansleTerminal
Lorsquel'interprteurestlanc,vouspouveztaperdescommandesJavaScriptetobtenirunerponse.Ici,par
exemple,j'aidemandcombienfont1et1.
Pourquitterl'interprteur,faitesCtrl+D(c'estlacommandeclassiquequidemandequitteruninterprteur
sousLinuxetMac).
Rassurezvous,nousn'crironspasnosprogrammesNode.jsldedans!Canousserticisurtoutpourfairedes
tests.
Enpratique,nousallonscriredesfichiers.jsetdemanderNodedelesexcuter.Nousverronsaunpeuplus
loin.
InstallationdeNode.jssousLinux
SousLinux,commed'habitude,vousavezdeuxchoix:
Lamthodewarrior(
Lamthodedouce,quiconsisteutiliserlegestionnairedepaquetsdesadistribution.
),quiconsistetlchargerlessourcesetlescompiler.
L,c'estunequestiondegot.Jen'airiencontrelamthodewarrior(moiaussijesais
tapermake,makeinstall
),maiscommej'aiengnralmoinsdeproblmesdeconfigurationavecla
mthodedouce,jeprfrepasserparungestionnairedepaquets.
SousUbuntuparexemple,vousdevrezrentrerlescommandessuivantes:
sudoaptgetinstallpythonsoftwarepropertiespythong++makesudoadd
aptrepositoryppa:chrislea/node.jssudoaptgetupdatesudoapt
getinstallnodejs
Notezquepouravoirlacommandeaddaptrepositoryilvousfaudrapeuttretlchargersoftwareproperties
common:sudoaptgetinstallsoftwarepropertiescommon
Etvoilletravail!PourvrifierqueNodeestbieninstall,tapezquelquescommandesdanslaconsolecomme:
nodevnode
LapremireaffichelenumrodeversiondeNode.jsquevousavezinstall.
Lasecondelancel'interprteurinteractifdeNode.js.VouspouvezytaperducodeJavaScript(essayez
simplementdetaper"1+1"pourvoir).Poursortirdel'interprteur,faitesCtrl+D.
Rassurezvous,nousn'crironspasnosprogrammesdansl'interprteurinteractif.Nouscreronspluttdes
fichiers.jsetdemanderonsNodedelesexcuter.
DepuislesversionslesplusrcentesdeNode.js,ilfautsavoirqueNPMestinstallenmmetemps
automatiquement.NPMestlegestionnairedepaquetsdeNode.js(c'estunpeul'quivalentdeapt,maispourles
extensionsNode.js).NPMestvraimentunoutilformidablequinouspermetd'tendrelespossibilitsdeNode.js
l'infini,nousledcouvrironsunpeuplustard.
TesterNode.jsavecunprogrammeminimal
IlesttempsdevrifierqueNode.jsfonctionnebien!Nousallonscrireuntouttoutpetitprogrammepour
commencer,quisecontented'afficherunmessagedanslaconsole.Ceseral'occasiondevoircomment
fonctionnel'excutiondefichiers.jsavecNode.
Pourcommencer,ouvrezvotrediteurdetextefavori(vim,Emacs,SublimeText,Notepad++...)etrentrezle
codeJavaScriptsuivant:
console.log('BienvenuedansNode.js!');
Enregistrezvotrefichiersousl'extension.js.Parexempletest.js.
Ensuite,ouvrezuneconsoledansledossierosetrouvevotrefichiertest.jsetentrezla
commandenodetest.js.Vousdevriezavoirlersultatsuivantdanslaconsole:
$nodetest.jsBienvenuedansNode.js!
Bravo,vousavezcrvotretoutpremierprogrammeNode.js!
Bon,c'taitvraimentcequ'onpouvaitfairedeplussimple.Onasimplementdemandcrireunmessagedans
laconsole.
VousavezvuquepourlancerunprogrammeNode.jsilsuffisaitd'indiquerlenomdufichier.jsexcuter.Vous
saveztoutcequ'ilfautpourlemoment!
Dansleprochainchapitre,onattaqueleschosessrieuses:onvacrernotrepremirevraieapplicationNode.js.
Attention,avasecorser!