Coffeescriptดูดีทีเดียว มีใครใช้บ้าง ข้อดีและข้อเสียคืออะไร?
Coffeescriptดูดีทีเดียว มีใครใช้บ้าง ข้อดีและข้อเสียคืออะไร?
คำตอบ:
เราได้เริ่มใช้ CoffeeScript ในผลิตภัณฑ์ของเราซึ่งเป็นเว็บไซต์ที่ไม่เปิดเผยต่อสาธารณะซึ่งโดยพื้นฐานแล้วเป็นแอปสำหรับเรียกดูข้อมูลบางประเภท เราใช้ CoffeeScript เป็นคอมไพเลอร์บรรทัดคำสั่ง (ไม่ใช่บนเซิร์ฟเวอร์ซึ่งในที่สุดเราก็อยากทำ)
ที่สำคัญเราสามารถย้อนกลับได้ตลอดเวลา คอมไพเลอร์ Coffeescript ของเราเป็นเพียงการผลิตจาวาสคริปต์ที่อ่านได้ดังนั้นหากใครก็ตามเปลี่ยนใจหรือคิดอะไรไม่ออกเราก็สามารถกลับไปใช้จาวาสคริปต์ที่สร้างกาแฟได้และเขียนโค้ดต่อไป
this
หรือส่งผิดประเภทไปยังฟังก์ชัน? ฉันไม่คิดว่าคุณได้ทำอะไรที่น่าสนใจถ้าคุณยังไม่ต้อง "แก้ไขข้อบกพร่องอะไรเลย"
-m
และคุณก็ทำได้ดี
เราใช้ CoffeeScript สำหรับทั้งหมดของจาวาสคริปต์ในBusyConf BusyConf ส่วนใหญ่เป็นแอปพลิเคชันฝั่งไคลเอ็นต์ที่ทำงานในเบราว์เซอร์รวมถึงการรองรับโหมดออฟไลน์
รหัสกาแฟทั้งหมดของเราได้รับการทดสอบอย่างสมบูรณ์ การทดสอบเขียนด้วยตัวเองด้วยแผ่นกาแฟและใช้กรอบQunit (ซึ่งเขียนด้วยจาวาสคริปต์) เรายังเขียนส่วนขยายไปยังกรอบ Qunit ที่ทำให้การทดสอบดีขึ้น นามสกุล Qunit ถูกเขียนในCoffeeScript แอปพลิเคชันของเรามีเวอร์ชันสำหรับมือถือซึ่งเขียนด้วย CoffeeScript และใช้เฟรมเวิร์กSencha Touch (ซึ่งเขียนด้วยจาวาสคริปต์)
สิ่งที่ต้องทำคือคุณสามารถแทรกการอ้างอิงจาวาสคริปต์ในแอปพลิเคชันของคุณได้อย่างอิสระ แต่โค้ดทั้งหมดที่คุณเขียน (รหัสแอปพลิเคชันการทดสอบ ฯลฯ ) สามารถ (และควร!) เป็นกาแฟ
เกือบหนึ่งปีต่อมาควรโพสต์การอัปเดตบางอย่าง:
รายชื่อโครงการ CoffeeScript ที่ชัดเจนที่สุดอยู่ในหน้าIn the Wildของวิกิของ CoffeeScript
ฉันจะบอกว่าการใช้งาน CoffeeScript ส่วนใหญ่จนถึงขณะนี้ร่วมกับ Appcelerator เพื่อสร้างแอป iPhone / Android (Wynn Netherland จาก The Changelog ทำให้หนังสือของฉันไม่พอใจโดยอธิบายว่า CoffeeScript เป็น "อาวุธลับของฉันสำหรับการพัฒนาอุปกรณ์เคลื่อนที่ iOS, Android และ WebOS") แต่จะมีการใช้งานมากขึ้นในการผลิตแอป Rails และฉันหวังว่าที่อื่น ๆ - ในอีกไม่กี่เดือนข้างหน้า
Coffeescript ถูกใช้ในเครื่องอ่าน Ars Technica สำหรับ iPad http://arstechnica.com/apple/news/2010/11/introducing-the-ars-technica-reader-for-ipad.ars
ฉันรัก Coffeescript ในทุกวันนี้ โดยพื้นฐานแล้วแอปพลิเคชันHotelTonight iPhone ทั้งหมดจะเขียนอยู่ในนั้น (โดยใช้ Appcelerator Titanium ซึ่งให้คุณเขียนแอป "เนทีฟ" ใน JavaScript ไม่ใช่แอปพลิเคชันบนเว็บเช่น Phonegap) ฉันเลือกใช้ Coffeescript ในกรณีนี้เพราะมันทำให้การจัดระเบียบและการดูแลรักษา JS จำนวนมากง่ายขึ้นมาก ฉันยังพบว่าการเขียนโค้ดด้วย Coffeescript (เทียบกับ JavaScript) เป็นเรื่องที่น่าพึงพอใจมากขึ้น นอกจากนี้เรายังใช้ Coffeescript สำหรับ JS ในแอพ Rails ของเรา แต่นี่เป็นโค้ดเล็กน้อย / เล็กน้อยอย่างไม่น่าเชื่อเมื่อเทียบกับแอพโทรศัพท์ทั้งหมด
ข้อดีส่วนใหญ่เกี่ยวข้องกับการเป็นเพียงไวยากรณ์ที่ดีกว่า แต่ยังทำให้กลไก OO เป็นมาตรฐานจากนั้นจึงเพิ่มส่วนเพิ่มเติมที่ดี (ความเข้าใจในรายการขอบเขตบางอย่าง ฯลฯ )
ข้อเสียเกือบเป็นศูนย์สำหรับฉัน อย่างแรกคือมันเป็นเลเยอร์พิเศษในการดีบัก คุณจะต้องดู JS ที่สร้างขึ้น (ซึ่งอ่านได้และดีมาก) จากนั้นแมปกับโค้ด Coffeescript ของคุณ สำหรับเรานี่ไม่ใช่ปัญหาเลย แต่เป็น YMMV
ในท้ายที่สุดสิ่งที่ฉันใช้ก็คือไม่มีความเสี่ยงในแง่ของการใช้งานบนแอปที่ใช้งานจริงดังนั้นอย่าปล่อยให้สิ่งนั้นเป็นตัวบล็อก จากนั้นไปทดลองใช้ เขียนโค้ดเปรียบเทียบกับสิ่งที่คุณเขียนใน JS ดูโค้ดที่สร้างขึ้นเพื่อดูว่าคุณสบายใจที่จะสามารถอ่านสิ่งนั้นเพื่อแก้ไขข้อบกพร่องได้หรือไม่ นอกจากนี้ยังออกไปเที่ยวใน #coffeescript IRC ผู้คนมากมายที่นั่น และสุดท้ายดูว่าแอปจะผสานรวมกับแอปของคุณอย่างไรเช่นกระบวนการ "สร้าง" ของคุณคืออะไร (เช่นสำหรับ Rails ลองใช้ Barista สำหรับบางอย่างแบบสแตนด์อโลนเพียงใช้ "coffee -w" ที่ให้มาเป็นต้น)
Coffeescript ทำให้การเขียน JS ง่ายขึ้นจริงๆ คุณจะได้รหัสที่สะอาดและมีประสิทธิภาพมากขึ้น
ดังที่กล่าวมาคุณยังสามารถทำสิ่งที่คุณทำได้ใน vanilla JS เท่านั้น เมื่อคุณใช้ Coffeescript เพียงพอแล้วการเขียน JS (ดี) จะง่ายขึ้นมาก
ดังนั้นหากคุณยังไม่เคยใช้ JS เลยฉันขอแนะนำให้เรียนรู้การเขียนโค้ดแทน คุณจะได้รหัสที่ดีขึ้นสะอาดขึ้นและมีข้อบกพร่องน้อยลง หากคุณใช้ JS ได้คล่องอยู่แล้วอาจไม่ใช่ความคิดที่ดีที่จะเริ่มใช้ Coffeescript ในแอป "ของจริง"
(นอกจากนี้คอฟฟี่สคริปยังทำให้ฉันรำคาญเล็กน้อยที่ดูเหมือนว่าจะส่งเสริมโค้ดที่ค่อนข้าง "ลอยๆ" ฉันไม่รู้ว่ามันเป็นสิ่งที่ดีหรือไม่ดี แต่ดูเหมือนว่า TMTOWTDI จะเป็นกรณีที่รุนแรง)
โปรดทราบว่าแม้ว่าจะมีคอมไพเลอร์ แต่คุณจะไม่ได้รับการตรวจสอบแบบคงที่เนื่องจากลักษณะไดนามิกของ JavaScript ตามที่เขียนไว้ในคำถามที่พบบ่อย:
การวิเคราะห์แบบคงที่
CoffeeScript ใช้คอมไพเลอร์ต้นทางไปยังแหล่งที่มาโดยตรง ไม่มีการตรวจสอบประเภทและเราไม่สามารถสรุปได้ว่ามีตัวแปรอยู่หรือไม่ ซึ่งหมายความว่าเราไม่สามารถใช้คุณลักษณะที่ภาษาอื่นสร้างได้โดยไม่ต้องตรวจสอบรันไทม์ที่มีราคาแพง ด้วยเหตุนี้คุณลักษณะใด ๆ ที่อาศัยการวิเคราะห์ประเภทนี้จะไม่ได้รับการพิจารณา
การสนับสนุน IDE นั้นเป็นผู้ใหญ่น้อยกว่า JavaScript (Cloud9 มีการสนับสนุนการเน้นไวยากรณ์ แต่ Eclipse JSDT มีการปรับโครงสร้างและอื่น ๆ ): /programming/4084167/ide-or-its-add-in-for-coffescript - การเขียนโปรแกรม