之前看到同事在使用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. hyperVisor

    当前主要的hyperVisors:VMware vSphere.微软Hyper-V.Citrix XenServer .IBM PowerVM.Red Hat Enterprise Virtuliza ...

  2. poj 1274 The Perfect Stall【匈牙利算法模板题】

    The Perfect Stall Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 20874   Accepted: 942 ...

  3. PTA 07-图4 哈利·波特的考试 (25分)

    哈利·波特要考试了,他需要你的帮助.这门课学的是用魔咒将一种动物变成另一种动物的本事.例如将猫变成老鼠的魔咒是haha,将老鼠变成鱼的魔咒是hehe等等.反方向变化的魔咒就是简单地将原来的魔咒倒过来念 ...

  4. Linux编辑器的选择使用

    在执行 crontab -e的时候 发现编辑器不对 用的是nano 立刻 sudo select-editor 然后终端返回 Select an editor. To change later, ru ...

  5. PAT 1004. Counting Leaves (30)

    A family hierarchy is usually presented by a pedigree tree.  Your job is to count those family membe ...

  6. ios xcode如何在控制台打印frame

    进入正题 打开终端输入三条命令: 1. touch ~/.lldbinit 2. echo display @import UIKit >> ~/.lldbinit 3. echo tar ...

  7. 【JAVA - SSM】之MyBatis输出映射

    MyBatis中的输出映射有两种:resultType和resultMap. 1.resultType 使用resultType进行结果映射时,只有当查询结果中有至少一列的名称和resultType指 ...

  8. ArcGIS Engine中如何获取Map中已经选择的要素呢

    1.使用IEnumFeturea对象获取map中的FeatureSelection,该方法可以获取所有图层的选择要素.IMap中的FeatureSelection可不是IFeatureSelectio ...

  9. tcpreplay安装使用经验

    tcpreplay安装使用经验   #Author: ypguo#Data: 2010.4.23#Version:  1.2 增加了修改VLAN tag内容.                 1.1 ...

  10. Hack工具

    黑客工具一般是由黑客或者恶意程序安装到您计算机中,用来盗窃信息.引起系统故障和完全控制电脑的恶意软件程序.同时也指黑客进行黑客任务时使用的工具.著名的有nmap,流光等等. 目录 1 种类 2 恶意程 ...