CoffeeScript | |
---|---|
Sprog klasse | objektorienteret , imperativ , funktionel , aspektorienteret , prototypisk |
Dukkede op i | 13. december 2009 |
Forfatter | Jeremy Ashkenas |
Filtypenavn _ | .coffee |
Frigøre | 2.7.0 [1] (24. april 2022 ) |
Blev påvirket | JavaScript , Python , Ruby , Haskell , Erlang |
påvirket | MoonScript , LiveScript |
Licens | MIT-licens [2] |
Internet side | coffeescript.org |
OS | på tværs af platforme |
CoffeeScript ( ['kɔ:fɪ skrɪpt] ; coffee script ) er et programmeringssprog oversat til JavaScript . CoffeeScript tilføjer syntaktisk sukker i stil med Ruby , Python , Haskell og Erlang for at forbedre kodelæsbarheden og reducere kodestørrelsen. CoffeeScript giver dig mulighed for at skrive mere kompakt kode sammenlignet med JavaScript [3] . JavaScript -koden modtaget ved oversættelse fra CoffeeScript består fuldt ud JavaScript Lint -testen .
Sprogets skaber er Jeremy Ashkenas .
Oprindeligt blev compileren skrevet i Ruby , men i version 0.5, som blev udgivet den 21. februar 2010 , blev compileren implementeret i selve CoffeeScript.
CoffeeScript er blevet hilst velkommen af Ruby -fællesskabet. Native CoffeeScript-understøttelse er blevet tilføjet til Ruby on Rails - webframeworket siden version 3.1.
Sprogets officielle hjemmeside har en "prøv coffeescript" sektion, der giver dig mulighed for at køre programmer på det online [4] . I modsætning til for eksempel Try Ruby [5] vil der ikke være nogen anmodninger til serveren, koden kompileres og udføres direkte i browseren.
CoffeeScript:
alder = 2 mand = sandt navn = "Matvey"JavaScript:
lad alder = 2 , mand = sand , navn = "Matvey" ;CoffeeScript:
sige = ( tale ) -> alarmerende tale sig "Hej verden!"JavaScript ved hjælp af ECMAScript 2015:
const say = tale => alarm ( tale ); sige ( 'Hej verden!' );JavaScript:
var sige = funktion ( tale ) { advarsel ( tale ); }; sige ( "Hej verden!" );CoffeeScript:
klasse Menneskelig konstruktør: (@navn) -> klasse Baby forlænger Menneske sig : (msg) -> advarsel " #{ @name } siger ' #{ msg } '" sigHej : -> @say ( 'hej' ) mat = ny Baby ( "Matvey" ) mat . sig hej ()JavaScript ved hjælp af ECMAScript 2015:
klasse Menneske { konstruktør ( navn ) { dette . navn = navn ; } } class Baby udvider Human { say ( msg ) { alert ( ` $ { this . name } siger ' $ { msg } '` ); } sigHej () { dette . sige ( 'hej!' ); } } const mat = new Baby ( 'Matt' ); mat . sig hej ();En analog i JavaScript (nemlig en analog, ikke et kompileringsresultat):
funktion Menneske ( navn ){ dette . navn = navn ; } funktion Baby ( navn ){ Menneske . kalde ( dette , navn ); } baby . prototype = Objekt . oprette ( Human.prototype ) ; _ baby . prototype . say = function ( msg ){ advarsel ( dette .navn + ' siger ' + besked ) ; }; baby . prototype . sayHi = funktion (){ denne . sige ( 'hej!' ); }; baby . prototype . konstruktør = Menneske ; var matt = new Baby ( "Matt" ); mat . sig hej ();Bemærk: i JavaScript, når der arbejdes med "klasser" (konstruktør + prototyper + funktioner til nedarvning og blanding), bruges der ofte indpakninger (MooTools, AtomJS og andre). JavaScript-analogi med AtomJS-klasseindpakning:
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 ( 'hello' ); } } ) ; var matt = new Baby ( "Matt" ); mat . sig hej ();Et eksempel på en CoffeeScript-klasse med forskellige slags egenskaber.
klasse Test sig = (msg) -> advarsel msg # privat metode @echo = (msg) -> konsol . log msg # statisk metode, skrevet til Test setHi : (msg) -> # dynamisk metode, skrevet til Test.prototype @hi = -> msg # dynamisk metode, skrevet til testinstansRelaterede projekter: