有没有办法将CoffeeScript发送到客户端的浏览器,并将其编译为JavaScript *?

有没有办法将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编写的,那么我可以把它发送给客户端来在客户端浏览器中编译/运行这个代码吗?

杰里米已经有了这个,但是让我补充一些重要的细节和注意事项:

  1. 在39k gzip(与29k的jQuery相比), coffee-script.js是一个很大的文件, 所以除非你真的让用户运行他们自己的CoffeeScript,否则你不应该在生产中使用它。
  2. 正如在文档中所提到的,每个CoffeeScript代码片段都将以其自己的匿名封闭。 因此,您的示例代码片段将不会执行任何操作 – 在脚本之外无法显示squares 。 相反,你会想要将其更改为window.squares = ...
  3. 所有CoffeeScript代码,无论是外部还是内联,都将在页面上的所有JavaScript代码之后运行。 这是因为在文档准备好之前, coffee-script.js不会读取<script type="text/coffeescript>标签,到时候JavaScript已经运行了。
  4. 远程CoffeeScripts是通过XMLHTTPRequest加载的,这意味着它们必须与您的站点位于同一个域中。 (某些浏览器(至less是Chrome)在file://path上执行XMLHTTPRequest也有问题。
  5. 目前,不能保证不同的远程CoffeeScripts运行的顺序。 我为此提交了一个补丁,但它尚未正式成为CoffeeScript的一部分。 看到这个拉请求 。

因此,您可能需要查看将CoffeeScript作为JavaScript编译的替代方法。 如果你正在开发一个Ruby或Python服务器,有插件可用。 我试图列出所有在http://github.com/jashkenas/coffee-script/wiki/Web-framework-plugins

如果您正在开发一个没有后端的网站,我强烈推荐的一个工具是Middleman ,它允许您在开发过程中使用CoffeeScript(以及Haml和Sass,如果需要的话),然后编译和缩小它以进行生产部署。

答案是肯定的。 我不会重复@特雷弗的优秀答案,而只是提供一个你正在考虑的例子:

http://forgivingworm.wordpress.com/2010/09/27/running-coffeescript-in-browser/

基本上你

  1. 使用文本/咖啡标记标记您的咖啡标记
  2. 在页面上的所有coffeescript之后包含coffee-script.js(编译器将按顺序评估和编译所有的coffeescript)

下面的示例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&#8221;> </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&#8221;> </script> </head> <body> <h1 id=”header” style=”color:white”>CoffeeScript is alive!</h1> </body> </html> 
 <!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> 
  • CoffeeScript必须在要运行的脚本之后加载。
  • 如果使用src ,则必须能够通过XMLHTTPRequest访问文件,特别是在使用file://浏览器上失败。