有没有办法将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编写的,那么我可以把它发送给客户端来在客户端浏览器中编译/运行这个代码吗?
杰里米已经有了这个,但是让我补充一些重要的细节和注意事项:
- 在39k gzip(与29k的jQuery相比),
coffee-script.js
是一个很大的文件, 所以除非你真的让用户运行他们自己的CoffeeScript,否则你不应该在生产中使用它。 - 正如在文档中所提到的,每个CoffeeScript代码片段都将以其自己的匿名封闭。 因此,您的示例代码片段将不会执行任何操作 – 在脚本之外无法显示
squares
。 相反,你会想要将其更改为window.squares = ...
- 所有CoffeeScript代码,无论是外部还是内联,都将在页面上的所有JavaScript代码之后运行。 这是因为在文档准备好之前,
coffee-script.js
不会读取<script type="text/coffeescript>
标签,到时候JavaScript已经运行了。 - 远程CoffeeScripts是通过
XMLHTTPRequest
加载的,这意味着它们必须与您的站点位于同一个域中。 (某些浏览器(至less是Chrome)在file://
path上执行XMLHTTPRequest
也有问题。 - 目前,不能保证不同的远程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/
基本上你
- 使用文本/咖啡标记标记您的咖啡标记
- 在页面上的所有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”> </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>
<!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://
浏览器上失败。