Tôi có thể sử dụng CoffeeScript thay vì JS cho node.js không?


189

Những hạn chế của tôi là gì nếu tôi muốn mã node.js và sử dụng CoffeeScript? Tôi có thể làm bất cứ điều gì tôi có thể làm trong JS không?

Câu trả lời:


175

Có, CoffeeScript chỉ đơn giản biên dịch thành JS thuần, làm cho nó hoàn toàn tương thích với node.js.

Để chạy CoffeeScripts trên nút, bạn có thể:

  • Nhập coffee -c example.coffeeđể biên dịch, theo sau là node example.jsđể chạy JS đã biên dịch.
  • Đơn giản chỉ cần gõ coffee example.coffee

2
Nhưng những gì về khi sử dụng các tệp CoffeeScript khác? Tôi không muốn đặt mọi thứ vào 1 CoffeeScript
Jiew Meng

3
@Jiew Meng bạn có thể biên dịch toàn bộ thư mục theo cùng một cách (thay thế example.coffee bằng đường dẫn thư mục) hoặc bạn có thể requiregiải nén các tệp coffeescript miễn là require('coffee-script')trước đó.
David Tang

1
Là chạy coffee example.coffeechủ yếu để phát triển? Hoặc nó có đủ ổn định để làm trong sản xuất?
mrmagooey

4
Vâng, sự khác biệt giữa hai lựa chọn là gì?
Steve Bennett

4
Để cài đặt cà phêsudo npm install -g coffee-script
Dmitry Polushkin

89

Bạn không chỉ có thể chạy các tệp CoffeeScript trực tiếp trong Node với

coffee source.coffee

bạn cũng có thể yêu cầu chúng như thể chúng là các tệp JavaScript. Ví dụ, nếu bạn có lib.coffeetrong một thư mục, bạn có thể viết

require './lib'

từ một tệp CoffeeScript khác trong cùng thư mục. (Để thực hiện việc này từ tệp JavaScript, bạn sẽ phải thêm require 'coffee-script'ở trên cùng.) Vì vậy, bạn không bao giờ phải thực hiện việc biên dịch rõ ràng trong Node, trừ khi bạn đóng gói dự án của mình để triển khai bằng một công cụ như npm.

Một cảnh báo: Trong dấu vết ngăn xếp, số dòng bạn sẽ thấy đề cập đến JavaScript được biên dịch, ngay cả khi bạn đang chạy CoffeeScript trực tiếp (vì vậy bạn không có quyền truy cập vào JavaScript). Rất nhiều người đang cố gắng khắc phục điều này, nhưng đó là một thách thức lớn.


1
Điều gì xảy ra với cà phê phía khách hàng / js?
ưa thích

phía khách hàng cần thông dịch viên quảng cáo mà bạn phải đưa vào trang HTML.
Daniele Vrut

1
@fancy, coffescript> 1.6.1 hỗ trợ bản đồ nguồn
MegaTux

1
Theo như tôi có thể nói điều này là không thể gỡ lỗi nếu không tương quan với cà phê trong đầu bạn.
Eric

1
Các quy tắc chuyển đổi từ Coffeescript sang JS khá đơn giản, tất cả đều được ghi chép tốt :)
Kedare

57

Vâng, đây là một câu trả lời khác nhau và đơn giản hơn. Bạn cần làm 2 bước.

  1. npm install coffee-script --save # I assume you would have done this already.

  2. require('coffee-script')như dòng đầu tiên sẽ được thực hiện trong server.jscác app.js. ( CẬP NHẬT: kể từ tập lệnh cà phê 1.7, bạn sẽ phải làmrequire('coffee-script/register'))

Điều này đăng ký trình biên dịch coffeescript cho ứng dụng của bạn và bạn có thể bắt đầu xử lý các tệp cà phê và tệp js như nhau ngay bây giờ (có nghĩa là bạn cũng có thể yêu cầu các tệp cà phê!).

Phương pháp này sẽ yêu cầu bạn chỉ viết một tệp (app.js) trong javascript vanilla. Nhưng lợi thế là môi trường triển khai của bạn không cần phải có coffeescript như một phụ thuộc ban đầu được cài đặt trên toàn cầu để chạy ứng dụng của bạn. Trong trường hợp này, bạn chỉ cần sao chép mã của mình và npm installsẽ cài đặt tất cả các gói cần thiết. Và npm startsẽ có bạn lên và chạy


2
Cảm ơn bạn đã lưu ý về bản cập nhật 1.7 @gprasant, tôi đã nhổ tóc tự hỏi tại sao điều này ngừng hoạt động.
pix0r

15

Video hướng dẫn

Tôi đã xem một loạt hướng dẫn tuyệt vời của Pedro Teixeira . Anh ta đang xây dựng một loạt toàn bộ về hướng dẫn nút. Anh ta bao gồm tham chiếu đến gật đầu để tự động phát hiện và biên dịch và tải lại các tệp .coffee đã chỉnh sửa.

  1. Coffeescript và Node.js
  2. Cái gật đầu

Các liên kết gật đầu ở trên bị hỏng. Các hướng dẫn trên trang web đó trông tuyệt vời, mặc dù.
ekillaby

cảm ơn, các điểm đến liên kết ban đầu đã biến mất / di chuyển. Đặt chúng vào những gì tìm kiếm google đã tiết lộ, video Vimeo @countfloortiles
Mark Essel

3
Xem brunch.io để biết giải pháp đường dẫn tài sản / daemon NodeJS tuyệt vời. Bao gồm Cà phê, CSS supersets và nhiều hơn nữa.
Lincoln B

phát hiện ra điều này một thời gian trước, nhưng đã không truy cập kể từ đó. cảm ơn vì đã đưa nó lên
Mark Essel

11

Bạn có thể sử dụng Jitter , một trình biên dịch liên tục đơn giản cho CoffeeScript.

npm install -g jitter

Giả sử bạn có một loạt các tệp * .coffee trong thư mục cà phê và muốn biên dịch chúng vào thư mục js. Sau đó chạy:

jitter coffee js

Jitter chạy trong nền cho đến khi bạn chấm dứt nó (Ctrl + C), xem các thay đổi mới.



6

Thử cái này

#!/usr/bin/env coffee
v = 78
console.log "The value of v is '#{v}'"

Sau đó làm:

chmod +x demo.coffee
./demo.coffee

CoffeeScript có tích hợp khá chắc chắn với nút. Khi mô-đun 'tập lệnh cà phê' được tải, bằng cách require('coffee-script'), bằng cách cô ấy giới thiệu ở trên hoặc bằng cách chạy coffee demo.coffee... một khi đã tải, bạn có thể sử dụng require('./foo')để đưa vàofoo.coffee


Cảm ơn, điều đó rất hữu ích!
Mike Ellis

0

Nếu bạn muốn tự động biên dịch tất cả các tệp coffeescript của mình (trong một thư mục bao gồm cả thư mục con) mỗi khi chúng thay đổi thành javascript, chỉ cần sử dụng lệnh này:

find . -name '*.coffee' -type f -print0 | xargs -0 coffee -wc

6
Có gì sai với chức năng coffeescript tích hợp? coffee -o lib/ -cw src/
aaaidan
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.