Is there a way to send CoffeeScript to the client\'s browser and have it compiled to JavaScript there?
Jeremy already has this one, but let me add some important details and caveats:
coffee-script.js
is a big file; so unless you're actually letting your users run their own CoffeeScript, you really shouldn't use it in production.squares
wouldn't be visible outside of the script. Instead, you'd want to change it to window.squares = ...
.coffee-script.js
doesn't read your <script type="text/coffeescript>
tags until after the document is ready, by which time your JavaScripts have already run.XMLHTTPRequest
, which means that they must be hosted on the same domain as your site. (Certain browsers—Chrome, at least—also have a problem with doing XMLHTTPRequest
s on file://
paths.)So, you might want to look at some alternatives for serving CoffeeScript as compiled JavaScript instead. If you're developing for a Ruby or Python server, there are plugins available. I've tried to list them all at http://github.com/jashkenas/coffee-script/wiki/Web-framework-plugins.
If you're developing a site without a backend, a tool I highly recommend looking at is Middleman, which lets you work with CoffeeScript (as well as Haml and Sass, if you want) during development, then compile and minify it for production deployment.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8"/>
<title>CoffeScript on browser</title>
</head>
<body>
<script type="text/coffeescript">
alert 'It works!'
</script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/coffee-script/1.7.1/coffee-script.min.js"></script>
</body>
</html>
src
you must be able to access the file via XMLHTTPRequest
, in particular it fails on browsers with file://
.The answer is yes. I won't repeat @Trevor's excellent answer, but rather just provide an example of what you're thinking about:
http://forgivingworm.wordpress.com/2010/09/27/running-coffeescript-in-browser/
Basically you
Sample HTML below
<html>
<head>
<title>In-Browser test</title>
<script type=”text/javascript” src=”http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js”> </script>
<script type=”text/coffeescript”>
$ -> $(‘#header‘).css ‘background-color‘, ‘green‘
</script>
<script type=”text/javascript” src=”http://github.com/jashkenas/coffee-script/raw/master/extras/coffee-script.js”> </script>
</head>
<body>
<h1 id=”header” style=”color:white”>CoffeeScript is alive!</h1>
</body>
</html>