Domanda

CoffeeScript sembra piuttosto fresco. Qualcuno ha usato? Quali sono i suoi Pro e contro?

È stato utile?

Soluzione

Abbiamo iniziato ad utilizzare CoffeeScript nel nostro prodotto - un sito web rivolto non pubblico che è fondamentalmente un app per la navigazione alcuni tipi di dati. Usiamo CoffeeScript come una riga di comando del compilatore (non sul server, che avevamo alla fine come fare).

Pro (per noi):

  • E si libera di un sacco di confusione inutile in javascript (ad esempio, bretelle, punti e virgola, alcune parentesi) nella misura in cui il codice è più pulito e più facile da comprendere a colpo d'occhio di javascript
  • il 20-30% in meno di linee di codice di javascript (per fare esattamente la stessa cosa)
  • CoffeeScript non solo rimuove il rumore, ma aggiunge le parole chiave, le classi e caratteristiche come heredocs per rendere la codifica più pulita e un po 'più divertente
  • Dati i punti precedenti, è senza dubbio più veloce per il codice in CoffeeScript una volta imparate le corde

CONS

  • Quando si utilizza il compilatore della riga di comando: per eseguire il debug, si sta guardando codice diverso quando la soluzione del problema (javascript), come quando si scrive la correzione (CoffeeScript). Tuttavia, un po 'incredibilmente, la nostra CoffeeScript è così impressionante che abbiamo mai avuto bisogno di eseguire il debug!

È importante sottolineare che siamo in grado di tornare indietro in qualsiasi momento. Il nostro compilatore CoffeeScript è solo producendo javascript leggibile, quindi se qualcuno cambia idea o non può capire qualcosa, allora possiamo solo cadere di nuovo di utilizzare il javascript che CoffeeScript prodotto -. E mantenere la codifica

Altri suggerimenti

Usiamo CoffeeScript per tutti del javascript in BusyConf . Una gran parte di BusyConf è un'applicazione lato client che viene eseguito in browers, tra cui il supporto per la modalità non in linea.

Tutti i nostri codici CoffeeScript è completamente testato. I test stessi sono scritti in CoffeeScript, e utilizzare il Qunit quadro (che è scritto in JavaScript). Abbiamo anche scritto una proroga per il quadro Qunit che rende il più bello test. L'estensione Qunit è scritto in CoffeeScript . La nostra applicazione ha una versione mobile che è scritto in CoffeeScript, e utilizza il Sencha tocco quadro ( che è scritto in JavaScript).

Il portare via da questo è che si può liberamente Intermix javascript dipendenze nella propria applicazione, ma tutto il codice si scrive (il codice dell'applicazione, prove, ecc) può (e dovrebbe!) Essere CoffeeScript.

Quasi un anno dopo, vale la pena di inviare alcuni aggiornamenti:

  1. Ruby on Rails 3.1 sta incorporando il supporto CoffeeScript ufficiale, il che significa che sta andando a vedere molto più uso nel mondo reale. Ho tenuto una conferenza a RailsConf il mese scorso, dove la maggior parte dei partecipanti non avevano sentito parlare di CoffeeScript prima e-data di DHH forte sostegno, erano ansiosi di entrare in esso.
  2. C'è un libro su CoffeeScript, attualmente in eBook e che presto saranno in stampa da The Pragmatic Bookshelf. Si chiama CoffeeScript: Accelerated Development JavaScript , ed è dal sottoscritto. Si basa su CoffeeScript 1.1.1.
  3. La lingua è in realtà cambiato molto poco nei sei mesi tra 1.0 e 1.1.1; quasi tutte le modifiche qualificano come "bugfix". Ho dovuto fare molto paio di modifiche al codice nel libro per il passaggio dalla 1.0.1 alla 1.1.1. Tuttavia, sono sicuro che la lingua vedrà cambiamenti più significativi in ??futuro.

La lista più definitiva dei progetti CoffeeScript è sul wiki del CoffeeScript Nel selvaggio pagina.

Direi che la maggior parte della produzione di utilizzo CoffeeScript finora è in collaborazione con Appcelerator per creare iPhone / apps Android. (Wynn Netherland di changelog blurbed mio libro descrivendo CoffeeScript come "la mia arma segreta per iOS, Android e WebOS sviluppo mobile"), ma ci sta per essere molto più uso nella produzione applicazioni Rails-e, spero, elsewhere- nei prossimi mesi.

CoffeeScript è stato utilizzato nel lettore Ars Technica per iPad http://arstechnica.com/apple/news/2010/11/introducing-the-ars-technica-reader-for-ipad.ars

Adoro CoffeeScript questi giorni. In sostanza l'intera applicazione HotelTonight iPhone è scritto in esso (con Appcelerator Titanium, che consente di scrivere applicazioni "native" in JavaScript - non sono applicazioni web, dire come PhoneGap). Ho scelto di utilizzare CoffeeScript in questo caso, perché rende l'organizzazione e il mantenimento di una grande quantità di JS molto più facile. Trovo anche semplicemente molto più piacevole per scrivere il codice con CoffeeScript (vs. JavaScript). Usiamo anche CoffeeScript per il JS nella nostra applicazione Rails, ma questo è incredibilmente piccolo / piccola quantità di codice in relazione a tutto il telefono app.

I pro hanno per lo più a che fare con solo di essere una sintassi più bello, ma anche che standardizza un meccanismo OO, e poi aggiunge alcune aggiunte piacevoli (list comprehension, alcune cose scope, ecc.).

I contro sono quasi pari a zero per me. Quello principale è che si tratta di un ulteriore livello di debug. Avrete bisogno di guardare il JS generato (che è molto leggibile e piacevole), e poi la mappa che al codice CoffeeScript. Per noi, questo non è stato un problema a tutti, ma YMMV.

Alla fine, il mio prendere è, non v'è rischio zero in termini di usarlo su un'applicazione di produzione, così, non lasciare che sia un bloccante. Quindi, andare da provare. Scrivere del codice con esso, confrontare che a quello che si scrive in JS, un'occhiata al codice generato per vedere se si è comodo con l'essere in grado di leggere che per il debug esigenze. Inoltre, appendere fuori in IRC #coffeescript, le persone ci sono buone. E, infine, vedere come sarebbe integrarsi con la vostra applicazione, ad esempio, qual è il tuo processo di "costruzione" (ad esempio per Rails, provare Barista, per qualcosa di autonomo, basta usare l'incluso "caffè w", ecc.).

CoffeeScript davvero solo rende la scrittura più facile JS. Si finisce con un detergente, codice più efficiente.

Detto questo, è ancora possibile fare solo ciò che si può fare in vaniglia JS. Una volta che si utilizza abbastanza CoffeeScript, lo fa diventare molto più facile da scrivere (buona) JS.

Quindi, se non avete usato JS una tonnellata, io suggerirei di apprendimento coffescript invece. Otterrete una migliore, più pulito, il codice meno errori. Se sei già davvero fluente in JS, potrebbe non essere una buona idea per iniziare a utilizzare CoffeeScript su un'applicazione "reale".

(Inoltre, CoffeeScript fa mi infastidire un po 'nel senso che sembra incoraggiare piuttosto "floofy" codice. Non so se è un bene o un male, ma sembra un caso estremo di TMTOWTDI)

Si noti che anche se v'è un compilatore, non si ottiene il controllo statico a causa della natura dinamica di JavaScript. Come scritto nelle FAQ:

Analisi statica

CoffeeScript utilizza una scala compilatore source-to-source. Nessun tipo controllo viene eseguito, e non si può capire se una variabile esiste ancora o no. Questo significa che non siamo in grado di implementare caratteristiche che altri lingue possono costruire in modo nativo senza controlli runtime costosi. Come un Di conseguenza, qualsiasi caratteristica che si basa su questo tipo di analisi non sarà considerato.

supporto IDE è meno maturo di quello di JavaScript (Cloud9 ha il supporto evidenziazione della sintassi, ma Eclipse JSDT ha refactoring e altro ancora): https://stackoverflow.com/questions/4084167/ide-or-its-add-in-for-coffescript-programming

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top