CoffeeScript | |
---|---|
Jazyková třída | objektově orientovaný , imperativní , funkční , aspektově orientovaný , prototypový |
Objevil se v | 13. prosince 2009 |
Autor | Jeremy Ashkenas |
Přípona souboru | .coffee |
Uvolnění | 2.7.0 [1] (24. dubna 2022 ) |
Byl ovlivněn | JavaScript , Python , Ruby , Haskell , Erlang |
ovlivnil | MoonScript , LiveScript |
Licence | licence MIT [2] |
webová stránka | coffeescript.org |
OS | multiplatformní |
CoffeeScript ( ['kɔ:fɪ skrɪpt] ; coffee script ) je programovací jazyk přeložený do JavaScriptu . CoffeeScript přidává syntaktický cukr v duchu Ruby , Python , Haskell a Erlang , aby se zlepšila čitelnost kódu a snížila velikost kódu. CoffeeScript umožňuje psát kompaktnější kód ve srovnání s JavaScriptem [3] . Kód JavaScript přijatý překladem z CoffeeScript plně prošel testem JavaScript Lint .
Tvůrcem jazyka je Jeremy Ashkenas .
Zpočátku byl kompilátor napsán v Ruby , ale ve verzi 0.5, která byla vydána 21. února 2010 , byl kompilátor implementován v samotném CoffeeScriptu.
CoffeeScript byl vítán komunitou Ruby . Od verze 3.1 byla do webového rámce Ruby on Rails přidána nativní podpora CoffeeScript .
Oficiální webové stránky jazyka mají sekci „try coffeescript“, která vám umožňuje spouštět programy na něm online [4] . Na rozdíl například od Try Ruby [5] zde nebudou žádné požadavky na server, kód se kompiluje a spouští přímo v prohlížeči.
CoffeeScript:
věk = 2 muž = pravé jméno = "Matvey"JavaScript:
let věk = 2 , muž = pravda , jméno = "Matvey" ;CoffeeScript:
řekni = ( řeč ) -> varovná řeč řekni "Ahoj světe!"JavaScript pomocí ECMAScript 2015:
const say = řeč => upozornění ( řeč ); řekni ( 'Ahoj světe!' );JavaScript:
var say = funkce ( řeč ) { upozornění ( řeč ); }; řekněte ( „Ahoj světe!“ );CoffeeScript:
class Lidský konstruktor : (@jméno) -> class Baby extends Human say : (msg) -> alert " #{ @name } říká ' #{ msg } '" sayHi : -> @say ( 'ahoj' ) matt = nové miminko ( "Matvey" ) matt . řekni ahoj ()JavaScript pomocí ECMAScript 2015:
class Člověk { konstruktor ( jméno ) { toto . jmeno = jmeno ; } } class Baby extends Human { say ( msg ) { alert ( ` ${ this . name } say ' ${ msg } '` ); } sayHi () { this . řekni ( 'ahoj!' ); } } const matt = new Baby ( 'Matt' ); matný . řekni Ahoj ();Analog v JavaScriptu (jmenovitě analog, nikoli výsledek kompilace):
function Člověk ( jméno ){ this . jmeno = jmeno ; } funkce Dítě ( jméno ){ Člověk . volat ( toto , jméno ); } dítě . prototyp = Objekt . vytvořit ( Human.prototype ) ; _ dítě . prototyp . say = function ( msg ){ alert ( this . name + ' say ' + msg ); }; dítě . prototyp . sayHi = funkce (){ this . řekni ( 'ahoj!' ); }; dítě . prototyp . konstruktor = Člověk ; var matt = nové dítě ( "Matt" ); matný . řekni Ahoj ();Poznámka: v JavaScriptu se při práci s „třídami“ (konstruktor + prototypy + funkce pro dědění a míchání) často používají wrappery (MooTools, AtomJS a další). Analogie JavaScriptu s obalem třídy AtomJS:
var Člověk = Třída ({ inicializovat : funkce ( jméno ) { toto . jméno = jméno ; } }); var Baby = Class ({ Extends : Human , say : function ( msg ) { alert ( this . name + ' say ' + msg ); }, sayHi : function () { this . say ( 'hello' ); } } ) ; var matt = nové dítě ( "Matt" ); matný . řekni Ahoj ();Příklad třídy CoffeeScript s různými druhy vlastností.
class Test say = (msg) -> alert msg # private method @echo = (msg) -> console . log msg # statická metoda, zapsána do Test setHi : (msg) -> # dynamická metoda, zapsána do Test.prototype @hi = -> msg # dynamická metoda, zapsána do instance TestSouvisející projekty: