Using on the browser is a possibility, but it is experimental (and experimental on a experimental language can get really crazy). But coffeescript is rapidly moving from a experimental language to a more stabilished one.
And if you are using Continuous deployment, the compiler step can be used only explicitely on the deployment fase, while keeping the js compiler on the browser only. I however find usefull seeing the compiled js even when developing (the emacs mode for coffeescript also helps a lot here), as chrome and other browsers still only debugs js (there is some work in allowing it to debug compiled languages).
coffee -cw *.coffee
will watch all of the CoffeeScript files in a directory and compile them to JavaScript whenever they change, which is what I use for keeping things updated in development, and the production deployment scripts I run compile the CoffeeScript to JS before deploying.Aside from having to set up a terminal running the compilation task when I start a dev session, the fact that it has to be compiled doesn't affect me at all.
#!/bin/bash
coffee -wcl public/ && coffee -wcbl ./
Uses the local function scope wrapper for js files served to client side in the public folder and removes function scope wrapper for server side files in the entire directory tree.
Type ./dev and I'm up and running.