Coffeescript trông khá tuyệt. Có ai đã sử dụng nó? Ưu và nhược điểm của nó là gì?
Coffeescript trông khá tuyệt. Có ai đã sử dụng nó? Ưu và nhược điểm của nó là gì?
Câu trả lời:
Chúng tôi đã bắt đầu sử dụng CoffeeScript trong sản phẩm của mình - một trang web không công khai, về cơ bản là một ứng dụng để duyệt một số loại dữ liệu nhất định. Chúng tôi sử dụng CoffeeScript làm trình biên dịch dòng lệnh (không phải trên máy chủ, mà cuối cùng chúng tôi muốn làm).
Quan trọng là chúng ta có thể quay lại bất cứ lúc nào. Trình biên dịch coffeescript của chúng tôi chỉ tạo ra javascript có thể đọc được, vì vậy nếu ai đó thay đổi ý định hoặc không thể tìm ra điều gì đó, thì chúng tôi có thể quay lại sử dụng javascript mà coffeescript đã tạo ra - và tiếp tục viết mã.
this
hoặc gửi nhầm loại cho một hàm? Tôi không nghĩ rằng bạn đã làm bất cứ điều gì thú vị nếu bạn chưa phải "gỡ lỗi bất cứ điều gì".
-m
và bạn đã giỏi.
Chúng tôi sử dụng coffeescript cho tất cả javascript trong BusyConf . Một phần lớn BusyConf là một ứng dụng phía máy khách chạy trong trình duyệt, bao gồm hỗ trợ cho chế độ ngoại tuyến.
Tất cả mã coffeescript của chúng tôi đều được kiểm tra đầy đủ. Bản thân các bài kiểm tra được viết bằng coffeescript và sử dụng khung Qunit (được viết bằng javascript). Chúng tôi cũng đã viết một phần mở rộng cho khung Qunit để làm cho các bài kiểm tra đẹp hơn. Phần mở rộng Qunit được viết bằng CoffeeScript . Ứng dụng của chúng tôi có phiên bản di động được viết bằng CoffeeScript và nó sử dụng khuôn khổ Sencha Touch (được viết bằng javascript).
Lợi ích của điều đó là bạn có thể tự do xen kẽ các phụ thuộc javascript trong ứng dụng của mình, nhưng tất cả mã bạn viết (mã ứng dụng, các bài kiểm tra, v.v.) có thể (và nên!) Là coffeescript.
Gần một năm sau, thật đáng để đăng một số cập nhật:
Danh sách chính xác nhất về các dự án CoffeeScript có trên trang CoffeeScript's In the Wild .
Tôi muốn nói rằng hầu hết việc sử dụng sản xuất CoffeeScript cho đến nay là kết hợp với Appcelerator để tạo các ứng dụng iPhone / Android. (Wynn Netherland of The Changelog đã làm mờ cuốn sách của tôi khi mô tả CoffeeScript là "vũ khí bí mật của tôi để phát triển thiết bị di động iOS, Android và WebOS"), nhưng sẽ được sử dụng nhiều hơn trong các ứng dụng Rails sản xuất — và, tôi hy vọng, ở những nơi khác— trong những tháng tới.
Coffeescript đã được sử dụng trong trình đọc Ars Technica cho iPad http://arstechnica.com/apple/news/2010/11/introductioning-the-ars-technica-reader-for-ipad.ars
Tôi thực sự yêu Coffeescript những ngày này. Về cơ bản, toàn bộ ứng dụng HotelTonight iPhone được viết trong đó (sử dụng Appcelerator Titanium, cho phép bạn viết các ứng dụng "gốc" bằng JavaScript - chúng không phải là ứng dụng web, chẳng hạn như Phonegap). Tôi đã chọn sử dụng Coffeescript trong trường hợp này vì nó giúp tổ chức và duy trì một lượng lớn JS dễ dàng hơn rất nhiều. Tôi cũng thấy việc viết mã bằng Coffeescript (so với JavaScript) đơn giản là thú vị hơn nhiều. Chúng tôi cũng sử dụng Coffeescript cho JS trong ứng dụng Rails của mình, nhưng đây là một lượng mã cực kỳ nhỏ / nhỏ liên quan đến toàn bộ ứng dụng điện thoại.
Những ưu điểm chủ yếu phải làm với việc trở thành một cú pháp đẹp hơn, nhưng nó cũng chuẩn hóa một cơ chế OO và sau đó thêm một số bổ sung tuyệt vời (danh sách hiểu, một số thứ về phạm vi, v.v.).
Những khuyết điểm gần như bằng không đối với tôi. Điều chính là nó là một lớp bổ sung để gỡ lỗi. Bạn sẽ cần phải xem JS đã tạo (RẤT dễ đọc và đẹp mắt), sau đó ánh xạ nó với mã Coffeescript của bạn. Đối với chúng tôi, đây hoàn toàn không phải là vấn đề, mà là YMMV.
Cuối cùng, ý kiến của tôi là, không có rủi ro nào khi sử dụng nó trên một ứng dụng sản xuất, vì vậy, đừng để điều đó trở thành vật cản. Sau đó, hãy đi thử. Viết một số mã với nó, so sánh mã đó với những gì bạn viết trong JS, xem mã đã tạo để xem liệu bạn có hài lòng với việc có thể đọc mã đó cho nhu cầu gỡ lỗi hay không. Ngoài ra, hãy đi chơi trong #coffeescript IRC, mọi người ở đó rất tốt. Và cuối cùng, hãy xem nó sẽ tích hợp với ứng dụng của bạn như thế nào, chẳng hạn như quy trình "xây dựng" của bạn là gì (ví dụ: đối với Rails, hãy thử Barista, đối với thứ gì đó độc lập, chỉ cần sử dụng "coffee-w", v.v.).
Coffeescript thực sự chỉ làm cho việc viết JS dễ dàng hơn. Bạn sẽ có mã sạch hơn, hiệu quả hơn.
Điều đó đang được nói, bạn vẫn chỉ có thể làm bất cứ điều gì bạn có thể làm trong vanilla JS. Một khi bạn sử dụng đủ coffeescript, việc viết JS (tốt) trở nên dễ dàng hơn rất nhiều.
Vì vậy, nếu bạn chưa sử dụng JS nhiều, tôi khuyên bạn nên học coffescript thay thế. Bạn sẽ nhận được mã tốt hơn, sạch hơn, ít lỗi hơn. Nếu bạn đã thực sự thông thạo JS, có thể không nên bắt đầu sử dụng coffeescript trên một ứng dụng "thực".
(Ngoài ra, coffeescript làm tôi khó chịu một chút ở chỗ nó có vẻ khuyến khích mã khá "hoa mỹ". Tôi không biết đó là điều tốt hay điều xấu, nhưng có vẻ như đây là một trường hợp cực đoan của TMTOWTDI)
Lưu ý rằng mặc dù có trình biên dịch nhưng bạn không nhận được kiểm tra tĩnh do tính chất động của JavaScript. Như đã viết trong Câu hỏi thường gặp:
Phân tích tĩnh
CoffeeScript sử dụng một trình biên dịch từ nguồn sang nguồn trực tiếp. Không có kiểm tra kiểu nào được thực hiện và chúng tôi không thể xác định xem một biến thậm chí có tồn tại hay không. Điều này có nghĩa là chúng tôi không thể triển khai các tính năng mà các ngôn ngữ khác có thể xây dựng nguyên bản mà không cần kiểm tra thời gian chạy tốn kém. Do đó, bất kỳ tính năng nào dựa trên loại phân tích này sẽ không được xem xét.
Hỗ trợ IDE ít hoàn thiện hơn so với JavaScript (Cloud9 có hỗ trợ đánh dấu cú pháp, nhưng Eclipse JSDT có cấu trúc lại và hơn thế nữa): /programming/4084167/ide-or-its-add-in-for-coffescript -lập trình