Coffee script

711 views

Published on

  • Be the first to comment

  • Be the first to like this

Coffee script

  1. 1. CEST QUOI ? Une "surcouche" javascript Langage jeune (déc 2009)Une syntaxe inspiré de Python, Ruby et Haskell
  2. 2. POURQUOI LUTILISER ?Rendre le code plus lisible (donc plus maintenable) Rapidité de développement Eviter les nombreuses erreurs possible en JS
  3. 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. 4. VARIABLES
  5. 5. DÉFINIR UNE VARIABLEba="n vral" l ue aibevrba a l;ba="n vral" l ue aibe;
  6. 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. 7. TESTER UNE VARIABLEi ba f l?i (yefba!="neie"& ba!=nl) f tpo l = udfnd & l = ul
  8. 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. 9. CONDITIONS
  10. 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. 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. 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. 13. BOUCLES
  14. 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. 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. 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. 17. FONCTIONS
  18. 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. 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. 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. 21. CLASSES
  22. 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. 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. 24. PROBLÈMES
  25. 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. 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. 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. 28. EQUIVALENT À COFFEESCRIPT TypeScript (Microsoft) Sweetjs (Mozilla) Dart (Google)   LIENS UTILEShttp://js2coffee.org/http://coffeescript.org/https://github.com/jashkenas/coffee­script
  29. 29. ANTHONY ESTEBE “DÉVELOPPEUR WEB FREELANCE twitter: @antho1404 skype: antho1404 github: antho1404site:  http://anthonyestebe.com ”

×