想请教一个问题,为什么CoffeeScript受欢迎?

2013-08-29 09:57:55 +08:00
 kurtis
我一直用js,包括node.js,前段js,觉得都挺好的。

一直听人说,coffeeScript优雅简洁,
于是我看了一下,的确看起来很清新,只是如此而已。
不爽的是,这种基于“排版”的编程语言,如果多一个空格,或换行就会有完全不同的语义。

恕我浅薄,CoffeeScript一定有什么除了“看起来”以外的优势。
请不吝赐教。
9426 次点击
所在节点    程序员
52 条回复
ine181x
2013-08-29 10:06:31 +08:00
转换出的代码是符合javascript的最佳实践的。另外就是语法糖。
chuangbo
2013-08-29 10:07:19 +08:00
官网首页不是写了么。。摒弃了 Javascript 糟粕,保留了精粹,不容易进坑。
缩进这种问题就不需要讨论了。
lichao
2013-08-29 10:10:24 +08:00
也只是在 ruby 圈很流行,但是我看它有时候转换出来的 js 有点啰嗦
akinoniku
2013-08-29 10:12:29 +08:00
其实就是把JS好用的地方提炼出来了,再加点语法糖

除非你很熟悉JS,不然COFFEE的执行效率大概会比手写的高,而且优雅

但是如果你真的很熟悉JS的话,你手写JS出来的代码应该也是跟coffee编译出来的没差

所以选COFFEE还能省键盘。。

我觉得大概就是这样
anson0370
2013-08-29 10:25:41 +08:00
光一个 `->` 和 `=>` 我就笑醒了……嗯 省键盘而且提高开发效率不是挺好的么

用缩进分块的做法和 python 一样 根本不是什么问题 习惯习惯就好了
nigelvon
2013-08-29 10:27:47 +08:00
貌似coffee出来之前就精通js的用coffee的人很少。
chrisyipw
2013-08-29 10:40:31 +08:00
根据 @kurtis 的话,感觉你是把 Coffee 和 JS 给分离了(看成是不一样的语言)。

其实你说的基本就是 Coffee 的全部了,除此之外,真没啥好说,编译的代码用 JS 也可以写出来,JS 的坑也可以靠经验填上,而且执行效率相差无几,所以就只有语法糖的问题。

Coffee 的语法糖很甜,因为参考的是同样以语法糖很甜出名的 Ruby,相比之下 JS 就太烦人。

我日常写项目是用 Coffee + CodeKit / uglify,编译后会有 source map,调试不成问题,所以,写起来舒服确实让我很爽。
0bit
2013-08-29 10:45:49 +08:00
Coffee 的语法糖简直是懒人的福音
zhujinliang
2013-08-30 08:57:43 +08:00
我是懒得学coffee script。。。js写的很顺手了,干嘛学个别的语言结果转出来还是js。。。
同理less,不过看起来less要比coffee有意义的多
kurtis
2013-08-30 09:13:47 +08:00
js 里面有 可以直接 编译像LINQ 一样的语句吗? 我觉得LINQ很天马行空。
lichao
2013-08-30 09:19:56 +08:00
@kurtis 似乎是完全不相关的东西
coolicer
2013-08-30 09:20:30 +08:00
coffee不利于团队交流,如果用那每个人都要学习,目测只有个人使用者比较多
kurtis
2013-08-30 09:24:54 +08:00
@lichao
我在c#里面用过linq,一开始也是觉得,完全就是不同的东西嘛!
可是用着用着,发现其实这种混合编写,有种独特的乐趣。

如果js有这种混合编写的功能倒是很强!
jacobbubu
2013-08-30 09:38:09 +08:00
知乎上回答过类似问题。你知道,这种问题很容易挑起争论的:)
anson0370
2013-08-30 09:51:00 +08:00
coffee 已经够好学了,为了提高生产率这点学习成本很便宜
istef
2013-08-30 09:58:02 +08:00
作为懒人我还是很喜欢 coffee 滴,写个 class 就得 function(){ return {}} 实在有点儿难受。缺点是,用 coffee 可能会影响对 javascript 本身的理解。。。
anyway,写代码就是图个爽啊
luikore
2013-08-30 10:24:45 +08:00
用 coffee 就不会踩到下面的坑:

ie7 最后一项多个逗号, ie8 splice, 该写 === 的地方写成了 ==, undefined 被别人覆盖了, 漏写个 var 使得变量泄漏到全局作用域...

就算是很有经验的 js 程序员也常常掉这种坑里, 学习 coffee 是物有所值的
clowwindy
2013-08-30 10:31:02 +08:00
chuangbo
2013-08-30 10:40:59 +08:00
@clowwindy 哈哈哈哈哈哈哈
chuangbo
2013-08-30 10:41:22 +08:00
@chuangbo 顺便把 Ruby 给黑了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/80598

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX