CoffeeScript小书

CoffeeScript小书

The Little Book on CoffeeScript 中文版

免费试读

作品简介

本书译自The Little Book on CoffeeScript,它原是于Github上一个开源的项目,着MIT开源协议。我在闲暇之余译了一份中文版,豆瓣推出豆瓣阅读这个产品之后,盼整理润色之后放上来。后亏铁金龙参与进来,帮忙校对润色之工作,遂得此书。愿大家喜欢。

该书从多方面介绍了CoffeeScript,也介绍很多JavaScript的基础知识,同时还包括JavaScript或CoffeeScript的一些非常优秀的开源框架和程序。相信在你阅读本书的同时,不但能学到CoffeeScript的语法细节,也能了解更多JS、CS相关的知识,比如Node.js、jQuery、Backbone、JSHint等等各种框架和工具的使用。

寸志,非笔名,自彩云之南而来,现居于魔都,大众点评网前端一枚。闲时喜欢敲敲代码,跑跑步;

铁金龙,也是彩云之南人士,居魔都,好东瀛动画,善英语。有志成为前端一枚,发奋学习中。

作者自述

可以写一篇我于CoffeeScript的故事。

作品目录

载入中

热门划线

  1. 使用胖箭头代替普通箭头是为了确保函数的上下文可以绑定为当前的上下文。7 人
  2. CoffeeScript没有分号5 人
  3. 之所以要这样做的原因是,addEventListener的回调函数会在element的上下文中被执行,也就是说,this就相当于这个元素。如果你想让this等于当前上下文,除了使用self=this,胖箭头也是一种方式。5 人
  4. 在双引号的字符串中可以包含#{}标记,(大括号)里面包含了被插入到字符串中的表达式。5 人
  5. 注释格式与Ruby的一致,以一个哈希字符开头4 人
  6. 也支持多行注释,而且还会把多行注释添加到生成的JavaScript中。使用三个哈希字符围绕即可。4 人
  7. 方括号([])不可省略。4 人
  8. 让我极度兴奋的是,从元的角度上来说,CoffeeScript的解释器实际上就是由CoffeeScript写成的。这看起来似乎解决了先有鸡还是先有蛋的悖论!3 人
  9. CoffeeScript的空格是有意义的3 人
  10. CoffeeScript使用一个匿名函数把所有脚本都包裹起来,将其限定在局部作用域中,并且在为所有的变量赋值前自动添加var。3 人
  11. CoffeeScript就没有办法判断出你是打算调用这个函数,还是只把它当作一个变量3 人
  12. 另外一个是::,prototype的别名。3 人
  13. CoffeeScript的存在操作符?只会在变量为null或者undefined的时候会返回真3 人
  14. 要注意的是,静态变量是直接拷贝给子类的,而不是像实例属性那样使用原型来继承。3 人
  15. extend()和include()会分别把类属性和实例属性添加到一个类中3 人
  16. 本书译自The Little Book on CoffeeScript2 人
  17. CoffeeScript的劣势是什么?是的,正是在你和JavaScript之间多了编译这一步。2 人
  18. Rails3.12 人
  19. http://coffeescript.org2 人
  20. 使用制表符(tab)来替换花括号({})2 人
  21. 在JavaScript中,一不小心的话,就很容易在定义变量时因遗漏var关键字而产生全局变量。2 人
  22. 全局变量2 人
  23. 直接给全局对象(浏览器中的window)赋值,来获得全局变量2 人
  24. 移除了冗长的function语句,以瘦箭头->替之2 人
  25. 你还可以使用参数槽(splats)接收多个参数,使用...表示2 人
  26. 在无参数调用函数的地方要特别小心,可别忘了加上括号。2 人
  27. 回调函数2 人
  28. 数组可以使用换行来代替分隔作用的逗号2 人
  29. 在单行的if语句中,你需要使用then关键字2 人
  30. CoffeeScript并不支持条件运算符,你应该使用单行的if/else语句。2 人
  31. CoffeeScript还为大家提供了is语句,可编译为===。2 人
  32. 多行字符串是允许的,不需要在每一行前添加+。2 人
  33. 如果你需要知道当前迭代索引的话,只需要再传递一个参数2 人
  34. 2 人
  35. CoffeeScript暴露出来的唯一底层循环语法是while循环。它与原JavaScript中while循环的行为差不多,只是有了别的优点——它能返回一个结果数组,就像Array.prototype.map()函数一样。2 人
  36. indexOf()并不被所有的浏览器支持(IE,我说的就是你!)2 人
  37. 是@, this的别名。2 人
  38. 你还能用它来替换||操作符:2 人
  39. 你还能用同样的方法检查一个属性是否是函数,是否可以调用,只要把存在操作符放在括号之前就行。如果属性不存在,或者不是一个函数,则不会被调用。2 人
  40. 只要在参数前加上@,CoffeeScript就会在构造函数中自动地把参数设置为实例的属性。2 人
  41. Mixins2 人
  42. 使用位操作符2 人
  43. CoffeeScript中的do关键字能够让我们立即运行函数2 人
  44. 虽然CoffeeScript对空格敏感,Eco模板却正好相反。因此,Eco模板标签在开始一个CoffeeScirpt缩进块时必须使用冒号作为后缀。然后使用特殊的标签<% end %>来表示缩进块结束。例如:2 人
  45. 空字符串、null、undefined和数字0都将转换为false。2 人
  46. 记住只能在比较自定义的对象时使用它,或者干脆就不用了。2 人

喜欢「CoffeeScript小书」的人也喜欢