Your SlideShare is downloading. ×
Coffee script
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Coffee script

396
views

Published on


0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
396
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
5
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. CEST QUOI ? Une "surcouche" javascript Langage jeune (déc 2009)Une syntaxe inspiré de Python, Ruby et Haskell
  • 2. POURQUOI LUTILISER ?Rendre le code plus lisible (donc plus maintenable) Rapidité de développement Eviter les nombreuses erreurs possible en JS
  • 3. EN PRATIQUE1.  Ecrire son code2.  Compiler en Javascript cfe -cmiefl.ofe ofe -opl iecfe cfe -wth-cmiefl.ofe ofe -ac -opl iecfe3.  Inclure son fichier js
  • 4. VARIABLES
  • 5. DÉFINIR UNE VARIABLEba="n vral" l ue aibevrba a l;ba="n vral" l ue aibe;
  • 6. mti =[ arx 1 0 1 , , 0 1 0 , , 1 0 1 , ,]mp= a a 1 : b 2 : c 3 :vrmp mti; a a, arxmti =[,0 1 0 1 0 1 0 1; arx 1 , , , , , , , ]mp={ a a 1 : , b 2 : , c 3 :};
  • 7. TESTER UNE VARIABLEi ba f l?i (yefba!="neie"& ba!=nl) f tpo l = udfnd & l = ul
  • 8. AFFECTER PLUSIEURS VARIABLES[a1 vr.. vr]=[,2 3 4 5 vr, a2., a3 1 , , , ]vrvr,vr,vr,_,_e, a a1 a2 a3 i rf _sie=[.lc; _lc ]sie_e =[,2 3 4 5,vr =_e[] vr =3< _e.egh?_siecl(rf 1 _ =_e.egh-1 :(i rf 1 , , , ] a1 rf0, a2 = rflnt _lc.al_e, , i rflnt ) _ =1 [) vr =_e[i+; , ], a3 rf_+] Outputvr = 1 a1 >vr = [,3 4 a2 > 2 , ]vr = 5 a3 >
  • 9. CONDITIONS
  • 10. MOT CLÉ if / unless  is / isnt i vr i vr f a1 s a2 cnoelgvr osl.o a1cnoelgvr uls vr in vr osl.o a1 nes a1 st a2i (a1==vr){ f vr = a2 cnoelgvr) osl.o(a1;}
  • 11. CONDITIONS MULTIPLES Les "classiques" && et || sont remplacés par and et ori aadbo c f n ri ( & b| c f a & | )i 20<a<30 f 0 0i (0 <a& a<30 f 20 & 0)
  • 12. CONDITIONS TERNAIRESi vr i vr te cnoelg""es cnoelg"= f a1 s a2 hn osl.o = le osl.o !"vr =i vr i vr te 3es 4 a3 f a1 s a2 hn levrvr; a a3i (a1==vr){ f vr = a2 cnoelg""; osl.o(=)}es { le cnoelg"=) osl.o(!";}vr =vr ==vr ?3:4 a3 a1 = a2 ;
  • 13. BOUCLES
  • 14. COLLECTION Le mot clé in pour itérer sur les éléments dune collectionfroji cleto o b n olcin cnoelgoj osl.o bcnoelgojfroji cleto osl.o b o b n olcinvroj _,_e; a b, i lnfr(i=0 _e =cleto.egh _ <_e;_+){ o _ , ln olcinlnt; i ln i+ oj=cleto[i; b olcin_] cnoelgoj; osl.o(b)}
  • 15. FILTRES Le mot clé when pour mettre une condition à notre bouclefroji cleto we ojin aohrb o b n olcin hn b st nteOj cnoelg"bet #oj" osl.o ojc: {b}vroj _,_e; a b, i lnfr(i=0 _e =cleto.egh _ <_e;_+){ o _ , ln olcinlnt; i ln i+ oj=cleto[i; b olcin_] i (b !=aohrb){ f oj = nteOj cnoelg"bet "+oj; osl.o(ojc: b) }}
  • 16. WHILEi=0wiei<1 hl 0 i+ +i=0utli> 1 ni = 0 i+ +vri a ;i=0;wie( <1){ hl i 0 i+ +;}i=0;wie(( > 1) { hl !i = 0) i+ +;}
  • 17. FONCTIONS
  • 18. FONCTIONS ANONYMES( - ) > cnoelg"ocinaoye osl.o fnto nnm"(ucin){ fnto( rtr cnoelg"ocinaoye) eun osl.o(fnto nnm";}; )$aa .jx ul "" r: / sces (aa txSau,jXR - ucs: dt, ettts qH) > cnoelgdt osl.o aa
  • 19. FONCTIONSsm=(olcin[)- u cleto=] > rs=0 e rs+ ee free i cleto e = lm o lm n olcin rs evrsm a u;sm=fnto(olcin { u ucincleto) vree,rs _,_e; a lm e, i ln i (olcin= nl){ f cleto = ul cleto =[; olcin ] } rs=0 e ; fr(i=0 _e =cleto.egh _ <_e;_+){ o _ , ln olcinlnt; i ln i+ ee =cleto[i; lm olcin_] rs+ ee; e = lm } rtr rs eun e;};
  • 20. PORTÉ DES VARIABLESa=- > vr =1 a1 2 b=- > vr =2 a2 3 vr =1 a1 3 rtr eunvra a ;a=fnto( { ucin) vrb vr; a , a1 vr =1; a1 2 rtr b=fnto( { eun ucin) vrvr; a a2 vr =2; a2 3 vr =1; a1 3 };};
  • 21. CLASSES
  • 22. DÉFINIR UNE CLASSEcasBl ls al cntutr (x0 @=)- osrco: @=, y0 > mv:(x @)- oe @, y >vrBl; a alBl =(ucin){ al fnto( fnto Bl(,y { ucin alx ) ti. =x! nl ?x:0 hsx = ul ; ti. =y! nl ?y:0 hsy = ul ; } Bl.rttp.oe=fnto(,y { alpooyemv ucinx ) ti. =x hsx ; ti. =y hsy ; }; rtr Bl; eun al}(; ))
  • 23. HÉRITAGEcasOjc ls bet cntutr (x0 @=)- osrco: @=, y0 > mv:(x @)- oe @, y >casBl etnsOjc ls al xed bet cntutr (x @,@ais - osrco: @, y rdu) > spr@,@ ue x y epoe - xld: > #d suf o tfbl =nwBl( al e al)bl.oe1,1 almv 0 0bl.xld( alepoe)
  • 24. PROBLÈMES
  • 25. WRAPTous les fichiers compilés sont englobés dans une fonction anonyme (par fichier) SOLUTION Compiler avec loption -n-rp -owa Rendre accessible les variables dans window wno.al=casBl .. idwBl ls al . wno.al=Bl idwBl al Joindre les fichiers -ji -on
  • 26. CONTEXT Quand une fonction est appelée par un context différent$"bl".lc - (#al)cik > @xld( #eru cr@rmlc pr"hs (eDMciu) epoe) rer a epaé a ti" l O lqé $ti)rmv( #o (hs.eoe) k$"bl".lc = (#al)cik > @xld( epoe) #ok $ti)rmv( #eru crti etlojc Bl (hs.eoe) rer a hs s bet al SOLUTION A la mano :(_hs=@ ti$"bl".lc - (#al)cik > _hsepoe) ti.xld( $ti)rmv( (hs.eoe)
  • 27. PAS DE MACROS :( # DBG=ys > EU e # SA =(a1 vr)- > WP vr, a2 > #> tp=vr m a1 #> vr =vr a1 a2 #> vr =tp a2 m a=2 b=3 SA a b WP , # i DBGi ys > f EU s e cnoelga b osl.o , # es > le $"upt)hm ":#a,b #b" (otu".tl a {} : {}#Ae DBGi ys vc EU s e #Ae DBGi n vc EU s oa=2 ; a=2 ;b=3 ; b=3 ;tp=a m ; tp=a m ;a=b ; a=b ;b=tpm; b=tpm;cnoelga b; osl.o(, ) $"upt)hm(a "+a+" b"+b; (otu".tl": , : )
  • 28. EQUIVALENT À COFFEESCRIPT TypeScript (Microsoft) Sweetjs (Mozilla) Dart (Google)   LIENS UTILEShttp://js2coffee.org/http://coffeescript.org/https://github.com/jashkenas/coffee­script
  • 29. ANTHONY ESTEBE “DÉVELOPPEUR WEB FREELANCE twitter: @antho1404 skype: antho1404 github: antho1404site:  http://anthonyestebe.com ”