ฉันสามารถใช้ CoffeeScript แทน JS สำหรับ node.js ได้หรือไม่


189

ข้อ จำกัด ของฉันคืออะไรหากฉันต้องการโค้ด node.js และใช้ CoffeeScript ฉันสามารถทำอะไรก็ได้ที่ฉันสามารถทำได้ใน JS

คำตอบ:


175

ใช่ CoffeeScript เพียงรวบรวมเป็น JS บริสุทธิ์ทำให้เข้ากันได้อย่างสมบูรณ์กับ node.js

ในการรัน CoffeeScripts บนโหนดคุณสามารถ:

  • พิมพ์coffee -c example.coffeeเพื่อคอมไพล์แล้วตามด้วยnode example.jsเพื่อรัน JS ที่คอมไพล์แล้ว
  • เพียงพิมพ์ coffee example.coffee

2
แต่เมื่อใช้ไฟล์ CoffeeScript อื่น ๆ ล่ะ? ฉันไม่ต้องการใส่ทุกอย่างใน 1 CoffeeScript
Jiew Meng

3
@Jiew Meng คุณสามารถรวบรวมไดเรกทอรีทั้งหมดด้วยวิธีเดียวกัน (แทนที่ example.coffee ด้วยเส้นทางไดเรกทอรี) หรือคุณสามารถrequireรวบรวมไฟล์ coffeescript ที่คอมไพล์ได้ตราบใดที่คุณrequire('coffee-script')มาก่อน
David Tang

1
ทำงานcoffee example.coffeeเพื่อการพัฒนาเป็นหลักหรือไม่ หรือมันเสถียรพอที่จะทำในการผลิต?
mrmagooey

4
ใช่ความแตกต่างระหว่างสองตัวเลือกคืออะไร?
Steve Bennett

4
ในการติดตั้งกาแฟsudo npm install -g coffee-script
Dmitry Polushkin

89

ไม่เพียง แต่คุณสามารถเรียกใช้ไฟล์ CoffeeScript ได้โดยตรงใน Node ด้วย

coffee source.coffee

คุณสามารถกำหนดให้เหมือนกับว่าเป็นไฟล์ JavaScript ตัวอย่างเช่นถ้าคุณมีlib.coffeeในไดเรกทอรีคุณสามารถเขียน

require './lib'

จากไฟล์ CoffeeScript อื่นในไดเรกทอรีเดียวกัน (เพื่อที่จะทำสิ่งนี้จากไฟล์ JavaScript คุณจะต้องเพิ่มrequire 'coffee-script'ที่ด้านบน) ดังนั้นคุณไม่จำเป็นต้องทำการรวบรวมอย่างชัดเจนภายใต้ Node เว้นแต่ว่าคุณจะทำโครงการของคุณสำหรับการปรับใช้ด้วยเครื่องมือเช่น npm

หนึ่งข้อแม้: ในการติดตามสแต็กหมายเลขบรรทัดที่คุณจะเห็นอ้างอิงถึง JavaScript ที่คอมไพล์แล้วแม้ในขณะที่คุณใช้งาน CoffeeScript โดยตรง (ดังนั้นคุณจึงไม่สามารถเข้าถึง JavaScript ได้) หลายคนพยายามที่จะแก้ไขปัญหานี้ แต่มันเป็นความท้าทายที่ยิ่งใหญ่


1
จะเกิดอะไรขึ้นกับกาแฟ / เครื่องดื่มของลูกค้า?
แฟนซี

ฝั่งไคลเอ็นต์ต้องการล่ามโฆษณาที่คุณต้องรวมไว้ในหน้า HTML
Daniele Vrut


1
เท่าที่ฉันสามารถบอกได้ว่านี่ไม่สามารถดีบั๊กได้โดยไม่ต้องเชื่อมโยง JS กับกาแฟในหัวของคุณ
Eric

1
CoffeeScript ไป JS กฎแปลงสวยง่ายที่พวกเขาได้รับการบันทึกทั้งหมดเป็นอย่างดี :)
Kedare

57

ใช่นี่เป็นคำตอบที่ง่ายกว่า คุณต้องทำ 2 ขั้นตอน

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

  2. มีrequire('coffee-script')เป็นบรรทัดแรกที่จะได้รับการดำเนินการในการserver.js app.js( อัพเดท:เนื่องจากสคริปต์กาแฟ 1.7 คุณจะต้องทำrequire('coffee-script/register'))

สิ่งนี้ลงทะเบียนคอมไพเลอร์ coffeescript ให้กับแอปของคุณและคุณสามารถเริ่มต้นจัดการไฟล์กาแฟและไฟล์ js ได้อย่างเท่าเทียมกันในตอนนี้ (หมายความว่าคุณต้องมีไฟล์กาแฟด้วย!)

วิธีนี้จะทำให้คุณต้องเขียนเพียงไฟล์เดียว (app.js) ในวานิลลาจาวาสคริปต์ แต่ข้อดีคือสภาพแวดล้อมการปรับใช้ของคุณไม่จำเป็นต้องมี coffeescript ในฐานะการพึ่งพาที่ติดตั้งทั่วโลกเริ่มต้นเพื่อเรียกใช้แอปของคุณ ในกรณีนี้คุณจะต้องคัดลอกรหัสของคุณและnpm installจะติดตั้งแพ็คเกจทั้งหมดที่จำเป็น และnpm startจะมีคุณขึ้นและทำงาน


2
ขอบคุณสำหรับข้อความเกี่ยวกับ 1.7 update @gprasant ฉันดึงผมออกมาสงสัยว่าทำไมสิ่งนี้ถึงหยุดทำงาน
pix0r

15

วิดีโอสอน

ผมเคยเห็นชุดกวดวิชาที่ดีโดยเปโดร Teixeira เขาได้สร้างซีรีย์ทั้งหมดในแบบฝึกหัดโหนด เขามีการอ้างอิงถึง nodemon สำหรับการตรวจจับอัตโนมัติและการรวบรวมและการโหลดใหม่ของไฟล์. coffee ที่แก้ไข

  1. Coffeescript และ Node.js
  2. Nodemon

nodetuts.comการเชื่อมโยงดังกล่าวข้างต้นจะแตก บทเรียนในเว็บไซต์นั้นดูดีมาก
ekillaby

ขอบคุณปลายทางลิงค์เดิมหายไป / ย้าย กำหนดให้เป็นสิ่งที่การค้นหาโดย Google เปิดเผยวิดีโอ Vimeo @countfloortiles
Mark Essel

3
ดูที่brunch.ioเพื่อดูNodeJS daemon / asset solution ที่ยอดเยี่ยม ครอบคลุม Coffee, CSS supersets และอีกมากมาย
Lincoln B

พบสิ่งนี้ในขณะที่กลับมา แต่ไม่ได้เยี่ยมชมตั้งแต่ ขอบคุณที่นำมันขึ้นมา
Mark Essel

11

คุณสามารถใช้Jitterการรวบรวมอย่างต่อเนื่องแบบง่าย ๆ สำหรับ CoffeeScript

npm install -g jitter

สมมติว่าคุณมีไฟล์ * .coffee จำนวนมากในไดเร็กทอรี coffee และต้องการรวบรวมไฟล์เหล่านั้นไปยังไดเร็กทอรี js จากนั้นเรียกใช้:

jitter coffee js

Jitter จะทำงานในพื้นหลังจนกว่าคุณจะยกเลิก (Ctrl + C) เพื่อดูการเปลี่ยนแปลงใหม่



6

ลองสิ่งนี้

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

จากนั้นทำ:

chmod +x demo.coffee
./demo.coffee

CoffeeScript มีการรวมกันอย่างแน่นหนากับโหนด เมื่อโมดูล 'coffee-script' ถูกโหลดแล้วโดยrequire('coffee-script')she-bang ที่ฉันสาธิตด้านบนหรือโดยการเรียกใช้coffee demo.coffee... เมื่อโหลดแล้วคุณสามารถrequire('./foo')นำมาใส่ได้foo.coffee


ขอบคุณมันมีประโยชน์มาก!
Mike Ellis

0

หากคุณต้องการรวบรวมไฟล์ coffeescript ทั้งหมดของคุณโดยอัตโนมัติ (ในไดเรกทอรีเดียวรวมถึง subdir) ทุกครั้งที่เปลี่ยนเป็น javascript ให้ใช้คำสั่งนี้:

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

6
เกิดอะไรขึ้นกับฟังก์ชันการทำงานของกาแฟในตัว coffee -o lib/ -cw src/
aaaidan
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.