CoffeeScript๋ ํ๋ ํ๋ก ํธ์๋ ๊ฐ๋ฐ ์ํ๊ณ์์ ๋งค์ฐ ์ธ๊ธฐ ์์๋ ์ธ์ด์๊ณ , ์ง๊ธ๋ ํน์ ํ๋ก์ ํธ๋ ๋ ๊ฑฐ์ ์์คํ , ๊ฐ๊ฒฐํ ๋ฌธ๋ฒ์ ์ ํธํ๋ ๊ฐ๋ฐ์๋ค ์ฌ์ด์์๋ ๊พธ์คํ ์ฐ์ด๊ณ ์์ต๋๋ค. ์ด ๊ธ์ 2025๋ ๊ธฐ์ค CoffeeScript๊ฐ ์ด๋ค ์ธ์ด์ธ์ง, ์ด๋ค ํน์ง์ ๊ฐ์ง๊ณ ์๊ณ , ์ง๊ธ ์์ ์์ ์ด๋ป๊ฒ ์ ๊ทผํด์ผ ํ๋์ง๊น์ง ๊น์ด ์๊ฒ ์ค๋ช ํฉ๋๋ค.
์๋ ๋ด์ฉ์ ํตํด ์ฒ์ ์ ํ๋ ์ฌ๋๋ ์ฝ๊ฒ ์ดํดํ๊ณ , ํ์ฉ๊น์ง ๊ฐ๋ฅํ๋๋ก ์ ๋ฆฌํ์ต๋๋ค.
(์ฃผ์: ์์ฒญ์ ๋ฐ๋ผ ๋ณํ ๋ฌธ์๋ ์ ํ ์ฌ์ฉํ์ง ์์์ต๋๋ค)
CoffeeScript๋ JavaScript๋ก ์ปดํ์ผ๋๋ ์ธ์ด์ด๋ฉฐ, ๋ณด๋ค ๊ฐ๊ฒฐํ๊ณ ์ฌ๋์ด ์ฝ๊ธฐ ์ข์ ํํ๋ก ์ฝ๋๋ฅผ ์์ฑํ ์ ์๋๋ก ์ค๊ณ๋์์ต๋๋ค. Python๊ณผ Ruby ์ํฅ์ ํฌ๊ฒ ๋ฐ์๊ธฐ ๋๋ฌธ์ ๊ฐ๋ ์ฑ์ด ๋๊ณ ๋ฌธ๋ฒ ์์ฒด๊ฐ ์์ฐ์ค๋ฝ๊ณ ์งง์ต๋๋ค.
ํต์ฌ ๊ฐ๋ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
2010๋ ๋ ์ด๋ฐ JavaScript๋ ๋ฌธ๋ฒ์ ๋ถํธํจ์ด ๋ง์๊ณ , ES6 ์ด์ ์๋ ํจ์ ์ ์ธ ๋ฐฉ์์ด๋ ์ค์ฝํ ์ฒ๋ฆฌ ๋ฐฉ์์ด ๋ณต์กํ์ต๋๋ค. CoffeeScript๋ JavaScript์ ๋ฌธ์ ์ ์ ๋ณด์ํ๊ณ ๋ ์งง๊ณ ์์ ์ฝ๋๋ฅผ ์์ฑํ๊ธฐ ์ํด ๋ฑ์ฅํ์ต๋๋ค.
์ดํ ES6๊ฐ ๋ฑ์ฅํ๋ฉด์ CoffeeScript๊ฐ ์ ๊ณตํ๋ ๊ธฐ๋ฅ์ ๋๋ถ๋ถ์ด JavaScript์ ์ ์์ผ๋ก ํฌํจ๋์๊ณ , ๋๋ฌธ์ ์์ ๋งํผ ์๋์ ์ธ๊ธฐ๋ผ ํ๊ธฐ ์ด๋ ต์ต๋๋ค.
ํ์ง๋ง ์ฌ์ ํ ํ ์ค๋ก ํํํ๋ ๊ธฐ๋ฅ์ ์คํ์ผ๊ณผ ๊ฐ๋ฐ ์๋ ๋๋ฌธ์ ์ ์ง๋๋ ์ํ๊ณ๊ฐ ์กด์ฌํฉ๋๋ค.
์๋๋ CoffeeScript์์ ์์ฃผ ์ฐ๋ ํจํด์ JavaScript์ ๋น๊ตํ์ฌ ๋ณด์ฌ์ฃผ๋ ๋ฐฉ์์ ๋๋ค.
JavaScript
let name = "yujin"
CoffeeScript
name = "yujin"
JavaScript
const add = function(a, b) {
return a + b
}
CoffeeScript
add = (a, b) -> a + b
JavaScript
if score > 90 {
result = "excellent"
} else {
result = "good"
}
CoffeeScript
result = if score > 90 then "excellent" else "good"
JavaScript
for (let i = 0; i < 5; i++) {
console.log(i)
}
CoffeeScript
for i in [0..4]
console.log i
๊ณผ๊ฑฐ Backbone, Rails ํ๊ฒฝ ๋ฑ์์ CoffeeScript๋ก ๊ตฌ์ฑ๋ ํ๋ก์ ํธ๊ฐ ์์ง๋ ์ด์ ์ค์ ๋๋ค.
์งง๊ณ ์ง๊ด์ ๋ฌธ๋ฒ ๋๋ถ์ ๋น ๋ฅธ ํ๋กํ ํ์ดํ์ ์ ๋ฆฌํฉ๋๋ค.
์ต์ํ ๋ฌธ๋ฒ๊ณผ ๋์ ์์ฐ์ฑ์ ์ด์ ๋ก ์ง๊ธ๋ ์ ํํ๋ ๊ฐ๋ฐ์๋ค์ด ์กด์ฌํฉ๋๋ค.
Node ํ๊ฒฝ์์ ๋ค์ ๋ช ๋ น์ผ๋ก ์ค์นํฉ๋๋ค.
npm install -g coffeescript
์ปดํ์ผ์ ๋ค์ ๋ช ๋ น์ผ๋ก ์งํํฉ๋๋ค.
coffee -c ํ์ผ๋ช
.coffee
์ค์๊ฐ ๊ฐ์ ๋ชจ๋๋ ์ ๊ณต๋ฉ๋๋ค.
coffee -cw src/
CoffeeScript ํ๋ก์ ํธ๋ฅผ JavaScript๋ก ๋ณํํ ๋๋ ๋ค์ ์ํฌํ๋ก์ฐ๋ฅผ ๊ถ์ฅํฉ๋๋ค.
CoffeeScript๋ 2025๋ ๊ธฐ์ค ๋ฉ์ธ์คํธ๋ฆผ ์ธ์ด๋ผ๊ณ ํ๊ธด ์ด๋ ต์ง๋ง, ๊ฐ๊ฒฐํ ๋ฌธ๋ฒ๊ณผ ๋์ ๊ฐ๋ ์ฑ ๋๋ถ์ ์ฌ์ ํ ๊ฐ์น๊ฐ ์๋ ๋๊ตฌ์ ๋๋ค. ํนํ ๊ธฐ์กด ์์คํ ์ ์ง๋ณด์, ๋น ๋ฅธ ํ๋กํ ํ์ ์์ฑ, ๊ฐ๊ฒฐํ ์คํฌ๋ฆฝํธ ์์ ์์๋ ํ์ญ์ผ๋ก ์ถฉ๋ถํ ํ์ฉํ ์ ์์ต๋๋ค.
๋ก์ปฌ ๋คํธ์ํฌ ํ๊ฒฝ์ ์กฐ๊ธ์ด๋ผ๋ ๋ค๋ค๋ณธ ์ฌ๋์ด๋ผ๋ฉด ํ ๋ฒ์ฏค์ ๋ง์ฃผ์น๋ ์ต์ํ ๋จ์ด๊ฐ ์์ต๋๋ค. ๋ฐ๋ก NetBIOS์ NBT์ ๋๋ค.…
์๋ ํ์ธ์! ํ๋ ์น ๊ฐ๋ฐ์์ ๋ฐ์ดํฐ ๊ตํ์ ํต์ฌ์ธ JSON(JavaScript Object Notation)์ ๋์ฑ ๊ฐ๋ ฅํ๊ณ ์์ ์ ์ผ๋ก ๋ง๋ค์ด์ฃผ๋ ๋๊ตฌ,…
โ ECMAScript 3(E3)๋ ๋ฌด์์ผ๊น ECMAScript 3๋ 1999๋ ์ ๊ณต์ํ๋ ์๋ฐ์คํฌ๋ฆฝํธ ํ์ค์ด๋ค. ์ง๊ธ ๋ณด๋ฉด ์ค๋๋ ๊ธฐ์ ๊ฐ์ง๋ง,…
ํ๋์ ์ธ ํ๋ก๊ทธ๋๋ฐ ํ๊ฒฝ์์ ๋ฉ๋ชจ๋ฆฌ ๋์(Memory Leak)๋ ์ฌ์ ํ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฑ๋ฅ ์ ํ์ ์ถฉ๋์ ์ผ์ผํค๋ ์ฃผ์ ์์ธ ์ค…
(Critical Rendering Path, ํต์ฌ ๋ ๋๋ง ๊ฒฝ๋ก ์๋ฒฝ ์ดํด) ์น ๋ธ๋ผ์ฐ์ ์ ์ฃผ์๋ฅผ ์ ๋ ฅํ๊ณ ์ํฐ๋ฅผ ๋๋ฅด๋ ์๊ฐ,…
์น ๊ฐ๋ฐ์ ํ๋ค ๋ณด๋ฉด ๋๊ตฌ๋ ํ ๋ฒ์ฏค ๋ถ์์ ๊ธ์จ์ CORS ์ค๋ฅ(Cross-Origin Resource Sharing Error)๋ฅผ ๋ง๋๊ฒ…