CoffeeScript | |
---|---|
Clasa de limba | orientat pe obiecte , imperativ , funcțional , orientat pe aspect , prototip |
Aparut in | 13 decembrie 2009 |
Autor | Jeremy Ashkenas |
Extensie de fișier | .coffee |
Eliberare | 2.7.0 [1] (24 aprilie 2022 ) |
A fost influențat | JavaScript , Python , Ruby , Haskell , Erlang |
influențat | MoonScript , LiveScript |
Licență | Licență MIT [2] |
Site-ul web | coffeescript.org |
OS | multiplatformă |
CoffeeScript ( ['kɔ:fɪ skrɪpt] ; script de cafea ) este un limbaj de programare tradus în JavaScript . CoffeeScript adaugă zahăr sintactic în fila Ruby , Python , Haskell și Erlang pentru a îmbunătăți lizibilitatea codului și a reduce dimensiunea codului. CoffeeScript vă permite să scrieți un cod mai compact în comparație cu JavaScript [3] . Codul JavaScript primit prin traducere de la CoffeeScript trece complet testul JavaScript Lint .
Creatorul limbii este Jeremy Ashkenas .
Inițial, compilatorul a fost scris în Ruby , dar în versiunea 0.5, care a fost lansată pe 21 februarie 2010 , compilatorul a fost implementat chiar în CoffeeScript.
CoffeeScript a fost binevenit de comunitatea Ruby . Suportul nativ CoffeeScript a fost adăugat cadrului web Ruby on Rails începând cu versiunea 3.1.
Site-ul oficial al limbii are o secțiune „try coffeescript” care vă permite să rulați programe online [4] . Spre deosebire de, de exemplu, Try Ruby [5] , nu vor fi cereri către server, codul este compilat și executat direct în browser.
CoffeeScript:
varsta = 2 barbat = numele adevarat = "Matvey"JavaScript:
lasă vârsta = 2 , bărbat = adevărat , nume = "Matvey" ;CoffeeScript:
say = ( vorbire ) -> vorbire alertă spune „Bună lume!”JavaScript folosind ECMAScript 2015:
const say = vorbire => alertă ( vorbire ); spune ( "Bună lume!" );JavaScript:
var say = function ( vorbire ) { alert ( vorbire ); }; spune ( "Bună lume!" );CoffeeScript:
Clasa Constructor uman : (@nume) -> clasa Baby extinde Om spune: (msg) -> alertă „ #{ @name } spune „ #{ msg } „” sayHi : -> @spune ( „bună ziua” ) mat = nou Baby ( "Matvey" ) matt . spune Bună ()JavaScript folosind ECMAScript 2015:
clasa Uman { constructor ( nume ) { asta . nume = nume ; } } clasa Baby extinde Om { say ( msg ) { alert ( ` ${ this . name } says ' ${ msg } '` ); } sayHi () { asta . spune ( "bună ziua!" ); } } const mat = nou Bebeluș ( 'Matt' ); mat . spune Bună ();Un analog în JavaScript (și anume, un analog, nu un rezultat de compilare):
function Human ( nume ){ this . nume = nume ; } function Baby ( nume ){ Om . apel ( acest , nume ); } copilul . prototip = Obiect . creați ( Human.prototype ) ; _ copilul . prototip . say = function ( msg ){ alert ( this . name + ' says ' + msg ); }; copilul . prototip . sayHi = function (){ this . spune ( "bună ziua!" ); }; copilul . prototip . constructor = Human ; var mat = nou Baby ( „Matt” ); mat . spune Bună ();Notă: în JavaScript, când se lucrează cu „clase” (constructor + prototipuri + funcții pentru moștenire și amestecare), se folosesc adesea wrapper-urile (MooTools, AtomJS și altele). Analogie JavaScript cu învelișul clasei AtomJS:
var Human = Class ({ initialize : function ( name ) { this . name = name ; } }); var Baby = Clasă ({ Extinde : Om , spune : funcția ( msg ) { alertă ( acest . nume + ' spune ' + msg ); }, sayHi : funcția () { asta . spune ( ' salut' ); } } ) ; var mat = nou Baby ( „Matt” ); mat . spune Bună ();Un exemplu de clasă CoffeeScript cu diferite tipuri de proprietăți.
class Test say = (msg) -> alert msg # metoda privată @echo = (msg) -> console . log msg # metoda statica, scrisa in Test setHi : (msg) -> # metoda dinamica, scrisa in Test.prototype @hi = -> msg # metoda dinamica, scrisa in instanta TestProiecte asociate: