Làm thế nào rủi ro là sử dụng Coffeescript mà không biết Javascript? [đóng cửa]


15

Tôi là một lập trình viên có kinh nghiệm hợp lý đang cố gắng học phát triển web. Tôi đang cố gắng phát triển một ứng dụng web phía máy khách sử dụng svg hoặc canvas cho đồ họa. Tôi đã quyết định tôi muốn viết mã ứng dụng trong Coffeescript. Tôi không biết Javascript hoặc Coffeescript.

Làm thế nào cần thiết biết Javascript để phát triển web Coffeescript? Tôi có khả năng gặp phải một số vấn đề sởn gai ốc đòi hỏi tôi phải hiểu Javascript không? Tôi có thể làm việc vui vẻ với API Javascript từ Coffeescript không?

Chỉnh sửa : Tôi có thể dễ dàng tìm hiểu những điều cơ bản về Javascript trong một tuần. Tôi quan tâm hơn rằng Javascript dường như có rất nhiều cạnh sắc nét ẩn. Trong câu hỏi tính năng ngôn ngữ lạ nhất trên StackOverflow Javascript là một trong những ngôn ngữ phổ biến nhất. Nó có một đối tượng khác thường và mô hình lớp. Nó có quy tắc phạm vi tên không rõ ràng. Tôi thấy phải mất hơn một tuần để tôi thực sự biết một ngôn ngữ.

Tôi sẽ thực hiện một dự án nhỏ đơn giản để học phát triển web. Tôi có nên sử dụng Javascript hoặc Coffeescript không? Tôi nghĩ về lâu dài tôi sẽ thích Coffeescript nhưng tôi sẵn sàng bắt đầu với Javascript nếu điều đó tôi cần hiểu rõ về Javascript để sử dụng Coffeescript.


Hãy nhớ rằng CoffeeScript chỉ đơn giản biên dịch thành JavaScript. Mặc dù CS giúp dễ dàng quản lý một số sắc thái của JavaScript, nhưng nó không làm sống lại chúng; nó vẫn phải tuân theo tất cả các chức năng và quirks tương tự. Ví dụ: classtừ khóa trong CS không làm được điều gì kỳ diệu; nó chỉ đơn giản sử dụng các cơ chế kế thừa nguyên mẫu gốc của JavaScripts. Vì lý do này, tôi khuyên bạn nên có ít nhất một kiến ​​thức phụ trợ về một số "tính năng" tối nghĩa hơn của JavaScripts.
Michelle Tilley

2
CS không phải là viên đạn bạc ma thuật giúp mọi thứ dễ dàng hơn, đó là JS với một cú pháp khác. Cho dù bạn viết JS hay CS là một sở thích phong cách.
Raynos

Câu trả lời:


12

Tôi đoán nó sẽ không thực sự cần thiết, nhưng về lâu dài bạn sẽ gặp những trở ngại nếu bạn không.

Bạn cần hiểu những gì đang diễn ra trong trình duyệt và trình biên dịch CoffeeScript chuyển thành gì, vì đó là những gì trình duyệt (giả sử chúng ta đang nói về việc sử dụng CoffeeScript trong môi trường trình duyệt) sẽ cần diễn giải. Điều đó có nghĩa là đó cũng là những gì bạn sẽ cần gỡ lỗi , đặc biệt là khi xem xét CoffeeScript khá gần đây và chúng tôi vẫn có thể gặp một số lỗi và lỗi thô trong cơ chế sao chép của nó. Ngoài ra, nếu không sử dụng bất kỳ công cụ gỡ lỗi bespoke nào để gỡ lỗi, bạn sẽ cần chuyển qua mã JavaScript được tạo để gỡ lỗi bằng Firebird hoặc Chrome Dev Tools hoặc bảng điều khiển JS mà bạn chọn. Trong một số trường hợp, bạn sẽ có thể thấy lỗi JS liên quan trực tiếp đến câu lệnh CoffeeScript nguồn. Ở những người khác, vì phiên âm là không tầm thường,

Theo cách này: bạn có thể phát triển phần mềm trong Java và C # rất tốt mà không cần phải thực hiện bất kỳ sự phát triển cấp thấp nào. Tuy nhiên, bạn sẽ có một thời gian rất tồi tệ để hiểu những gì đang xảy ra và lý do tại sao bạn gặp phải các tắc nghẽn về hiệu suất và các vấn đề về bộ nhớ nếu bạn không có đầu mối và không thể đưa ra một phỏng đoán có giáo dục về những điều mà các ngôn ngữ này cần làm cho bạn trong nền, và phần nào của phỏng đoán họ có thể làm hỏng bởi vì đơn giản là họ không thể tạo ra phép màu.

Ngoài ra, nếu bạn học JavaScript, bạn sẽ nhận ra nó khó đến mức nào so với ban đầu và bạn sẽ đánh giá cao CoffeeScript vì cú pháp gọn gàng và rõ ràng hơn nữa :)


1
Hoặc bạn sẽ khó chịu tại CoffeeScript vì không phải là JavaScript;). ES5 là một ngôn ngữ đáng yêu.
Raynos

@Raynos: son môi trên heo, vẫn là lợn; tuxido trên một con dê, vẫn là một con dê, v.v ... :) Tôi đồng ý rằng ECMAScript thực sự là một ngôn ngữ rất thú vị khi bạn biết đến nó, nhưng nó có quá nhiều mâu thuẫn và cạm bẫy và cạm bẫy khiến nó trở thành gánh nặng cho cả hai người học mới và thậm chí cho các lập trình viên tiên tiến. Tuy nhiên, đó là trang web hiện đại của chúng tôi, và nó đang cải thiện và trưởng thành theo thời gian. Tôi thực sự thích ý tưởng về CoffeeScript vì nó che giấu một số điều khó chịu của ECMAScript, gần giống như cách sử dụng một số lib cho Java (hoặc thậm chí là một ngôn ngữ trên nó) làm cho nó có thể chịu được.
haylem

2
Meh, bạn chỉ cần đọc phần Tốt và tốt của bạn để đi. Những cạm bẫy không khó để tránh.
Raynos

@Raynos: Thật không may, tôi loay hoay tìm các nhà phát triển JS tiên tiến để thuê, thật không may. Những người thực sự tốt là khá khó để tìm thấy.
haylem

Ồ tôi đồng ý, cộng đồng JS đã bão hòa với các nhà phát triển tầm thường. Tôi không biết bạn nên tìm chúng ở đâu. Tôi chỉ biết một vài nhà phát triển giỏi từ phòng trò chuyện JS . Tôi đoán bởi thực tế là không có bất kỳ nhà phát triển JS giỏi nào, JS phải khó khăn. Tôi chỉ nghĩ rằng không ai bận tâm để học nó đúng cách.
Raynos

4

Bạn hỏi:

Tôi có khả năng gặp phải một số vấn đề sởn gai ốc đòi hỏi tôi phải hiểu Javascript không?

Tôi có thể nói, một cách dứt khoát, vâng. Nói chung, nếu bạn đang làm bất cứ điều gì thú vị, ít nhất bạn sẽ cần phải hiểu những gì đang diễn ra ở các cấp độ bên dưới bạn. (Đôi khi Google + cut + paste có thể cứu bạn, nhưng bạn không muốn trở thành anh chàng đó.)

Bất kỳ "lập trình viên có kinh nghiệm hợp lý" nào sau đó chọn một ngôn ngữ mới sẽ không làm bạn mất nhiều thời gian. JavaScript là một ngôn ngữ khá đơn giản. Bất cứ điều gì khó khăn về nó đều đến từ môi trường mà nó đang thực hiện: cụ thể là, một số trình duyệt web khác nhau với các ý tưởng khác nhau về cách thực hiện.

Rất nhiều thông tin "làm thế nào" bạn tìm thấy trên web sẽ được ghi bằng JavaScript, vì vậy bạn có thể sẽ có thời gian dễ dàng hơn nếu bạn học cách đọc JavaScript và dịch nó sang CoffeeScript tương đương.

Thành thật mà nói, trừ khi bạn cố tình cố gắng không biết gì, có lẽ bạn sẽ tiếp tục học JavaScript như một tác dụng phụ khi làm việc trong CoffeeScript. Vì vậy, chỉ cần bắt đầu đã.


4

Bởi vì " Nguyên tắc vàng của CoffeeScript là: 'Nó chỉ là JavaScript' ," tôi khuyên bạn nên sử dụng ít nhất một sự quen thuộc cơ bản với JavaScript. Cụ thể, hãy xem cuốn sách nhỏ của Douglas Crockford , JavaScript: The Good Parts . Bạn cũng có thể xem bài thuyết trình giới thiệu tuyệt vời của riêng Crockford về nó.

Về cơ bản, CoffeeScript bao bọc các phần tốt của JavaScript trong một gói khác: " CoffeeScript là một thử nghiệm suy nghĩ đơn giản để tưởng tượng một ngôn ngữ phơi bày một cú pháp tối thiểu cho mô hình đối tượng đẹp làm nền tảng cho JavaScript. " Bạn không cần phải biết tất cả các chi tiết, chỉ đủ để hiểu rằng JavaScript, bản thân nó, không phải là một ngôn ngữ hướng đối tượng dựa trên lớp. Nó không có lớp học nào cả. Thay vào đó, nó sử dụng " nguyên mẫu " và điều đó tạo ra một số khác biệt so với các ngôn ngữ OO khác. Jeremy Ashkenas đã dọn sạch một số phần xấu của cú pháp JavaScript, thêm một số cải tiến và làm cho nó trở nên giống Python hơn một chút .

JavaScript có một số "gotchas" nổi tiếng để đề phòng. Mặt khác, nó là một ngôn ngữ tuyệt vời và được sử dụng rất phổ biến, ngày nay. Chúng tôi sẽ không có AJAX hoặc jQuery mà không có nó, trong số những thứ khác.

Chúc may mắn với CoffeeScript của bạn!


Mua những phần tốt. Đừng là một kẻ rẻ tiền!
Raynos

@Raynos - Tôi đã làm. Tôi không! : D Nhưng tôi đã xóa đề xuất tìm kiếm không phù hợp. Cảm ơn đã chỉ ra điều đó!
John Tobler

3

Đúng. Đó không phải là ngày tận thế nếu bạn không, nhưng đúng vậy.

Tại sao? Đầu tiên, JavaScript rất dễ học. Tôi thực sự phải mất 4 ngày để học nó (tốt, hầu hết trong số đó). Ngoài ra, tôi tin rằng nó có giá trị hơn CoffeeScript. Tôi thực sự không nghĩ rằng bạn thậm chí cần CoffeScript. Nhưng nó vẫn là một công cụ tốt.


3
Tôi đã học JavaScript trong nhiều năm và tôi vẫn không nói rằng tôi thực sự biết nó. Thỉnh thoảng tôi phát hiện ra những điều về nó làm tôi ngạc nhiên. Có thể dễ dàng học cách thực hiện "Hello World", nhưng học cách dự đoán hành vi của chuyển đổi kiểu đóng và ẩn là không.
Zach

@Zach Bạn có thể quan tâm đến cuốn sách Khai sáng JavaScript . Một đánh giá viết: "Trên thực tế, tôi thực sự không thể tìm thấy bất cứ điều gì còn thiếu. Nếu bạn đã từng thắc mắc tại sao JSLint lại phàn nàn về điều gì đó, nguyên nhân sâu xa có thể sẽ được giải thích ở đâu đó trong cuốn sách này."
Michelle Tilley

1
@Zach đóng cửa không khó, chuyển đổi loại là một nỗi đau. Vấn đề lớn với JS là biết các phiên bản IE cũ hơn đang làm gì.
Raynos

@Zach: Tôi biết tôi không biết tất cả về Javascript. Tôi thậm chí không gần gũi. Nhưng tôi biết rằng những điều cơ bản và một số thứ trung gian rất dễ học.
Năng động

0

Nó phụ thuộc.

Nếu CoffeeScript trừu tượng hóa đủ JavaScript, do đó bạn không cần biết nó (như Ngôn ngữ trung gian trừu tượng hóa C #), thì vâng, bạn có thể làm bất cứ điều gì bạn muốn làm trong CoffeeScript mà không cần học JavaScript.

Nhưng kinh nghiệm của tôi cho tôi biết rằng dù tôi có cố gắng chạy trốn khỏi JavaScript bao nhiêu đi chăng nữa, khi nói đến máy khách, đôi khi tôi thực sự cần phải làm bẩn tay và viết JavaScript thuần túy.

Uh, đúng vậy. trong khi cú pháp JavaScript rất dễ và bạn có thể học nó ở điểm yếu, nhưng bạn phải mất nhiều năm để thành thạo.

IMHO, như tôi thấy CoffeeScript, nó chưa đủ chín muồi để bao quát tất cả những điều phức tạp về JavaScript. Vì vậy, tôi không có nguy cơ không học hoặc làm việc trực tiếp với JavaScript.


CoffeeScript là một bản tóm tắt rất mỏng. Bạn có thể học coffeescript trực tiếp nhưng gỡ lỗi js đã biên dịch sẽ là một nỗi đau. "Làm bẩn tay tôi và viết javascript thuần túy". JavaScript không bẩn.
Raynos

1
@Rayons, tôi không có nghĩa là JavaScript bẩn. :). Đây là một biểu thức có nghĩa là bạn nên tìm hiểu sâu hơn về các lớp bên dưới.
Saeed Neamati

điều đó giống như nói rằng "Tôi đang làm một số Lập trình trò chơi, tốt nhất hãy làm bẩn tay tôi và viết c ++" hoặc "Tôi đang làm một số AI, tốt nhất hãy làm bẩn tay tôi và viết LISP". Lớp sâu hơn duy nhất mà chúng ta có trong trình duyệt là NaCl
Raynos

0

Tài liệu về coffeescript định nghĩa coffescript theo thuật ngữ javascript tương đương. Nếu bạn không hiểu javascript, bạn cũng sẽ không hiểu coffeescript.

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.