क्या किसी ने उत्पादन एप्लिकेशन के लिए कॉफ़ीस्क्रिप्ट का उपयोग किया है? [बन्द है]


94

कॉफ़ीस्क्रिप्ट बहुत अच्छा लग रहा है। क्या किसी ने इसका इस्तेमाल किया है? इसके पेशेवरों और विपक्ष क्या हैं?


जवाबों:


113

हमने अपने उत्पाद में CoffeeScript का उपयोग करना शुरू कर दिया है - एक गैर-सार्वजनिक सामना करने वाली वेबसाइट जो मूल रूप से कुछ प्रकार के डेटा ब्राउज़ करने के लिए एक ऐप है। हम CoffeeScript का उपयोग कमांड-लाइन कंपाइलर के रूप में करते हैं (सर्वर पर नहीं, जिसे हम अंततः करना चाहेंगे)।

PROS (हमारे लिए):

  • यह जावास्क्रिप्ट में बहुत सारे अनावश्यक अव्यवस्था से छुटकारा दिलाता है (जैसे ब्रेसिज़, अर्ध-कॉलोन, कुछ कोष्ठक) इस हद तक कि कोड क्लीनर और जावास्क्रिप्ट की तुलना में एक नज़र में समझने में आसान है
  • जावास्क्रिप्ट की तुलना में कोड की 20-30% कम लाइनें (बिल्कुल वही काम करने के लिए)
  • CoffeeScript न केवल शोर को हटाता है, बल्कि कोडिंग क्लीनर और कुछ हद तक सुखद बनाने के लिए कीवर्ड, कक्षाएं, और हिरदॉस्क जैसी सुविधाओं को जोड़ता है
  • पिछले बिंदुओं को देखते हुए, रस्सियों को सीखने के बाद कॉफ़ीस्क्रिप्ट में कोड करना निस्संदेह तेज़ है

कान्स

  • कमांड-लाइन कंपाइलर का उपयोग करते समय: डिबग करने के लिए, आप समस्या (जावास्क्रिप्ट) को हल करते समय विभिन्न कोड को देख रहे हैं जैसे कि फिक्स (कॉफ़ीस्क्रिप्ट) लिखते समय। हालांकि, कुछ हद तक अविश्वसनीय रूप से, हमारे कॉफीस्क्रिप्ट इतने भयानक हैं कि हमें इसे डिबग करने की आवश्यकता नहीं है!

महत्वपूर्ण रूप से, हम किसी भी समय वापस मुड़ सकते हैं। हमारा कॉफ़ीस्क्रिप्ट कंपाइलर केवल पठनीय जावास्क्रिप्ट का उत्पादन कर रहा है, इसलिए यदि कोई भी अपना दिमाग बदलता है या किसी चीज़ का पता नहीं लगा सकता है, तो हम अभी उस जावास्क्रिप्ट का उपयोग करने के लिए वापस छोड़ सकते हैं जो कॉफ़ीसेप्टिक द्वारा उत्पादित है - और कोडिंग रखें।


1
पांडावूड इसे सभी बिंदुओं पर सही तरीके से हिट करता है। मैं इस वर्ष अपने सभी ग्राहकों के लिए उत्पादन में बड़ी सफलता के साथ इसका उपयोग कर रहा हूं। हम Buildr का उपयोग कंपाइलर के रूप में कर रहे हैं क्योंकि यह एक में कॉफ़ीस्क्रिप्ट और जावास्क्रिप्ट फ़ाइलों को बंडल करने का समर्थन करता है। github.com/balupton/buildr.npm
बालुपटन

13
"हमारा कॉफीस्क्रिप्ट इतना भयानक है कि हमें इसे डिबग करने की कभी आवश्यकता नहीं है!" एह ... सच में? आपका डेटा हमेशा आपकी अपेक्षा से मेल खाता है? आपने कभी कोई अनपेक्षित नहीं किया this, या किसी फ़ंक्शन को गलत प्रकार भेजें? मुझे नहीं लगता कि आपने अभी तक कुछ भी दिलचस्प किया है अगर आपको "कुछ भी डिबग" नहीं करना है।
रयान फ्लोरेंस

8
@rpflo यदि आप "हम कॉफ़िस्क्रिप्ट का उपयोग करना शुरू कर चुके हैं" शब्दों पर ध्यान देंगे ... और आपत्तिजनक बयान के साथ मेल खाते हैं, और इसे हल्के-फुल्के संदर्भ में लें जिसमें यह दिया गया है - मुझे लगता है कि कोई भी सहमत हो सकता है , कि चिंता का कारण बहुत कम है। यह पूरी तरह से संभव है, मेरे द्वारा दिए गए पाठ से, कि हमने बस पहले से ही काम कर रहे जावास्क्रिप्ट को कॉफ़ीस्क्रिप्ट में बदल दिया है, इसलिए अभी तक कोई गंभीर डिबगिंग की आवश्यकता नहीं है
पांडावाड

3
कॉन के बारे में ', अब सोर्स-मैप्स के साथ, जो वास्तव में अब कोई मुद्दा नहीं है, बस इसके साथ संकलन करें -mऔर आप अच्छे हैं।
अनोमिड

@ अच्छा बिंदु। मैंने उस पर काम किया है और सफलतापूर्वक coffeescript के साथ क्रोम में काम करने वाले स्रोत-मानचित्र प्राप्त कर लिए हैं
PandaWood

27

हम सभी का उपयोग करें के लिए Coffeescript में व्यस्त जावास्क्रिप्ट । बिजीकॉन्फ़ का एक बड़ा हिस्सा क्लाइंट साइड एप्लिकेशन है जो ऑफ़लाइन मोड के लिए समर्थन सहित ब्राउज़रों में चलता है।

हमारे सभी कॉफ़ीस्क्रिप्ट कोड पूरी तरह से परीक्षण किए गए हैं। परीक्षण स्वयं कॉफ़ीस्क्रिप्ट में लिखे गए हैं, और क्यूनिट ढांचे (जो जावास्क्रिप्ट में लिखा गया है) का उपयोग करें। हमने क्यूनिट ढांचे के लिए एक विस्तार भी लिखा है जो परीक्षणों को अच्छा बनाता है। Qunit विस्तार में लिखा है CoffeeScript । हमारे आवेदन में एक मोबाइल संस्करण है जो कॉफीस्क्रिप्ट में लिखा गया है, और यह स्नेहा टच फ्रेमवर्क (जो जावास्क्रिप्ट में लिखा गया है) का उपयोग करता है।

इससे दूर ले जाता है कि आप अपने आवेदन में स्वतंत्र रूप से जावास्क्रिप्ट निर्भरता को रोक सकते हैं, लेकिन आपके द्वारा लिखे गए कोड (आपके आवेदन कोड, परीक्षण आदि) के सभी (और!) कोफ़स्क्रिप्ट हो सकते हैं।


24

लगभग एक साल बाद, यह कुछ अपडेट पोस्ट करने लायक है:

  1. रूबल्स ऑन रूल्स 3.1 में आधिकारिक कॉफीस्क्रिप्ट समर्थन शामिल है, जिसका अर्थ है कि यह कहीं अधिक वास्तविक दुनिया का उपयोग करने वाला है। मैंने पिछले महीने RailsConf में एक बात की, जहाँ ज़्यादातर उपस्थित लोगों ने पहले कॉफ़ीस्क्रिप्ट के बारे में नहीं सुना था और dhh के मजबूत समर्थन को देखते हुए - उसमें जाने के लिए उत्सुक थे।
  2. वर्तमान में ई-पुस्तक में कॉफीस्क्रिप्ट पर एक पुस्तक है, और जल्द ही प्रैग्मेटिक बुकशेल्फ़ से प्रिंट में है। इसे कॉफीस्क्रिप्ट कहा जाता है : त्वरित जावास्क्रिप्ट विकास , और यह आपके द्वारा सही मायने में है। यह CoffeeScript 1.1.1 पर आधारित है।
  3. भाषा वास्तव में 1.0 और 1.1.1 के बीच छह महीनों में बहुत कम बदल गई है; लगभग सभी परिवर्तन "बगफिक्स" के रूप में योग्य हैं। मुझे किताब के कोड से 1.0.1 से 1.1.1 तक कोड में बहुत कम मोड़ देना था। हालाँकि, मुझे यकीन है कि भविष्य में भाषा में और अधिक महत्वपूर्ण बदलाव देखने को मिलेंगे।

कॉफ़ीस्क्रिप्ट प्रोजेक्ट्स की सबसे निश्चित सूची कॉफ़ीस्क्रिप्ट विकीज़ इन द वाइल्ड पेज पर है।

मैं कहता हूँ कि अब तक कॉफ़ीस्क्रिप्ट का अधिकांश उत्पादन उपयोग iPhone / Android ऐप्स बनाने के लिए Appcelerator के साथ किया जाता है। (द चेंजलॉग के व्यान नीदरलैंड ने कॉफ़ीस्क्रिप्ट को "आईओएस, एंड्रॉइड और वेबओएस मोबाइल विकास के लिए मेरा गुप्त हथियार" के रूप में वर्णित करके मेरी पुस्तक को धुंधला कर दिया), लेकिन उत्पादन रेल एप्लिकेशन में बहुत अधिक उपयोग होने जा रहा है- और, मुझे आशा है, अन्यत्र- आने वाले महीनों में।



10

मुझे इन दिनों कॉफ़ीस्क्रिप्ट बहुत पसंद है। अनिवार्य रूप से संपूर्ण HotelTonight iPhone एप्लिकेशन इसमें लिखा गया है (Appcelerator Titanium का उपयोग करके, जो आपको जावास्क्रिप्ट में "देशी" ऐप्स लिखने देता है - वे वेब ऐप नहीं हैं, जैसे Phonegap कहते हैं)। मैंने इस मामले में कॉफ़ीस्क्रिप्ट का उपयोग करना चुना क्योंकि यह जेएस की एक बड़ी मात्रा को व्यवस्थित और बनाए रखना बहुत आसान है। मुझे यह भी लगता है कि कॉफ़ीसेस्क्रिप्ट (बनाम जावास्क्रिप्ट) के साथ कोड लिखने के लिए यह बहुत अधिक सुखद है। हम अपने रेल एप्लिकेशन में जेएस के लिए कॉफ़ीस्क्रिप्ट का उपयोग करते हैं, लेकिन यह पूरे फोन ऐप के संबंध में कोड की अविश्वसनीय रूप से मामूली / छोटी राशि है।

पेशेवरों को ज्यादातर एक अच्छे सिंटैक्स होने के साथ करना पड़ता है, लेकिन यह भी कि यह एक ओओ तंत्र का मानकीकरण करता है, और फिर कुछ अच्छा जोड़ देता है (सूची समझ, कुछ गुंजाइश चीजें, आदि)।

मेरे लिए विपक्ष लगभग शून्य है। प्राथमिक एक यह है कि यह डिबग करने के लिए एक अतिरिक्त परत है। आपको उत्पन्न जेएस (जो बहुत पठनीय और अच्छा है) को देखने की आवश्यकता होगी, और फिर उसे अपने कॉफ़ीस्क्रिप्ट कोड में मैप करें। हमारे लिए, यह कोई मुद्दा नहीं है, लेकिन YMMV है।

अंत में, मेरा टेक है, उत्पादन ऐप पर इसका उपयोग करने के मामले में शून्य जोखिम है, इसलिए, इसे अवरुद्ध न होने दें। फिर, इसे आज़माएं। इसके साथ कुछ कोड लिखें, तुलना करें कि आप जेएस में क्या लिखते हैं, उत्पन्न कोड को यह देखने के लिए देखें कि क्या आप डीबगिंग आवश्यकताओं के लिए पढ़ने में सक्षम होने के साथ कम्फर्टेबल हैं। इसके अलावा, #coffeescript IRC में हैंग आउट करें, लोग वहां अच्छे हैं। और अंत में, यह देखें कि यह आपके ऐप के साथ कैसे एकीकृत होगा, जैसे कि आपकी "बिल्ड" प्रक्रिया क्या है (जैसे रेल के लिए, बरिस्ता की कोशिश करें, कुछ स्टैंडअलोन के लिए, बस शामिल "कॉफी-डब्ल्यू", आदि का उपयोग करें)।


3

कॉफ़ीस्क्रिप्ट वास्तव में जेएस को लिखना आसान बनाता है। आप क्लीनर, अधिक कुशल कोड के साथ समाप्त होते हैं।

कहा जा रहा है, आप अभी भी केवल वही कर सकते हैं जो आप वैनिला जेएस में कर सकते हैं। एक बार जब आप कॉफ़ीस्क्रिप्ट का पर्याप्त उपयोग करते हैं, तो जेएस (अच्छा) लिखना बहुत आसान हो जाता है।

इसलिए यदि आपने जेएस को एक टन का उपयोग नहीं किया है, तो मैं आपको इसके बजाय कॉफ़ीस्क्रिप्ट सीखने का सुझाव दूंगा। आप बेहतर, क्लीनर, कम छोटी गाड़ी कोड प्राप्त करेंगे। यदि आप पहले से ही जेएस में वास्तव में धाराप्रवाह हैं, तो "वास्तविक" ऐप पर कॉफ़ीस्क्रिप्ट का उपयोग शुरू करना एक अच्छा विचार नहीं हो सकता है।

(इसके अलावा, कॉफ़ीस्क्रिप्ट ने मुझे थोड़ा सा परेशान किया है कि यह "फ़्लॉफी" कोड को प्रोत्साहित करता प्रतीत होता है। मुझे नहीं पता कि यह अच्छी बात है या बुरी बात है, लेकिन यह TMTOWTDI का एक चरम मामला है)


25
मैं जावास्क्रिप्ट के बजाय कॉफ़ीस्क्रिप्ट सीखने की सिफारिश से असहमत हूं, और यह भी विचार है कि एक बार जावास्क्रिप्ट सीखने / कॉफ़ीस्क्रिप्ट का उपयोग करने के लिए धाराप्रवाह मूल्यवान नहीं है। जावास्क्रिप्ट को समझना वेब देवों के लिए मौलिक है। जावास्क्रिप्ट को समझना कि आपका कॉफ़ीस्क्रिप्ट कोड उत्पन्न करेगा आवश्यक है। उन लोगों के लिए जो पहले से ही जावास्क्रिप्ट स्वामी हैं, कॉफ़ीस्क्रिप्ट एक जादुई और क्रांतिकारी उपकरण, एर, टूल होगा।
जिम गार्विन

3
@ जिम गार्विन, सहमत। यह महत्वपूर्ण है कि लोग अपनी जावास्क्रिप्ट सीखते हैं, मैं यह भी कहूंगा कि जावास्क्रिप्ट से पहले कोफ़स्क्रिप्ट को सीखना असंभव होगा, वैसे भी एक शुरुआत के लिए सभी संसाधन अच्छे पुराने जमाने में लिखे जाएंगे (जब तक कि रिक ऑलसेन अचानक कुछ पोस्ट करना शुरू करने का फैसला नहीं करते हैं शुरुआत जे एस ट्यूटोरियल अपने ब्लॉग पर)।
डैनियल मेंडेल

2
आपको कॉफ़ीस्क्रिप्ट लिखने के लिए जावास्क्रिप्ट को समझने की भी आवश्यकता है। ताकि कुछ गलत होने पर आप अपने कोड को डिबग कर सकें।
ब्लाइस

अद्यतन: CoffeeScript में अब पर्याप्त डॉक्स हैं, और स्रोत मानचित्र जेएस कोड को अनावश्यक रूप से डीबग करते हैं। जावास्क्रिप्ट इन दिनों सिर्फ एक लक्ष्य है। जेएस सीखना अभी भी बहुत उपयोगी है, लेकिन एक शुरुआत किसी भी जावास्क्रिप्ट को जानने के बिना, कोडिंग शुरू करने के लिए पर्याप्त कॉफीस्क्रिप्ट सीख सकता है।
कार्ल स्मिथ

3

ध्यान दें कि हालांकि एक संकलक है, आपको जावास्क्रिप्ट की गतिशील प्रकृति के कारण स्थिर जाँच नहीं मिलती है। एफएक्यू में लिखा है:

स्थैतिक विश्लेषण

CoffeeScript एक सीधे स्रोत-से-स्रोत संकलक का उपयोग करता है। किसी भी प्रकार की जाँच नहीं की जाती है, और यदि कोई चर मौजूद है या नहीं तो भी हम काम नहीं कर सकते हैं। इसका मतलब है कि हम उन सुविधाओं को लागू नहीं कर सकते हैं जो अन्य भाषाओं में मूल रूप से महंगा रनटाइम चेक के बिना बन सकती हैं। नतीजतन, इस तरह के विश्लेषण पर भरोसा करने वाली किसी भी विशेषता पर विचार नहीं किया जाएगा।

आईडीई समर्थन जावास्क्रिप्ट की तुलना में कम परिपक्व है (क्लाउड 9 में सिंटैक्स हाइलाइट समर्थन है, लेकिन एक्लिप्स जेएसडीटी में रिफैक्टोरिंग और अधिक हैं): /programming/4084167/ide-or-its-add-in-for-coffescript -programming

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.