coffeescript
想象一下一个绝望的情况:您在Braughsir的土地上(毗邻Marrcup和Knoad王国),为了营救您喜欢的性别的美丽皇室,您必须走100英里。
每走几步,您都必须旋转一下。 还有地雷。 掉落的分号地雷,未闭合的地雷,全球可变地雷,所有神奇的地雷等着你跳下后10分钟,它们会静静地爆炸并炸毁你的腿。
现在想象一位仙女来帮助您。 它有望将距离减半,将地雷包裹在墙壁中,并为您提供火箭溜冰鞋。 火箭溜冰鞋! 这位仙女是CoffeeScript。 您将接受它的报价。 但是,既然您已经确信了,您将需要理性的理由来告诉老板。 不用担心,我们有那些!
原因1:它编写JavaScript比您编写的要好。
关于CoffeeScript,您应该了解的第一件事是,它只是JavaScript,上面有一层闪亮的油漆。 通常,您编写CoffeeScript然后将其提供给编译器,该编译器吐出JavaScript。 在本文中,我们将手动剥离该层油漆,以显示其下面的普通旧JavaScript。
让我们来看第一个例子:
x = 5
如果您来自Ruby或Python之类的语言,那么您将一无所获。 如果您来自JavaScript,您会有些紧张。 为什么? 嗯,这就是写得不错JavaScript中的语句。
var x;
x = 5;
如果您忘记了var或分号,JavaScript有时(但并非总是)会停止工作,有时会在代码的另一个看似无关的部分中停止工作。 因此,与像Java这样的静态编译语言不同,允许初学者和专家都犯愚蠢的语法错误,并且与其他动态语言(如Ruby和Python)不同,犯这些错误非常容易,而且它们通常会静默地失败。
CoffeeScript具有动态语言的清晰度,同时也能够像静态语言一样在编译时捕获最严重的错误。 还有像缺少var和删除分号之类的陷阱? 自动为您处理。 它为您构建JavaScript代码甚至会传递JavaScriptLint (样式指南)而不会发出警告。
即使您可以编写完美的代码,为什么还要浪费那些大脑周期呢? 如果CoffeeScript除了生成干净快速JavaScript外别无其他选择,那将是值得的,这样我可以专注于更重要的事情,而不必记住键入分号。 幸运的是,CoffeeScript可以做更多的事情。
原因2:是JavaScript,但字符较少。
我们将继续进行简单的更改,因为这些更改最容易注意到,我们不希望您稍后在浏览更重要的元素时分心。 这是一个来自CoffeeScript网站的简单示例函数。
square = (x) -> x * x
这里发生了什么事? 我们正在声明一个名为square
的函数,该函数等于表达式(x) -> x * x
。 这个表情在做什么? 这里的重要部分是->
。 左侧的所有内容都是我们要输入到函数中的变量,右侧的所有内容都是我们对这些变量所做的工作。 在这里,我们吸取变量x
,并将其乘以它。 然后我们称它为简写的square
,这样,只要我们想自己乘以某物,就可以叫square
。 square(4)
变成4 * 4,然后变成16。JavaScript进行完全相同的操作,但是执行它花费的时间更长:
var square;
square = function(x) {
return x * x;
};
请注意,在JavaScript版本中添加的任何内容都与平方数字无关。 都是噪音。 CoffeeScript是编程语言的隔音耳机。 但是,有时花括号不只是杂音。 毕竟,有时您想编写多行功能。 您如何跟踪没有花括号的结尾? 请查看从CoffeeScript主页获取的另一个示例:
if happy and knowsIt
clapsHands()
chaChaCha()
else
showIt()
您会注意到,即使有多行,CoffeeScript仍然没有花括号。 之所以可以避免,是因为它是用空格分隔的。 如果您熟悉Python,Haml或Sass,那么您已经知道这意味着什么。 基本上,不是使用花括号来控制流,而是查看行首有多少空格和制表符。 再进入一个标签基本上就像放一个大括号,而返回一个标签就像放一个大括号。 如果听起来很复杂,请不要担心。 95%的时间,无论如何这都是样式良好JavaScript的间距。
到目前为止,我们讨论的所有内容都是基本JavaScript,其中删除了许多小障碍。 实际上,这是CoffeeScript提供的最大,最容易实现的价值主张之一,但从类开始,还有更多的价值主张。
原因3:它是JavaScript,具有传统的类系统
每种面向对象语言的类系统都有怪癖。 JavaScript的类甚至都不称为类。 它们被称为“原型”。 是的,如果您来自其他语言,至少会暂时使您感到困惑。 好消息! CoffeeScript修复了该问题。 这是一个快速的类和超类安排:
![](https://i-blog.csdnimg.cn/blog_migrate/d5da9560dcca522ee8a66e35086d95b6.png)
我们不再需要将CoffeeScript逐行转换为JavaScript。 这是因为要使JavaScript的原型系统适合传统的类系统,必须做很多扭曲。 没有CoffeeScript,您的头脑将不得不独自执行这些扭曲。 这是CoffeeScript类的一个基本但更完整的示例,因此您可以立即开始使用它们:
![](https://i-blog.csdnimg.cn/blog_migrate/d1a2609b6e97d655c06c19c5030afa10.png)
野外的CoffeeScript
我使用的许多示例均摘自CoffeeScript主页 。 他们那里有一个不错的翻译器,它将带您的CoffeeScript并立即向您展示相应JavaScript的外观。
但是,如果要在现实生活中使用它,则需要更多一些东西。 如果您使用的是Ruby on Rails,请将.js
文件重命名为.coffee
或.js.coffee
。 现在您完成了。 它甚至可以为您最小化和连接您JavaScript文件。 如果您不使用Ruby on Rails,则必须下载并安装node.js及其对应的CoffeeScript软件包。 然后将其设置为观看CoffeeScript文件。
翻译自: https://www.sitepoint.com/an-introduction-to-coffeescript/
coffeescript