Boilerplate Hot CoffeeScript Express

Cansado de sintaxe extra em seu Express app.js, ou quer mudar para CoffeeScript para seu código do lado do servidor? Experimente este pseudo-DSL para ver o tamanho:

run.js

coffee = require('coffee-script');
http
= require('http');
app
= require('./app');

http
.createServer(app).listen(app.get('port'), function(){
console
.log("Express server listening on port " + app.get('port'));
});

app.coffee

express = require 'express'
_
= require 'underscore'
path
= require 'path'

routes
= require './routes'
user
= require './routes/user'

module.exports = app = express()

do _.bind ->
@configure ->
@set('port', process.env.PORT || 3000)
@set('views', __dirname + '/views')
@set('view engine', 'jade')
@use(express.favicon())
@use(express.logger('dev'))
@use(express.bodyParser())
@use(express.methodOverride())
@use(@router)
@use(express.static(path.join(__dirname, 'public')))

@configure 'development', ->
@use(express.errorHandler())

@get('/', routes.index)
@get('/users', user.list)
, app

Cuidado com a indentação. O segundo argumento para bindexpress()– é recuado uma vez, mas o conteúdo da função é recuado duas vezes.