CoffeeScript | |
---|---|
Nyelvóra | objektum-orientált , kötelező , funkcionális , szempont-orientált , prototípus |
Megjelent | 2009. december 13 |
Szerző | Jeremy Ashkenas |
Fájlkiterjesztés _ | .coffee |
Kiadás | 2.7.0 [1] (2022. április 24. ) |
Befolyásolt | JavaScript , Python , Ruby , Haskell , Erlang |
befolyásolta | MoonScript , LiveScript |
Engedély | MIT engedély [2] |
Weboldal | coffeescript.org |
OS | platformközi |
A CoffeeScript ( ['kɔ:fɪ skrɪpt] ; coffee script ) egy JavaScript -re lefordított programozási nyelv . A CoffeeScript szintaktikai cukrot ad hozzá a Ruby , Python , Haskell és Erlang jegyében , hogy javítsa a kód olvashatóságát és csökkentse a kód méretét. A CoffeeScript lehetővé teszi a JavaScripthez képest kompaktabb kód írását [3] . A CoffeeScripttől fordítással kapott JavaScript kód teljes mértékben megfelel a JavaScript Lint tesztnek .
A nyelv megalkotója Jeremy Ashkenas .
Kezdetben a fordító Ruby nyelven íródott , de a 0.5-ös verzióban, amely 2010. február 21-én jelent meg , a fordítót magában a CoffeeScriptben implementálták.
A CoffeeScriptet üdvözölte a Ruby közösség. A Ruby on Rails webes keretrendszerhez a natív CoffeeScript támogatást adták a 3.1-es verzió óta.
A nyelv hivatalos honlapján található egy "try coffeescript" rész, amely lehetővé teszi, hogy programokat futtasson rajta online [4] . Ellentétben például a Try Ruby-val [5] , nem lesznek kérések a szerver felé, a kódot közvetlenül a böngészőben fordítják le és hajtják végre.
CoffeeScript:
életkor = 2 férfi = valódi név = "Matvey"JavaScript:
életkor = 2 , férfi = igaz , név = "Matvey " ;CoffeeScript:
mond = ( beszéd ) -> éber beszéd mondd: "Helló világ!"JavaScript ECMAScript 2015 használatával:
const mond = beszéd => éber ( beszéd ); say ( 'Hello world!' );JavaScript:
var say = function ( beszéd ) { alert ( beszéd ); }; mond ( "Helló világ!" );CoffeeScript:
osztály Ember konstruktor : (@név) -> class Baby extends Human say : (msg) -> alert " #{ @name } say ' #{ msg } '" sayHi : -> @say ( 'hello' ) matt = új Baba ( "Matvey" ) matt . sziasztok ()JavaScript ECMAScript 2015 használatával:
class Human { konstruktor ( név ) { this . név = név ; } } class Baby extends Human { say ( msg ) { alert ( ` ${ this . name } say ' ${ msg } '` ); } mondd Szia () { ez . mondd ( 'helló!' ); } } const matt = new Baby ( 'Matt' ); matt . sziasztok ();Analóg a JavaScriptben (nevezetesen egy analóg, nem pedig egy összeállítási eredmény):
function Ember ( név ){ ez . név = név ; } function Baba ( név ){ Ember . call ( ez , név ); } bébi . prototípus = Objektum . létrehozni ( Human.prototype ) ; _ bébi . prototípus . say = function ( msg ){ alert ( this . name + ' say ' + msg ); }; bébi . prototípus . sayHi = function (){ this . mondd ( 'helló!' ); }; bébi . prototípus . konstruktor = Ember ; var matt = new Baby ( "Matt" ); matt . sziasztok ();Megjegyzés: a JavaScriptben, amikor "osztályokkal" dolgozik (konstruktor + prototípusok + öröklési és keverési függvények), gyakran használnak burkolókat (MooTools, AtomJS és mások). JavaScript analógia az AtomJS osztályburkolóval:
var Human = Osztály ({ inicializálás : függvény ( név ) { this . name = név ; } }); var Baby = Class ({ kiterjeszti : Human , mondd : function ( msg ) { alert ( this . name + ' say ' + msg ); }, sayHi : function () { this . say ( 'hello' ); } } ) ; var matt = new Baby ( "Matt" ); matt . sziasztok ();Példa egy CoffeeScript osztályra, különféle tulajdonságokkal.
class Test say = (msg) -> alert msg # private method @echo = (msg) -> console . log msg # statikus metódus, Test setHi : (msg) -> # dinamikus metódus, Test.prototype @hi = -> msg # dinamikus metódus, tesztpéldányba írvaKapcsolódó projektek: