Adakah yang pernah menggunakan Coffeescript untuk aplikasi produksi? [Tutup]

94

Coffeescript terlihat cukup keren. Apakah ada yang menggunakannya? Apa Pro & Kontra nya?

Esteban Araya
sumber
Terkait: stackoverflow.com/questions/6245341/…
Trevor Burnham

Jawaban:

113

Kami telah mulai menggunakan CoffeeScript di produk kami - situs web non-publik yang pada dasarnya adalah aplikasi untuk menjelajahi jenis data tertentu. Kami menggunakan CoffeeScript sebagai kompilator baris perintah (bukan di server, yang pada akhirnya ingin kami lakukan).

PROS (untuk kami):

  • Ini menghilangkan banyak kekacauan yang tidak perlu di javascript (misalnya tanda kurung, titik koma, beberapa tanda kurung) sejauh kode lebih bersih & lebih mudah dipahami sekilas daripada javascript
  • 20-30% lebih sedikit baris kode daripada javascript (untuk melakukan hal yang persis sama)
  • CoffeeScript tidak hanya menghilangkan noise tetapi juga menambahkan kata kunci, kelas, dan fitur seperti heredocs untuk membuat pengkodean lebih bersih dan lebih menyenangkan
  • Mengingat poin-poin sebelumnya, tidak diragukan lagi lebih cepat untuk membuat kode di CoffeeScript setelah Anda mempelajari seluk-beluknya

CONS

  • Saat menggunakan compiler baris perintah: untuk men-debug, Anda melihat kode yang berbeda saat memecahkan masalah (javascript) seperti saat menulis perbaikan (coffeescript). Namun, agak luar biasa, CoffeeScript kami sangat luar biasa sehingga kami tidak pernah perlu men-debugnya!

Yang penting, kami dapat kembali kapan saja. Kompiler coffeescript kami hanya menghasilkan javascript yang dapat dibaca, jadi jika ada yang berubah pikiran atau tidak dapat menemukan sesuatu, maka kami dapat kembali menggunakan javascript yang dihasilkan coffeescript - dan terus melakukan coding.

PandaWood
sumber
1
PandaWood tepat di semua poin. Saya telah menggunakannya dalam produksi untuk semua klien saya tahun ini dengan sukses besar. Kami menggunakan Buildr sebagai kompiler karena mendukung bundling file coffeescript dan javascript menjadi satu. github.com/balupton/buildr.npm
balupton
13
"CoffeeScript kami sangat luar biasa sehingga kami tidak pernah perlu men-debugnya!" Ehh ... benarkah? Data Anda selalu sesuai dengan harapan Anda? Anda tidak pernah memiliki yang tak terduga this, atau mengirim jenis yang salah ke suatu fungsi? Saya rasa Anda belum melakukan sesuatu yang menarik jika Anda belum harus "men-debug apa pun".
Ryan Florence
8
@rpflo jika Anda akan melihat kata-kata "Kami telah mulai menggunakan Coffeescript ..." dan mencocokkannya dengan pernyataan yang menyinggung, dan menganggapnya dalam konteks yang menyenangkan saat diberikan - saya pikir siapa pun bisa setuju , bahwa ada sedikit hal yang perlu dikhawatirkan. Sangat mungkin, dari teks yang saya berikan, bahwa kita baru saja mengubah javascript yang sudah berfungsi menjadi coffeescript, oleh karena itu belum diperlukan debugging yang serius
PandaWood
3
Tentang Penipu, sekarang dengan Source-Maps yang tidak benar-benar menjadi masalah lagi, cukup kompilasi -mdan Anda baik-baik saja.
omeid
@baiklah. Saya telah menindaklanjutinya dan telah berhasil mendapatkan peta sumber yang berfungsi di Chrome dengan coffeescript
PandaWood
27

Kami menggunakan coffeescript untuk semua javascript di BusyConf . Sebagian besar BusyConf adalah aplikasi sisi klien yang berjalan di browser, termasuk dukungan untuk mode offline.

Semua kode coffeescript kami telah diuji sepenuhnya. Tes itu sendiri ditulis dalam coffeescript, dan menggunakan framework Qunit (yang ditulis dalam javascript). Kami juga menulis ekstensi pada kerangka kerja Qunit yang membuat pengujian lebih bagus. Ekstensi Qunit ditulis dalam CoffeeScript . Aplikasi kami memiliki versi seluler yang ditulis dalam CoffeeScript, dan menggunakan kerangka Sencha Touch (yang ditulis dalam javascript).

Kesimpulannya adalah Anda dapat dengan bebas mencampurkan dependensi javascript dalam aplikasi Anda, tetapi semua kode yang Anda tulis (kode aplikasi Anda, tes, dll) dapat (dan seharusnya!) Menjadi coffeescript.

Jim Garvin
sumber
24

Hampir setahun kemudian, ada baiknya memposting beberapa pembaruan:

  1. Ruby on Rails 3.1 menggabungkan dukungan resmi CoffeeScript, yang berarti akan digunakan jauh lebih banyak di dunia nyata. Saya memberikan ceramah di RailsConf bulan lalu, di mana sebagian besar peserta belum pernah mendengar tentang CoffeeScript sebelumnya dan — dengan dukungan kuat dhh — sangat ingin membahasnya.
  2. Ada sebuah buku tentang CoffeeScript, saat ini dalam eBook dan akan segera dicetak dari The Pragmatic Bookshelf. Ini disebut CoffeeScript: Pengembangan JavaScript yang Dipercepat , dan itu benar-benar milik Anda. Ini didasarkan pada CoffeeScript 1.1.1.
  3. Bahasa ini sebenarnya sedikit berubah dalam enam bulan antara 1.0 dan 1.1.1; hampir semua perubahan memenuhi syarat sebagai "perbaikan bug". Saya harus membuat sedikit perubahan pada kode di buku untuk transisi dari 1.0.1 ke 1.1.1. Namun, saya yakin bahasanya akan melihat perubahan yang lebih signifikan di masa mendatang.

Daftar proyek CoffeeScript yang paling pasti ada di halaman In the Wild wiki CoffeeScript .

Menurut saya, sebagian besar penggunaan produksi CoffeeScript sejauh ini terkait dengan Appcelerator untuk membuat aplikasi iPhone / Android. (Wynn Netherland dari The Changelog menguraikan buku saya dengan menggambarkan CoffeeScript sebagai "senjata rahasia saya untuk pengembangan seluler iOS, Android, dan WebOS"), tetapi akan ada lebih banyak penggunaan dalam aplikasi Rails produksi — dan, saya harap, di tempat lain— dalam beberapa bulan mendatang.

Trevor Burnham
sumber
10

Saya sangat menyukai Coffeescript hari ini. Intinya seluruh HotelTonight aplikasi iPhone ditulis di dalamnya (menggunakan Appcelerator Titanium, yang memungkinkan Anda menulis aplikasi "asli" dalam JavaScript - ini bukan aplikasi web, katakanlah seperti Phonegap). Saya memilih untuk menggunakan Coffeescript dalam kasus ini karena itu membuat pengorganisasian dan pemeliharaan JS dalam jumlah besar menjadi jauh lebih mudah. Saya juga merasa jauh lebih menyenangkan untuk menulis kode dengan Coffeescript (vs. JavaScript). Kami juga menggunakan Coffeescript untuk JS di aplikasi Rails kami, tetapi ini adalah kode yang sangat kecil / kecil dalam kaitannya dengan seluruh aplikasi ponsel.

Pro sebagian besar harus dilakukan dengan hanya menjadi sintaks yang lebih baik, tetapi juga itu menstandarkan mekanisme OO, dan kemudian menambahkan beberapa tambahan yang bagus (pemahaman daftar, beberapa hal ruang lingkup, dll.).

Kontra bagi saya hampir nol. Yang utama adalah bahwa ini adalah lapisan tambahan untuk di-debug. Anda perlu melihat JS yang dihasilkan (yang SANGAT mudah dibaca dan bagus), dan kemudian memetakannya ke kode Coffeescript Anda. Bagi kami, ini sama sekali bukan masalah, tapi YMMV.

Pada akhirnya, pendapat saya adalah, tidak ada risiko dalam hal menggunakannya di aplikasi produksi, jadi, jangan biarkan itu menjadi pemblokir. Lalu, cobalah. Tulis beberapa kode dengannya, bandingkan dengan yang Anda tulis di JS, lihat kode yang dihasilkan untuk melihat apakah Anda merasa nyaman untuk dapat membacanya untuk kebutuhan debugging. Juga, nongkrong di #coffeescript IRC, orang-orang baik di sana. Dan terakhir, lihat bagaimana itu akan berintegrasi dengan aplikasi Anda, misalnya apa proses "membangun" Anda (misalnya untuk Rails, coba Barista, untuk sesuatu yang berdiri sendiri, cukup gunakan "kopi -w" yang disertakan, dll.).

chrisrbailey.dll
sumber
3

Coffeescript benar-benar membuat penulisan JS lebih mudah. Anda akan mendapatkan kode yang lebih bersih dan efisien.

Meskipun demikian, Anda tetap hanya dapat melakukan apa pun yang dapat Anda lakukan di vanilla JS. Setelah Anda cukup menggunakan coffeescript, itu menjadi jauh lebih mudah untuk menulis JS (yang bagus).

Jadi jika Anda belum pernah menggunakan JS satu ton, saya sarankan belajar coffescript. Anda akan mendapatkan kode yang lebih baik, lebih bersih, dan lebih sedikit buggy. Jika Anda sudah sangat fasih menggunakan JS, mungkin bukan ide yang baik untuk mulai menggunakan coffeescript di aplikasi "asli".

(Selain itu, coffeescript sedikit mengganggu saya karena tampaknya mendorong kode yang agak "menjemukan". Saya tidak tahu apakah itu hal yang baik atau buruk, tetapi tampaknya kasus TMTOWTDI yang ekstrem)

Zach
sumber
25
Saya tidak setuju dengan rekomendasi untuk belajar coffeescript daripada javascript, dan juga gagasan bahwa pernah fasih dalam belajar javascript / menggunakan coffeescript tidak berharga. Memahami javascript sangat penting untuk pengembang web. Memahami javascript yang akan dihasilkan oleh kode coffeescript Anda. Bagi mereka yang sudah javascript master, coffeescript akan menjadi perangkat ajaib dan revolusioner, eh, alat.
Jim Garvin
3
@ Jim Garvin, setuju. Penting bagi orang-orang untuk mempelajari javascript mereka, saya juga akan mengatakan bahwa mungkin tidak mungkin untuk mempelajari coffeescript sebelum javascript karena semua sumber daya untuk pemula akan ditulis dalam js kuno yang bagus (kecuali Rick Olsen tiba-tiba memutuskan untuk mulai memposting beberapa memulai tutorial JS di blognya).
Daniel Mendel
2
Anda juga perlu memahami Javascript untuk menulis Coffeescript. Sehingga Anda dapat men-debug kode Anda ketika terjadi kesalahan.
Blaise
Pembaruan: CoffeeScript sekarang memiliki dokumen yang cukup baik, dan peta sumber membuat debugging kode JS tidak diperlukan. JavaScript hanyalah target hari ini. Mempelajari JS masih sangat berguna, tetapi seorang pemula dapat mempelajari cukup banyak CoffeeScript, tanpa mengetahui JavaScript, untuk memulai pengkodean.
Carl Smith
3

Perhatikan bahwa meskipun ada kompiler, Anda tidak mendapatkan pemeriksaan statis karena JavaScript bersifat dinamis. Seperti yang tertulis di FAQ:

Analisis Statis

CoffeeScript menggunakan kompiler sumber-ke-sumber langsung. Tidak ada pemeriksaan tipe yang dilakukan, dan kami tidak dapat mengetahui apakah sebuah variabel ada atau tidak. Artinya, kami tidak dapat mengimplementasikan fitur yang dapat dibuat oleh bahasa lain secara native tanpa pemeriksaan waktu proses yang mahal. Akibatnya, fitur apa pun yang mengandalkan analisis semacam ini tidak akan dipertimbangkan.

Dukungan IDE kurang matang dibandingkan dengan JavaScript (Cloud9 memiliki dukungan sorotan sintaks, tetapi Eclipse JSDT memiliki refactorings dan banyak lagi): /programming/4084167/ide-or-its-add-in-for-coffescript -programming

thSoft
sumber