之前看到同事在使用coffeescript写js,当我看到那简介的coffee文件,就深深的被coffescript吸引了,简洁的语法,熟练之后会大大提升javascript的开发速度,写脚本也能像飞一样。

 
 学习资料:
推荐资料: 

CoffeeScript 详解  https://ruby-china.org/topics/4789

 
会ruby语言的同学轻松上手,不过coffeescript的语法是相当简单的,看一遍官网,你绝对会有想要试试的冲动,请不要抑制这股冲动,放手去写个demo吧,只有亲自体会过后你会更加喜欢coffeescript
 
前人已经介绍了很多coffeescript语法,我这里就不再赘述了,下面说一下自己写完一个demo的感觉。
我用coffeescript写了一个悬浮选择颜色标签的jQuery插件,代码很简单,目的是练习嘛。
demo代码参考:  http://runjs.cn/code/v0rmoroh 
 
1.函数返回语句
 coffeescript生成的js中,会对每个方法生成returen语句,默认返回函数的最后一行,考虑有的时候并不是每个函数都必须返回,所以这一点有点不习惯,所以我在对不需要返回的函数末行都写了false. 
 其实返回this最好,但要注意this在上下文的含义,我在写demo时遇到的问题是,为元素绑定点击事件,就是因为 $.each() 返回的是this结果导致事件被触发了多次,最后修正还是返回false踏实一些。
 
2.函数调用
 对于调用有参数的函数还好,直接 functionName arg1,agr2  。 如果是无参数函数,还是需要显示调用,就是加上小括号: functionName() 
  还有就是嵌套调用,这个也是需要自己显示的加上括号以及传递参数。 
  例如: offset.top += (parseInt ele.css 'height' )+5
                --->
            offset.top += (parseInt(ele.css('height'))) + 5; 
 
 链式调用时使用 '.' 点号来进行连接,跟一般链式没有区别
 
3. 记得编译时加入-w参数
  -w 参数的意义在于,你在开发阶段,没保存一次coffee文件就被自动编译成.js文件。
 
4.注释
 coffeescript中的注释是# 如果使用//  或者/**/ 在编译时会报错的
 遗憾是,在coffee文件中的注释在编译好的js中注释都被去掉了,所以在阅读js时没有注视的感觉,唉~
 coffeescript 注释方式:

###
这里是注释
###

另外一点,块注释一定要紧紧放在被注释的代码上面,否则会编译出错,千万不要如下图:

 --补
    感谢 @ 枉然不供 提供的注释方式.
 
 
目前就这么多,后续有问题在更新上来,继续学习coffee语法。
 
我相信熟练使用coffeescript后在配合vim 写javascript飞一样的感觉是不会远了。
 

CoffeeScript飞一样的写javascript的更多相关文章

  1. 使用Typescript来写javascript

    使用Typescript来写javascript 前几天尝试使用haxejs来写javascript,以获得静态类型带来的益处.虽然成功了,但很快发现将它与angularjs一起使用,有一些不太顺畅的 ...

  2. CoffeeScript?TypeScript?还是JavaScript

    请注意本文只是我的偏见,我努力地理解借助CoffeeScript或TypeScript之类的编译器写JavaScript代码的理由.静态编译.强类型语言和框架,我有着这些流行的.丰富的背景.我的上一份 ...

  3. 像C++一样写JavaScript

    像C++一样写JavaScript C/C++/Java的include或import可以引用第3方文件和包. 这个功能在Html/Js里没有默认的实现. 假设我们有这样一个HTML文件index.h ...

  4. 代码规范(RL-TOC)用更合理的方式写 JavaScript

    代码可以改变世界 不规范代码可以毁掉世界 只有先学会写规范的代码,才可以走的更远 编程语言之间有很多编程规范都是通用: 命名 不要用语言不明的缩写,不用担心名字过长,名字一定要让别人知道确切的意思; ...

  5. 如何写javascript代码隐藏和显示这个div

    如何写javascript代码隐藏和显示这个div 浏览次数:82次悬赏分:10 | 解决时间:2011-4-21 14:41 | 提问者:hade_girl <div id="div ...

  6. 【blade04】用面向对象的方法写javascript坦克大战

    前言 javascript与程序的语言比如C#或者java不一样,他并没有“类”的概念,虽然最新的ECMAScript提出了Class的概念,我们却没有怎么用 就单以C#与Java来说,要到真正理解面 ...

  7. Asp.Net_ 服务端向客户端写JavaScript脚本

    在Asp.net 服务端处理脚本,一般都用 ClientScriptManager ,即web窗体服务端的this.ClientScript.该对象比较常用的方法: 1.RegisterArrayDe ...

  8. 用C#在Visual Studio写Javascript单元测试(Firefox内核)

    引用nuget包: 注意:Geckofx45 nuget包必须是最后引用,否则初始化会出错 编写JsRunner using Gecko; using System; using System.Col ...

  9. 用C#在Visual Studio写Javascript单元测试

    1.在vs创建一个标准的单元测试工程 2.引用nuget包:Edge.js 我是用的是6.11.2版本 3.编写JsRunner类 using EdgeJs; using System; using ...

随机推荐

  1. 研磨设计模式解析及python代码实现——(一)简单工厂模式

    最近在学设计模式,正巧书之前学了些python,但用的还不是很成熟.<研磨设计模式>书上只给了java代码,本着以练手为目标,我照着书上打了一遍java代码,在仔细体会其思想后,将其写成了 ...

  2. “互联网+”引发IT人才招工荒-新华网安徽频道

    "互联网+"引发IT人才招工荒-新华网安徽频道 "互联网+"引发IT人才招工荒

  3. IT项目管理的六种错误思维

    导读:在软件行业,在界面设计没有正式展现给客户之前,所有的工作都处于需求调研阶段.很多IT项目经理因为年轻,初生牛犊不怕虎,胆量大,勇气足,敢于在实践中引入新的工具.方法.敢于尝试不是坏事,但试验的风 ...

  4. Linux下mysql数据库root无法登录的情况

    今天安装lnmp环境后用mysql -u root -p连接密码后出现错误 Access denied for user 'root'@'localhost' (using password: YES ...

  5. Java中的Stringbuffer类解析

    StringBuffer类和String一样,也用来代表字符串,只是由于StringBuffer的内部实现方式和String不同,所以StringBuffer在进行字符串处理时,不生成新的对象,在内存 ...

  6. Visual Studio Package 插件开发

    背景 这段时间公司新做了一个支付系统,里面有N个后台服务,每次有更新修改,拷贝打包发布包"不亦乐乎"...于是我想要不要自己定制个打包插件. 部分朋友可能会认为,有现成的可以去找一 ...

  7. mysql日期时间函数2

    win7可以设定每周从哪一天开始,win2003等不能方便的修改.有的是周日开始,有的是周一开始.而工作中有的时候每周是从周六开始算的,有些数据需要按周统计,那么那种方式比较好呢?   通过下面的研究 ...

  8. Linux性能及调优指南(翻译)

    http://blog.csdn.net/ljianhui/article/details/46718835 http://blog.chinaunix.net/uid-26000296-id-406 ...

  9. (转载)SVN 提交操作缩写(A D M R) .

    前言: 今天使用SVN提交代码,发现提交后的代码找不到之前的版本. 操作的字母缩写为R.一般我们常见的操作为 A D M R   A:add,新增 C:conflict,冲突 D:delete,删除 ...

  10. android开发必备日志打印工具类

    今天给大家献上一款好用的日志打印工具.大家在平时的开发中用的最多的可能就是Log.i("",""),Log.e("","" ...