CoffeeScriptでhttpサーバ

簡潔に書けるなあとは思いつつ、コンパイルが面倒だったり、そもそもJavaScriptを直に書いた方が良いよなあと思ったり。

index.coffee
http = require 'http'
dataSection = require 'data-section'

dataSection.get (err, data) ->
  throw err if err

  server = http.createServer()
  server.on 'request', (req, res) ->

    if req.method == 'GET' or req.method == 'HEAD'
      res.writeHead 200,
        'content-length': Buffer.byteLength data.index, 'utf8'
        'content-type': 'text/html; charset=utf-8'
      res.end if req.method == 'GET' then data.index else ''

    else
      res.writeHead 501,
        'content-type': 'text/plain; charset=utf-8'
      res.end '501 Not Implemented'

    return
  server.listen 3000

  return

###__DATA__
@@ index
<!DOCTYPE html>
<meta charset="utf-8">
<title>index</title>
<p>index</p>
__DATA__###
Makefile
files = $(wildcard *.coffee)

.PHONY: all
all: $(files:.coffee=.js)

.PHONY: clean
clean:
	$(RM) $(files:.coffee=.js)

.SUFFIXES: .coffee .js
.coffee.js:
	./node_modules/.bin/coffee -bc $<

実行する

$ npm i data-section coffee-script
$ make
$ node index.js


流石に飽きてきたのでもうちょっと違う事やりたい。