文档章节

CoffeeScript 速抄本

foucsj
 foucsj
发布于 2015/04/11 17:37
字数 658
阅读 47
收藏 1
点赞 0
评论 0

CoffeeScript CheetSheet#

Declaration

there is no vars, and no need to add ';' and the end

i = 10
str = "hello world"
[firstName, lastName] = ["kang", "wang"]

define a function, no need to add the keyword 'function', -> is enough

fn = (param) -  ... 

Splats: define a function with multi parameters

fn = (parm1, parm1, params...) ->
    ...

params = ["value1", "value2", "value3", "value4"]
fn(params)
fn("value", params)
fn("value", "value", params)

define an Array

arr = [
   "element1"
   "element2"
]

define an object

obj = 
   first: 1
   second: 
      second_1: 1
      second_2: 2
   third: 3

$('.element').attr class: "active"

lexical scoping and variable safity.

outter = 10
scope = ->
   inner = 10

outter = 20 inner = 20

String Interpolation

mixin variable and function in string defination

str = "variable 1: #{var1}, function 1 returns: #{fn()}"

str = "
   today is Sunday
   so tomorrow is 
   Monday
"

htmlTpl = """
   <html>
      <body>
         <h1>Hello World</h1>
      </body>
   </html>
"""

Destructuring Assignment

[var1, var2] = [value1, value2]

use on object unapply

{firstName, lastName} = {firstName: "Kang", lastName: "Wang"}

use for a function multi-returns

location () ->   
   ["US", "LA", "Berkly"]

[county, province, city] = location() 
[start, end] = "hello, world".split ","

use to skip some useless bucket ...

[start, ..., end] = [1, 2, 3, 4, 5]

destructuring constructor

class Person
   constructor: (options) ->
   {@name, @age, @height} = options

tim = new Person age: 4

condition control

if else then

"do something" if true

if true and true 
   "do something"
else 
   "do other things"

if true then "do something" else "do other things"

for loop control

for loop while until

print ele for ele in [1, 2, 3, 4]

prints i, ele for ele in [1, 2, 3, 4]

print ele for ele in [1, 2, 3, 4] when ele / 2 != 1

countDown = (num for num in [10 .. 1] by 2)

loop an object

prints k, v for k, v of kid

print ele until ele > 10

print ele while ele > 10

do keywords

for filename in list
   do (filename) ->
      fs.readFile filename, (err, contents) ->
         compile filename, contents.toString()

for ele in [1, 2, 3, 4]
   do print ele

try .. catch .. expression

try 
	  fn(1)
catch error
	  error
finally
	  then

try .. catch .. expression

Array Operations

numSerials = [10 .. 0]

start = numSerials[0..2]

end = numSerials[0..-2]

end = numSerials[..]

umSerials[0..2] = [1, 2, 3]

use expression as much as possible

globals = (name for name of window)[0...10]

Existantial Operator ?, ?.

'?' means varaible is null or undefiend

solipsism = true if mind? and world?

speed = 0
speed ?= 15

footprints = yeti ? "bear"

'?.' usef for assessing object attribute

kid.brother?.sister

switch when else

 switch day
 	when "Mon" then ""
 	when "Tue" then ""
 	else "WTF"

 day = switch day
 	when "Mon" then ""
 	when "Tue" then ""
 	else "WTF"

object oriented

use => to bind this in scope

 Account = (customer, cart) ->
   @customer = customer
   @cart = cart
 
   $('.shopping_cart').bind 'click', (event) =>
     @customer.purchase @cart

 Account2 = (customer, cart) ->
   @customer = customer
   @cart = cart
 
   $('.shopping_cart').bind 'click', (event) ->
     @customer.purchase @cart

bind function to an exists function

Array::map = ->
   "..."

some sugar

chained comparasion

cholesterol = 127
healthy = 200 > cholesterol > 60

block regular expression

OPERATOR = /// ^ (
  ?: [-=]>             # function
   | [-+*/%<>&|^!?=]=  # compound assign / compare
   | >>>=?             # zero-fill right shift
   | ([-+:])\1         # doubles
   | ([&|<>])\2=?      # logic / shift
   | \?\.              # soak access
   | \.{2,3}           # range or splat
) ///

embeded javascript

fn = `function fn() {}`

operators and alias in CoffeeScript

CoffeeScript	             JavaScript
  is	                        ===
  isnt	                        !==
  not	                        !
  and	                        &&
  or	                        ||
  true, yes, on	                true
  false, no, off	            false
  @, this	                    this
  of	                         in
  in	                   no JS equivalent
  a ** b	               Math.pow(a, b)
  a // b	               Math.floor(a / b)
  a %% b	               (a % b + b) % b

multi etends example

 moduleKeywords = ['extended', 'included']
 
 class Trait
 	@mixin: (obj) =>   
 		for key, value of obj when key not in moduleKeywords
 			@::[key] = value		
 
 		obj.with?.apply(@)
 		this
 
 	@with: (objs ...) ->
 		@mixin obj for obj in objs
 
 
 MongoDao =
 	find: () -> console.log("find items in mongo")
 
 	create: () -> console.log("delete item in mongo")
 
 class UserDao extends Trait 
 	@with Daoable, MongoDao

© 著作权归作者所有

共有 人打赏支持
foucsj
粉丝 2
博文 9
码字总数 13050
作品 0
昌平
程序员
Atom飞行手册翻译: 3.1 ~ 3.2

现在是时候来介绍在这一Hackable的编辑器中,真正“Hackable”的部分了。像我们在整个第二章中看到的那样,Atom中很大一部分都由一大堆包组成。如果你想向Atom中添加一些功能,你必须要访问和...

apachecn_飞龙 ⋅ 2015/08/03 ⋅ 0

CoffeeScript 2.3.0 发布,JavaScript 转译语言

CoffeeScript 2.3.0 发布,此次更新信息如下: 将分析初始化移入 docs.coffee 更新 CodeMirror 样式 文档更好的布局,包括自动调整大小的侧栏和主栏 对 Edge 的一些样式进行小修改 更新断开的...

雨田桑 ⋅ 04/30 ⋅ 0

CoffeeScript 2.2.4 支持 ES2018 正则表达式 dotall 标志

CoffeeScript 2.2.4 (#5025) 发布。 下载地址 Source code (zip) Source code (tar.gz) 更新 修复#4877:指数运算符(#4881) 支持 ES2018 正则表达式 dotall 标志...

雨田桑 ⋅ 04/01 ⋅ 0

Atom飞行手册翻译: 2.13 基本的自定义

基本的自定义 在我们感受到Atom中所有东西的便利之后,让我们看看如何改进它。可能有一些快捷键你经常使用但是感觉很别扭,或者一些颜色不是十分适合你。Atom具有惊人的灵活性,所以让我们对...

apachecn_飞龙 ⋅ 2015/08/03 ⋅ 0

此生无悔入 TypeScript

↑ 编者按:本文由phodal公众号授权奇舞周刊转载。 想来,我已经用 TypeScript 已经有一段时间了,它可以算得上是前端领域的一门 “平淡生活” 的语言。 平淡生活,我的意思是:生活可以从此...

奇舞周刊 ⋅ 04/26 ⋅ 0

java Web中的接口项目:浏览器访问接口地址后返回的是一串加密后的字符串,控制台显示:请求包为空,如何解决才能看到接口中显示的json数据信息?数据转换使用des进行加密和解密的。谢谢

java Web中的接口项目:浏览器访问接口地址后返回的是一串加密后的字符串,控制台显示:请求包为空,如何解决才能看到接口中显示的json数据信息?数据转换使用des进行加密和解密的。谢谢...

llddgg ⋅ 02/28 ⋅ 0

【CentOS 7Tomcat配置3】,配置tomcat监听端口为80#180120

hellopasswd --- 配置tomcat监听端口为80 vi /usr/local/tomcat/conf/server.xml Connector port="8080" protocol="HTTP/1.1"修改Connector port="80" protocol="HTTP/1.1" /usr/local/tomc......

hellopasswd ⋅ 01/20 ⋅ 0

世界AI人才储备战硝烟四起,中国能否抢占少儿编程先机?

在人工智能的发展过程中,人才储备无疑是重要的一环。人工智能应是一种可以深埋于任何产业中的底层技术,与医疗结合可以提升影像资料的检阅效率,与工业结合可以提升分拣速度……在未来,或许...

脑极体 ⋅ 04/18 ⋅ 0

Git push 常用命令

git push : 这个是push的完整写法,将本地分支上传到远程分支,例如: git push 如果省略了 即: 则git会push到远程分支的同名本地分支,即和 等价。如果远程分支dev不存在则会创建dev分支。...

hobhunter ⋅ 03/06 ⋅ 0

一次与陌生男子结对编程3天的经历

最近,公司的事情越发忙碌起来了,除了需要不断梳理架构团队的规划和进度之外,还要经常北上杭三地跑,平常好不容易有个完整的周末,也都瘫软在沙发上,一动脑就脑壳痛。感觉这种状态很容易让...

小芋头君 ⋅ 05/27 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Day 17 vim简介与一般模式介绍

vim简介 vi和Vim的最大区别就是编辑一个文件时vi不会显示颜色,而Vim会显示颜色。显示颜色更便于用户编辑,凄然功能没有太大的区别 使用 yum install -y vim-enhanced 安装 vim的三种常用模式...

杉下 ⋅ 41分钟前 ⋅ 0

【每天一个JQuery特效】根据可见状态确定是否显示或隐藏元素(3)

效果图示: 主要代码: <!DOCTYPE html><html><head><meta charset="UTF-8"><title>根据可见状态确定 是否显示或隐藏元素</title><script src="js/jquery-3.3.1.min.js" ty......

Rhymo-Wu ⋅ 50分钟前 ⋅ 0

OSChina 周四乱弹 —— 初中我身体就已经垮了,不知道为什么

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @加油东溪少年 :下完这场雨 后弦 《下完这场雨》- 后弦 手机党少年们想听歌,请使劲儿戳(这里) @马丁的代码 :买了日本 日本果然赢了 翻了...

小小编辑 ⋅ 今天 ⋅ 10

浅谈springboot Web模式下的线程安全问题

我们在@RestController下,一般都是@AutoWired一些Service,由于这些Service都是单例,所以并不存在线程安全问题。 由于Controller本身是单例模式 (非线程安全的), 这意味着每个request过来,...

算法之名 ⋅ 今天 ⋅ 0

知乎Java数据结构

作者:匿名用户 链接:https://www.zhihu.com/question/35947829/answer/66113038 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 感觉知乎上嘲讽题主简...

颖伙虫 ⋅ 今天 ⋅ 0

Confluence 6 恢复一个站点有关使用站点导出为备份的说明

推荐使用生产备份策略。我们推荐你针对你的生产环境中使用的 Confluence 参考 Production Backup Strategy 页面中的内容进行备份和恢复(这个需要你备份你的数据库和 home 目录)。XML 导出备...

honeymose ⋅ 今天 ⋅ 0

JavaScript零基础入门——(九)JavaScript的函数

JavaScript零基础入门——(九)JavaScript的函数 欢迎回到我们的JavaScript零基础入门,上一节课我们了解了有关JS中数组的相关知识点,不知道大家有没有自己去敲一敲,消化一下?这一节课,...

JandenMa ⋅ 今天 ⋅ 0

火狐浏览器各版本下载及插件httprequest

各版本下载地址:http://ftp.mozilla.org/pub/mozilla.org//firefox/releases/ httprequest插件截至57版本可用

xiaoge2016 ⋅ 今天 ⋅ 0

Docker系列教程28-实战:使用Docker Compose运行ELK

原文:http://www.itmuch.com/docker/28-docker-compose-in-action-elk/,转载请说明出处。 ElasticSearch【存储】 Logtash【日志聚合器】 Kibana【界面】 答案: version: '2'services: ...

周立_ITMuch ⋅ 今天 ⋅ 0

使用快嘉sdkg极速搭建接口模拟系统

在具体项目研发过程中,一旦前后端双方约定好接口,前端和app同事就会希望后台同事可以尽快提供可供对接的接口方便调试,而对后台同事来说定好接口还仅是个开始、设计流程,实现业务逻辑,编...

fastjrun ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部