Bir üretim uygulaması için Coffeescript kullanan var mı? [kapalı]


94

Kahve yazısı oldukça havalı görünüyor. Kimse kullandı mı? Artıları ve Eksileri nelerdir?


Yanıtlar:


113

Temelde belirli veri türlerine göz atmak için bir uygulama olan halka açık olmayan bir web sitesi olan ürünümüzde CoffeeScript kullanmaya başladık. CoffeeScript'i bir komut satırı derleyicisi olarak kullanıyoruz (sonunda yapmak istediğimiz sunucuda değil).

PROS (bizim için):

  • Kodun javascript'ten daha temiz ve bir bakışta anlaşılması daha kolay olduğu ölçüde, javascript'teki birçok gereksiz karmaşadan (örn. Kaşlı ayraçlar, noktalı virgül, bazı parantezler) kurtulur.
  • JavaScript'ten% 20-30 daha az kod satırı (tam olarak aynı şeyi yapmak için)
  • CoffeeScript yalnızca gürültüyü ortadan kaldırmakla kalmaz, aynı zamanda kodlamayı daha temiz ve biraz daha eğlenceli hale getirmek için anahtar kelimeler, sınıflar ve yorumlu metinler gibi özellikler ekler
  • Önceki noktalar göz önüne alındığında, ipleri öğrendikten sonra hiç şüphesiz CoffeeScript'te kodlamak daha hızlıdır.

EKSİLERİ

  • Komut satırı derleyicisini kullanırken: hata ayıklamak için, sorunu çözerken (javascript) düzeltmeyi yazarken (coffeeescript) olduğu gibi farklı bir koda bakarsınız. Bununla birlikte, biraz inanılmaz bir şekilde, CoffeeScript'imiz o kadar harika ki, hiçbir zaman hata ayıklamaya ihtiyaç duymadık!

Önemlisi, istediğimiz zaman geri dönebiliriz. Coffeeescript derleyicimiz sadece okunabilir javascript üretiyor, bu yüzden herhangi biri fikrini değiştirir veya bir şeyi çözemezse, o zaman kahvenin ürettiği javascript'i kullanmaya devam edebilir ve kodlamaya devam edebiliriz.


1
PandaWood her noktaya tam olarak hitap ediyor. Bu yıl tüm müşterilerim için üretimde büyük bir başarıyla kullanıyorum. Coffeescript ve javascript dosyalarını tek bir yerde birleştirmeyi desteklediği için derleyici olarak Buildr kullanıyoruz. github.com/balupton/buildr.npm
balupton

13
"CoffeeScript'imiz o kadar harika ki, hiçbir zaman hata ayıklamaya ihtiyaç duymadık!" Ehh ... gerçekten mi? Verileriniz her zaman beklentilerinize uygun mu? Hiç beklenmedik bir şey yaşamadınız mı thisveya yanlış türü bir işleve göndermediniz mi? Henüz "hata ayıklamak" zorunda kalmadıysanız, ilginç bir şey yaptığınızı sanmıyorum.
Ryan Floransa

8
@rpflo "Coffeescript kullanmaya başladık ..." kelimesini fark ederseniz ve bunu rahatsız edici ifadeyle eşleştirirseniz ve verildiği açık yürekli bağlamda alırsanız - sanırım herkes aynı fikirde olabilir , endişelenmek için çok az neden var. Verdiğim metinden, zaten çalışan javascript'i basitçe kahve kağıdına dönüştürmüş olma ihtimalimiz çok yüksek, bu nedenle henüz ciddi bir hata ayıklamaya gerek yok
PandaWood

3
The Con 'hakkında, artık gerçekten sorun olmayan Kaynak Haritaları ile, sadece derleyin -mve iyisiniz.
omeid

@omeid iyi nokta. Bunu takip ettim ve kahve ile Chrome'da çalışan kaynak haritalarını başarıyla edindim
PandaWood

27

BusyConf'taki tüm javascript için kahve komut dosyası kullanıyoruz . BusyConf'un büyük bir kısmı, çevrimdışı mod desteği de dahil olmak üzere tarayıcılarda çalışan bir istemci tarafı uygulamasıdır.

Tüm kahve kodumuz tamamen test edilmiştir. Testler kahve kağıdına yazılır ve Qunit çerçevesini kullanır (javascript ile yazılmıştır). Ayrıca Qunit çerçevesine testleri daha güzel hale getiren bir uzantı da yazdık. Qunit uzantısı yazılır CoffeeScript . Uygulamamız CoffeeScript ile yazılmış bir mobil versiyona sahiptir ve Sencha Touch çerçevesini (javascript ile yazılmıştır) kullanır.

Bundan çıkarılacak şey, uygulamanızda javascript bağımlılıklarını özgürce karıştırabilmenizdir, ancak yazdığınız tüm kodlar (uygulama kodunuz, testleriniz vb.) Bir kahve dosyası olabilir (ve olmalıdır!).


24

Neredeyse bir yıl sonra, bazı güncellemeler yayınlamaya değer:

  1. Ruby on Rails 3.1, resmi CoffeeScript desteğini içerir, bu da çok daha fazla gerçek dünya kullanımı göreceği anlamına gelir. Geçen ay RailsConf'ta, katılımcıların çoğunun CoffeeScript'i daha önce duymadığı ve dhh'nin güçlü onayı verildiği takdirde, konuya girmek için istekli olduğu bir konuşma yaptım.
  2. CoffeeScript ile ilgili bir kitap var, şu anda eBook'ta ve yakında Pragmatic Bookshelf'ten basılacak. Adı CoffeeScript: Accelerated JavaScript Development ve gerçekten sizindir. CoffeeScript 1.1.1'e dayanmaktadır.
  3. 1.0 ile 1.1.1 arasındaki altı ayda dil aslında çok az değişti; neredeyse tüm değişiklikler "hata düzeltmeleri" olarak nitelendirilir. 1.0.1'den 1.1.1'e geçiş için kitaptaki koda çok az ince ayar yapmak zorunda kaldım. Ancak, gelecekte dilin daha önemli değişiklikler göreceğinden eminim.

CoffeeScript projelerinin en kesin listesi CoffeeScript wiki'nin In the Wild sayfasındadır.

CoffeeScript'in şimdiye kadarki üretim kullanımının çoğunun iPhone / Android uygulamaları oluşturmak için Appcelerator ile bağlantılı olduğunu söyleyebilirim. (The Changelog'dan Wynn Netherland, CoffeeScript'i "iOS, Android ve WebOS mobil geliştirme için gizli silahım" olarak tanımlayarak kitabımı bulanıklaştırdı), ancak üretim Rails uygulamalarında çok daha fazla kullanım olacak ve umarım başka yerlerde- Önümüzdeki aylarda.



10

Bugünlerde Coffeescript'i gerçekten çok seviyorum. Esasen, HotelTonight iPhone uygulamasının tamamı içine yazılmıştır (JavaScript'te "yerel" uygulamalar yazmanıza izin veren Appcelerator Titanium kullanılarak - bunlar Phonegap gibi web uygulamaları değildir). Bu durumda Coffeescript kullanmayı seçtim çünkü büyük miktarda JS'yi organize etmeyi ve sürdürmeyi çok daha kolay hale getiriyor. Ayrıca Coffeescript (JavaScript'e kıyasla) ile kod yazmayı çok daha zevkli buluyorum. Ayrıca Rails uygulamamızda JS için Coffeescript kullanıyoruz, ancak bu, tüm telefon uygulamasına göre inanılmaz derecede küçük / az miktarda koddur.

Profesyoneller çoğunlukla daha hoş bir sözdizimi olmakla ilgilidir, ancak aynı zamanda bir OO mekanizmasını standartlaştırması ve ardından bazı güzel eklemeler (liste anlayışları, bazı kapsam şeyleri vb.) Ekler.

Eksileri benim için neredeyse sıfır. Birincisi, hata ayıklamak için fazladan bir katman olmasıdır. Oluşturulan JS'ye (ÇOK okunabilir ve güzel) bakmanız ve ardından bunu Coffeescript kodunuzla eşleştirmeniz gerekecektir. Bizim için bu hiç sorun değil, YMMV oldu.

Sonunda, benim fikrim, onu bir üretim uygulamasında kullanma açısından sıfır risk var, bu yüzden bunun bir engelleyici olmasına izin vermeyin. O zaman gidip deneyin. Onunla bir miktar kod yazın, bunu JS'de yazdıklarınızla karşılaştırın, oluşturulan koda bakın ve bunu hata ayıklama ihtiyaçları için okuyabilme konusunda rahat olup olmadığınızı görün. Ayrıca, #coffeescript IRC'de takılın, insanlar orada iyi. Ve son olarak, uygulamanızla nasıl bütünleşeceğini görün, örneğin "oluşturma" süreciniz nedir (ör. Rails için, Barista'yı deneyin, bağımsız bir şey için, sadece birlikte verilen "kahve -w" yi kullanın, vb.).


3

Coffeescript gerçekten JS yazmayı kolaylaştırıyor. Daha temiz, daha verimli kod elde edersiniz.

Bununla birlikte, hala yalnızca vanilya JS'de yapabildiğiniz her şeyi yapabilirsiniz. Coffeescript'i yeterince kullandığınızda, (iyi) JS yazmak çok daha kolay hale gelir.

Yani JS'yi çok kullanmadıysanız, onun yerine kahve yazmayı öğrenmenizi öneririm. Daha iyi, daha temiz ve daha az hatalı kod alacaksınız. JS'de gerçekten akıcı iseniz, "gerçek" bir uygulamada kahve komutunu kullanmaya başlamak iyi bir fikir olmayabilir.

(Ayrıca, cafescript beni biraz rahatsız ediyor, çünkü daha çok "floofy" kodu teşvik ediyor. Bunun iyi bir şey mi yoksa kötü bir şey mi olduğunu bilmiyorum, ancak TMTOWTDI'nin aşırı bir durumu gibi görünüyor)


25
Javascript yerine kahve kullanma önerisine katılmıyorum ve bir zamanlar javascript öğrenmede / kahve kullanımında akıcı bir şekilde konuşmanın değerli olmadığı fikrine katılmıyorum. Javascript'i anlamak, web geliştiricileri için çok önemlidir. Coffeeescript kodunuzun üreteceği javascript'i anlamak gereklidir. Zaten javascript ustası olanlar için, coffeeescript büyülü ve devrim niteliğinde bir araç, er, araç olacaktır.
Jim Garvin

3
@Jim Garvin, kabul etti. İnsanların kendi javascriptlerini öğrenmeleri önemlidir, ayrıca yeni başlayanlar için tüm kaynaklar eski moda js ile yazılacağından (Rick Olsen aniden bir şeyler yayınlamaya karar vermedikçe) javascript'ten önce kahve komutunu öğrenmenin muhtemelen imkansız olacağını söyleyebilirim. blogunda JS derslerine başlıyor).
Daniel Mendel

2
Ayrıca Coffeescript yazmak için Javascript'i anlamanız gerekir. Böylece bir şeyler ters gittiğinde kodunuzda hata ayıklayabilirsiniz.
Blaise

Güncelleme: CoffeeScript artık yeterince iyi dokümanlara sahip ve kaynak haritaları, JS kodunda hata ayıklamayı gereksiz kılıyor. JavaScript bugünlerde sadece bir hedef. JS'yi öğrenmek hala çok kullanışlıdır, ancak yeni başlayanlar kodlamaya başlamak için herhangi bir JavaScript bilmeden yeterince CoffeeScript öğrenebilir.
Carl Smith

3

Bir derleyici olmasına rağmen, JavaScript'in dinamik doğası nedeniyle statik kontrol almadığınızı unutmayın. SSS'de yazıldığı gibi:

Statik Analiz

CoffeeScript, doğrudan kaynaktan kaynağa bir derleyici kullanır. Tip kontrolü yapılmaz ve bir değişkenin var olup olmadığını hesaplayamayız. Bu, diğer dillerin maliyetli çalışma zamanı kontrolleri olmadan yerel olarak geliştirebileceği özellikleri uygulayamayacağımız anlamına gelir. Sonuç olarak, bu tür bir analize dayanan herhangi bir özellik dikkate alınmayacaktır.

IDE desteği JavaScript'inkinden daha az olgun (Cloud9 sözdizimi vurgulama desteğine sahiptir, ancak Eclipse JSDT'nin yeniden düzenlemeleri ve daha fazlası vardır): /programming/4084167/ide-or-its-add-in-for-coffescript -programlama

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.