有没有办法将CoffeeScript发送到客户端的浏览器并将其编译为JavaScript 那里?
<script type="text/coffeescript">
square = (x) -> x * x
list = [1, 2, 3, 4, 5]
squares = (square num for num in list)
</script>
CoffeeScript编译器是用JavaScript编写的,所以我可以将其发送到客户端以在客户端的浏览器中编译/运行此代码吗?
答案 0 :(得分:48)
Jeremy已经有了这个,但让我补充一些重要的细节和警告:
coffee-script.js
是一个大文件;所以除非你实际上让你的用户运行他们自己的CoffeeScript,否则你真的不应该在生产中使用它。squares
在脚本之外不可见。相反,您需要将其更改为window.squares = ...
。coffee-script.js
在文档准备好之后才读取<script type="text/coffeescript>
标记,此时您的JavaScripts已经运行。XMLHTTPRequest
加载,这意味着它们必须与您的网站托管在同一个域中。 (某些浏览器 - Chrome,至少在XMLHTTPRequest
路径上执行file://
时也存在问题。)因此,您可能希望查看将CoffeeScript作为编译JavaScript提供的一些替代方法。如果您正在为Ruby或Python服务器开发,可以使用插件。我试图在http://github.com/jashkenas/coffee-script/wiki/Web-framework-plugins列出所有内容。
如果你正在开发一个没有后端的网站,我强烈推荐的工具是Middleman,这可以让你在开发过程中使用CoffeeScript(以及Haml和Sass,如果你想的话),然后编译并缩小它以进行生产部署。
答案 1 :(得分:8)
答案是肯定的。我不会重复@ Trevor的优秀答案,而只是提供一个你正在思考的例子:
http://forgivingworm.wordpress.com/2010/09/27/running-coffeescript-in-browser/
基本上你
以下示例HTML
<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>
答案 2 :(得分:2)
<!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
,您必须能够通过XMLHTTPRequest
访问该文件,特别是在file://
的浏览器上失败。