CoffeeScript | |
---|---|
Språkklass | objektorienterad , imperativ , funktionell , aspektorienterad , prototypisk |
Framträdde i | 13 december 2009 |
Författare | Jeremy Ashkenas |
Filtillägg _ | .coffee |
Släpp | 2.7.0 [1] (24 april 2022 ) |
Blivit påverkad | JavaScript , Python , Ruby , Haskell , Erlang |
påverkas | MoonScript , LiveScript |
Licens | MIT-licens [2] |
Hemsida | coffeescript.org |
OS | plattformsoberoende |
CoffeeScript ( ['kɔ:fɪ skrɪpt] ; coffee script ) är ett programmeringsspråk översatt till JavaScript . CoffeeScript lägger till syntaktisk socker i samma stil som Ruby , Python , Haskell och Erlang för att förbättra kodläsbarheten och minska kodstorleken. CoffeeScript låter dig skriva mer kompakt kod jämfört med JavaScript [3] . JavaScript -koden som tas emot genom översättning från CoffeeScript klarar JavaScript Lint -testet helt .
Skaparen av språket är Jeremy Ashkenas .
Till en början skrevs kompilatorn i Ruby , men i version 0.5, som släpptes den 21 februari 2010 , implementerades kompilatorn i själva CoffeeScript.
CoffeeScript har välkomnats av Ruby -gemenskapen. Native CoffeeScript-stöd har lagts till i Ruby on Rails webbramverk sedan version 3.1.
Språkets officiella webbplats har en "prova coffeescript"-sektion som låter dig köra program på den online [4] . Till skillnad från till exempel Try Ruby [5] kommer det inte att finnas några förfrågningar till servern, koden kompileras och exekveras direkt i webbläsaren.
CoffeeScript:
ålder = 2 man = sant namn = "Matvey"JavaScript:
låt ålder = 2 , man = sant , namn = "Matvey" ;CoffeeScript:
säga = ( tal ) -> uppmärksammat tal säg "Hej världen!"JavaScript med ECMAScript 2015:
const say = tal => varning ( tal ); säga ( 'Hej världen!' );JavaScript:
var say = function ( tal ) { alert ( tal ); }; säga ( "Hej världen!" );CoffeeScript:
klass Mänsklig konstruktör: (@namn) -> klass Baby förlänger Mänsklig säg : (msg) -> alert " #{ @name } säger ' #{ msg } '" säg Hej : -> @say ( 'hej' ) matt = new Baby ( "Matvey" ) matt . säg hej ()JavaScript med ECMAScript 2015:
klass Människan { konstruktor ( namn ) { detta . namn = namn ; } } class Baby extends Human { say ( msg ) { alert ( ` $ { this . name } säger ' $ { msg } '` ); } säg Hej () { detta . säga ( 'hej!' ); } } const matt = new Baby ( 'Matt' ); matt . säg hej ();En analog i JavaScript (nämligen en analog, inte ett kompileringsresultat):
function Human ( namn ){ detta . namn = namn ; } function Baby ( namn ){ Människan . ring ( detta , namn ); } bebis . prototyp = Objekt . skapa ( Human.prototype ) ; _ bebis . prototyp . say = function ( msg ) { alert ( detta . namn + ' säger ' + msg ); }; bebis . prototyp . sayHi = function (){ this . säga ( 'hej!' ); }; bebis . prototyp . konstruktör = Människan ; var matt = new Baby ( "Matt" ); matt . säg hej ();Obs: i JavaScript, när man arbetar med "klasser" (konstruktör + prototyper + funktioner för nedärvning och blandning), används ofta omslag (MooTools, AtomJS och andra). JavaScript-analogi med AtomJS-klassomslag:
var Human = Class ({ initialize : function ( name ) { this . name = name ; } }); var Baby = Class ({ Extends : Human , say : function ( msg ) { alert ( this . name + ' says ' + msg ); }, sayHi : function () { this . say ( 'hej' ); } } ) ; var matt = new Baby ( "Matt" ); matt . säg hej ();Ett exempel på en CoffeeScript-klass med olika typer av egenskaper.
klass Testa säg = (msg) -> alert msg # privat metod @echo = (msg) -> console . log msg # statisk metod, skriven till Test setHi : (msg) -> # dynamisk metod, skriven till Test.prototype @hi = -> msg # dynamisk metod, skriven till testinstansRelaterade Projekt: