Có ai đã sử dụng Coffeescript cho một ứng dụng sản xuất chưa? [đóng cửa]


94

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:


113

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).

PROS (cho chúng tôi):

  • Nó loại bỏ rất nhiều sự lộn xộn không cần thiết trong javascript (ví dụ: dấu ngoặc nhọn, dấu chấm phẩy, một số dấu ngoặc vuông) đến mức mã sạch hơn và dễ hiểu hơn trong nháy mắt so với javascript
  • Ít hơn 20-30% dòng mã so với javascript (để làm chính xác điều tương tự)
  • CoffeeScript không chỉ loại bỏ tiếng ồn mà còn thêm các từ khóa, lớp và các tính năng như heredocs để làm cho việc viết mã trở nên sạch sẽ và thú vị hơn
  • Với những điểm trước đây, chắc chắn mã trong CoffeeScript sẽ nhanh hơn một khi bạn học các dây

CONS

  • Khi sử dụng trình biên dịch dòng lệnh: để gỡ lỗi, bạn đang xem mã khác nhau khi giải quyết vấn đề (javascript) như khi viết bản sửa lỗi (coffeescript). Tuy nhiên, hơi khó tin, CoffeeScript của chúng tôi tuyệt vời đến mức chúng tôi chưa bao giờ cần gỡ lỗi nó!

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ã.


1
PandaWood đánh nó ngay trên tất cả các điểm. Tôi đã sử dụng nó trong sản xuất cho tất cả khách hàng của mình trong năm nay với thành công lớn. Chúng tôi đang sử dụng Buildr làm trình biên dịch vì nó hỗ trợ gói các tệp coffeescript và javascript thành một. github.com/balupton/buildr.npm
balupton

13
"CoffeeScript của chúng tôi thật tuyệt vời, chúng tôi chưa bao giờ cần gỡ lỗi nó!" Ơ ... vậy hả? Dữ liệu của bạn luôn phù hợp với mong đợi của bạn? Bạn chưa bao giờ gặp trường hợp không mong muốn thishoặ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ì".
Ryan Florence

8
@rpflo nếu bạn nhận thấy các từ "Chúng tôi đã bắt đầu sử dụng Coffeescript ..." và khớp điều đó với tuyên bố vi phạm và đưa nó vào ngữ cảnh nhẹ nhàng mà nó được đưa ra - tôi nghĩ ai cũng có thể đồng ý , điều đó có rất ít lý do để lo lắng. Nó hoàn toàn có khả năng, từ các văn bản tôi đã đưa ra, mà chúng tôi đã chỉ đơn giản là chuyển đổi javascript đã làm việc vào coffeescript, do đó gỡ lỗi không nghiêm trọng là chưa cần thiết
PandaWood

3
Về Con ', giờ đây với Bản đồ nguồn không thực sự là vấn đề nữa, chỉ cần biên dịch -mvà bạn đã giỏi.
omeid

@omeid điểm tốt. Tôi đã theo dõi trên đó và đã có thành công nguồn-map làm việc trong Chrome với coffeescript
PandaWood

27

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.


24

Gần một năm sau, thật đáng để đăng một số cập nhật:

  1. Ruby on Rails 3.1 đang kết hợp hỗ trợ CoffeeScript chính thức, có nghĩa là nó sẽ được sử dụng nhiều hơn trong thế giới thực. Tôi đã có một buổi nói chuyện tại RailsConf vào tháng trước, nơi hầu hết những người tham dự chưa từng nghe nói về CoffeeScript trước đây và — với sự chứng thực mạnh mẽ của dhh — rất háo hức tham gia vào nó.
  2. Có một cuốn sách trên CoffeeScript, hiện đang ở dạng sách điện tử và sẽ sớm được in từ The Pragmatic Bookshelf. Nó được gọi là CoffeeScript: Accelerated JavaScript Development , và nó thực sự là của bạn. Nó dựa trên CoffeeScript 1.1.1.
  3. Ngôn ngữ thực sự đã thay đổi rất ít trong sáu tháng từ 1.0 đến 1.1.1; gần như tất cả các thay đổi đủ điều kiện là "sửa lỗi". Tôi đã phải thực hiện rất ít chỉnh sửa đối với mã trong sách để chuyển đổi từ 1.0.1 sang 1.1.1. Tuy nhiên, tôi chắc chắn rằng ngôn ngữ này sẽ có nhiều thay đổi đáng kể hơn trong tương lai.

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.



10

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.).


3

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)


25
Tôi không đồng ý với đề xuất học coffeescript thay vì javascript, và cũng có ý kiến ​​cho rằng một khi đã thông thạo javascript học / sử dụng coffeescript thì không có giá trị. Hiểu javascript là điều cơ bản đối với các nhà phát triển web. Hiểu javascript mà mã coffeescript của bạn sẽ tạo là cần thiết. Đối với những người đã là bậc thầy về javascript, coffeescript sẽ là một công cụ kỳ diệu và mang tính cách mạng.
Jim Garvin

3
@Jim Garvin, đã đồng ý. Điều quan trọng là mọi người phải học javascript của họ, tôi cũng muốn nói rằng có lẽ sẽ không thể học coffeescript trước javascript vì tất cả các tài nguyên cho người mới bắt đầu sẽ được viết bằng js cổ điển (trừ khi Rick Olsen đột nhiên quyết định bắt đầu đăng một số bắt đầu hướng dẫn JS trên blog của anh ấy).
Daniel Mendel

2
Bạn cũng cần hiểu Javascript để viết Coffeescript. Để bạn có thể gỡ lỗi mã của mình khi có sự cố.
Blaise

Cập nhật: CoffeeScript hiện có đủ tài liệu và bản đồ nguồn làm cho việc gỡ lỗi mã JS không cần thiết. Ngày nay JavaScript chỉ là một mục tiêu. Học JS vẫn rất hữu ích, nhưng một người mới bắt đầu có thể học đủ CoffeeScript mà không cần biết bất kỳ JavaScript nào, để bắt đầu viết mã.
Carl Smith

3

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

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.