在JavaScript中使用任何库,框架等之前,我对它的机制很感兴趣。 我想了解 CoffeeScript 的工作原理。
我的假设:
第1步:编译器从以下字符串获取字符串:
<script type="text/coffeescript"></script>
第二:它创建一个类似字符串的js代码:
it = "test" -> "var it = 'test';"
并且最后一步编译器使用eval()来实现代码。
P.S .: 它为何变得流行? 它对性能有影响,毕竟我们花了很多时间来执行.coffee文件。
答案 0 :(得分:3)
通常的方法是编译CoffeeScript代码服务器端,然后链接HTML文件中的JavaScript。这通常使用coffeee
命令行实用程序执行,但您也可以找到为您处理它的构建系统,例如Grunt,Brunch等。您还可以编写Makefile
或简单shell脚本为你处理这个问题。
使用某些构建系统和coffee
工具时,您可以选择让工具监控您的CoffeeScript源,并在保存后立即重新编译。这非常方便。请查看文档中的“监视”功能。
我对CoffeeScript流行度的猜测是,它为您提供了一个可以说明的更好的语法。就个人而言,我发现CoffeeScript的最大优点是添加了类似于列表推导的语法糖,以及它将所有内容视为表达式的事实(例如,从函数返回for循环或if-else块的能力)。您还可以找到更加接受这种想法的语言,如Coco,LiveScript。
需要注意的一点是CoffeeScript不是解释性语言。它被编译(编译成另一种语言),然后由目标运行时(JavaScript引擎)执行。因此,它具有与等效JavaScript代码相同的性能特征。是否可以手动编写更高性能的代码是另一个问题。你可能可以。无论如何,谈论CoffeeScript的“表现”有点傻。至于已编译的CoffeeScript的性能,熟悉JavaScript,你可以在这里和那里进行优化,但我没有必要这样做。
答案 1 :(得分:2)
使用Coffee Script的常用方法是在构建过程中编译。因此,您可以编写Coffee Script,然后将其编译为纯Javascript,然后在您的Web应用程序中使用它。
这不会带来运行时成本,因为浏览器只会加载Javascript,即:
<script type="text/javascript" src="compiled-js-file.js"></script>
您可以直接使用coffee
命令进行编译,或者使用Gulp或Grunt等更实际的构建系统。
您可以看到Coffe Script网站,看看它有哪些功能(这是吸引开发人员的原因)。在我看来,最有用的是:
此外,这意味着当您调试此类Web应用程序时,您将无法查看错误的确切位置(或咖啡源中的设置断点)。幸运的是,我们有source maps来解决这个问题。