JavaScript 别用 CoffeeScript 了,你总有一天得学 JavaScript

ibloging · January 20, 2014 · Last by mogodb replied at March 09, 2015 · 7981 hits

总有那么一天,你不得不去学一下 JavaScript。这就是我今年做的一件事儿,你应该也去学一学。我主要 JavaScript 创建服务器端的代码,一个为网页提供 JSON REST APIs 的服务;不过同时我也使用 AngularJS 创建了一些单页面程序。我喜欢用她写一些命令行程序。

这是一种将会长期存在的语言。她看起来有些缺陷,但是她非常流行而且强大。现在多亏了 Node.JS,如果你知道 JavaScript 但是没有玩过 NodeJS,赶紧去 nodeschool 充充电吧。如果你不懂这门语言,你应该读一读《雄辩的 JavaScript》(Eloquent JavaScript)。它的作者 Marijn Haverbekey 让我免费笑了好几次。他正在写第二版,虽然我还没有读过,不过应该是另一本好书,上面有 Reginald Braithwaite 写的评论,他是《CoffeeScript Ristretto》一书的作者。CoffeeScript 是一种编绎成 JavaScript 的语言,她会让 Ruby 专家还有 Python 范的程序员感觉更自在一点,但是对于 CoffeeScript 能否帮你更好的写代码还是增加了一个复杂的不必要的层次一直存在争论:

你需要学 CoffeeScript 吗?(Should You Learn CoffeeScript?)

哪些技术上的经验告诉你不要使用 CoffeeScript? (What are some empirical technical reasons not to use CoffeeScript?)

我为什么不使用 CoffeeScript?(Why I Don't Use CoffeeScript)

一个不要使用 CoffeeScript 的例子(A Case Against Using CoffeeScript)

我喜欢 CoffeeScript 的 10 个特性(Ten Features I Like About CoffeeScript)

CoffeeScript 不是一门值得学习的语言(CoffeeScript is not a language worth learning)

我在一个大项目中使用了 CoffeeScript。我非常喜欢这门语言。直以我跟别人一直工作后,并了解了一下 JavaScript 后,就不那么喜欢了。

转自: http://ourjs.com/detail/52dc810afbd185732c000002

谁说用 Coffee 的人,一定不懂的 Javascript ? 楼主是不是理解存在偏差?楼主认为 Coffee 存在的的意义是什么?

楼主的结论在一个本身就是错误的前提下才成立的。这个错误前提是:先用 Coffee, 再用 JS.

多学一点不是坏事,而且还是能减少些工作量的

对,总要学 JavaScript 的,然后认识到 CoffeeScript 解决了什么问题之后开始用 CoffeeScript。

直以我跟别人一直工作后,并了解了一下 JavaScript 后,就不那么喜欢了。

...说明了解的还不够多

与原作者有同感,现在不怎么喜欢 CoffeeScript 了,不过不介意阅读或是参与使用 CoffeeScript 的项目,只是更喜欢写 JavaScript 而已。

这个论调真有意思。难道不知道,很多人都是写了很多年的 Javascript 后才开始用 Coffee 的么?Coffee 能提高开发效率,能让你少走弯路,同时避免了很多 Javascript 的语法陷阱。现在 Node 的各种应用服务器不论是 forever, pm2 还是开发环境下的 node-dev 都原生支持 Coffee 了,你为什么,有什么理由还要去写“原生“的 Javascript。记住,Coffee 本身也是 Javascript , 和 Javascript 并没有你存我亡的冲突。

不写 SCSS 改写 CSS 的节奏

233 别学 Ruby 了,你总有一天得学 C 别学 C 了,你总有一天得学汇编 。。。

少学一点不是坏事,更加能减少工作量 于是我就直接学的 coffeescript 并且不会写 javascript,看 js 很吃力,看各种别人的代码反而要 js2coffee,但是我根本不觉得有学 javascript 的必要——代码是 coffee,测试也是 coffee,测试变绿就完事了,debug 都不需要打开浏览器,开浏览器只在调整 css 的时候,那么我为啥要关心自己的编译出来的 js 是啥样子(反正要看还得 js2coffee……)

作者觉得 debug coffee 更麻烦只是因为他一开始学的是 js 而已,如果是像我这种学习路径,反而是会觉得 debug js 更麻烦,首先要编译成 coffee……

#1 楼 @zw963 我就不懂 js,不服?你咬我啊~

自己的项目会用,团队就算了。感觉 coffee、haml、slim 这些都是写的人很爽,看的人骂娘。

题目太冲,,, 同样的逻辑,Haml,Slim 也不应该用,因为有原生的 HTML. JQuery, 也不能用,有 js ruby 不能用,因为还有 C 懂 js 没坏处,但会 coffee 更是有益

不了解 js 的话,coffee 也用不太好吧?

14 Floor has deleted

从逻辑角度,可以把楼主的题目补充完整:

如果没有学过 JavaScript,别用 CoffeeScript 了,你总有一天得学 JavaScript

跟这个题目对立且成立的题目是:

如果你精通 JavaScript,而你依然在写 JavaScript,你应该换 CoffeeScript 了

好奇 JavaScript 都不会,能写出 CoffeeScript 么

#17 楼 @lgn21st #论阅读原版资料的重要性

最近一直是 js 和 coffeescript 混着用。

js 最头疼的是 } 的闭合。最近写 angular,经常怕改写时漏写漏删的。

coffee 比较麻烦的是函数参数。比如 timeout,或者 .hover( handlerIn(eventObject), handlerOut(eventObject) ) 这种双函数参数的,写起来就有点麻烦,要格外留心。

#17 楼 @lgn21st

However there is a big debate about if CoffeeScript helps you code or if it only adds a new complexity layer:

I have used CoffeeScript on a big project. I liked it, but now that I took some time to learn JavaScript I prefer the latter

CoffeeScript is not a language worth learning https://github.com/raganwald/homoiconic/blob/master/2011/12/jargon.md

Why I Don't Use CoffeeScript http://oscargodson.com/posts/why-i-dont-use-coffeescript.html

A Case Against Using CoffeeScript http://ryanflorence.com/2011/case-against-coffeescript/

我所认识在用 CoffeeScript 的人都是 JavaScript 经验非常丰富的人。这些开发者用它不仅仅为了语法糖或其他原因,更多是为了生产力(代码更少,不容易掉入 JavaScript Bad Parts 的坑)。他们在写 CoffeeScript 的时候,是知道最终生成的 JavaScript 是什么样子的。

#20 楼 @ibloging 请问你是这篇译文的作者?还是你转载了这篇译文?

如果我说这里有个有趣的观点,然后引用几个链接,是不是可以视作这几个链接中的观点就是我本人的观点?

最后,你本人写大量的 JavaScript 么?你写大量 CoffeeScript 么?以及你自己的态度是劝君放弃 CoffeeScript 转而继续去深造 JavaScript 么?

23 Floor has deleted

#22 楼 @lgn21st 兄弟别太较真了,作者要是真喜欢 CoffeeScript,干嘛还贴一大堆喷 CS 的链接呀……

coffeescript 现在不支持 ES6 generator 是硬伤(不过应该快了)

#24 楼 @ibloging 问题是作者没有说不喜欢啊,译文却言之凿凿作者讨厌,而这篇译文又诸多误导之处以及断章取义,如若不较真,不是任由你误导这个论坛上的初学者么?

科学家说:

“如果脱离了上下文,我的研究成果将毫无意义。”

媒体转述:

“科学家称,研究成果将毫无意义。

#25 楼 @ShiningRay generator 出来浏览器不支持啊。

为什么感觉这标题怪怪的

各有所爱嘛,Coffee 没有明确的结束,看着好烦,还缺三元,不能忍。语法的问题,编辑器的一堆插件自动完成了,JS 写起来也就还好了,Textmate 里 fun+tab,搞定了

#28 楼 @Rei 服务器端支持了啊,nodejs

“天才,百分之一是灵感,百分之九十九是汗水。” 小时候看着这句成长,大了才知道 ND 有后半句,,

“但那百分之一的灵感是最重要的,甚至比那百分之九十九的汗水都要重要。 ”

看看当今学术界就知道,以前那些乌龟蛋挖的坑有多深,,,

看来是断章取义啊

早先是 "别用 jquery 了,你总有一天得自己写"

ES6 之后 coffee 存在价值就不大了。

用 Ruby 的人自然而然会喜欢用 CoffeeScript, 因为 Coffeescript 就是 inspired by Ruby 等等语言,同理,Rubylist 会选择 SASS 而不是 LESS.

不过如今 JavaScript 原生的 library 越来越多了,诸如 underscore 这种,也一样能提供类似 sugar syntax, 一样可以很方便的操作数组,Map 等等,更别说如今特别火的 MVC frameworks.. 所以没有 coffeescript 也一样可以灵活的使用 JavaScript 并且避开诸多的坑。

楼上有些人用 jquery 和 coffee 类比是不对的,一个是需要编译的语言,一个是原生的 library, 没有可比性。

二货,你写过 js,你写过 coffee,你四级过了,看你上个帖子也是这样 http://ruby-china.org/topics/16408

#36 楼 @jeff_duan 因为看了半天题目,说的像是用 coffee 是因为 js 很难学不会一样 只能觉得是模仿这个逻辑。lz 就是想让我们争一争 但是不要和他争...

#36 楼 @jeff_duan 我前阵子才留意到的:coffee-script、backbone、underscore 的作者是同一人

https://github.com/jashkenas?tab=repositories

#39 楼 @Rei 是啊,这些都是超级牛人... 还有诸如 TJ Holowaychuk 这类的... 只能膜拜啊。

看个人风格,有人喜欢写 Java,有人喜欢写 Ruby,还有人写 JavaScript

我还是比较建议大家用 coffee,对于不是 JavaScript 的牛人,很难些出结构化的代码,用 coffee 可以很快把代码都结构化。

有两点不好的地方

  • 你比如找到的代码是 JavaScript,你要自己转成 coffee,对于懒虫来说是挺不好的
  • 编译出来的 JavaScript 可能没你想像中那么简洁

但是谁在乎呢

怎么不会 js,也能写 coffee 吗

CoffeeScript 本身就不是一个必须用的语言,它不像 JavaScript 那么没选择性(浏览器只能跑 JavaScript)。但 CoffeeScript 给我们这些不喜欢 JavaScript 某些繁琐地方的人另外一种选择。

对熟悉 JavaScript 的人来说,CoffeeScript 没有任何学习成本可言。它只是简化了我们反复写的繁琐的代码,就如 jQuery 简化了 dom 操作。有的地方我们需要用类库来简化工作,但有的地方我们不得不用语言来简化工作。抱着“学习 CoffeeScript 就避免学 JavaScript”的想法才是大错特错。

要说 JavaScript 的优势,我能想到的就是一点:所有懂 CoffeeScript 的人都懂 JavaScript,但不是所有懂 JavaScript 的人都懂 CoffeeScript。这也是 Discourse 把所有 CoffeeScript 全部转成 JavaScript 的原因。但他们这么做是因为,作为一个开源项目,需要更广泛的贡献者。也不是因为 CoffeeScript 本身的原因。

不是先学 js, 再学 coffee 么,顺序搞反了能理解的了么。

#论编写引言和参考文献的重要性

这样,我给楼主建议个标题

多看看编译后的 coffee-script 吧,这样你就学会 javascript 了

Unknow user #47 January 21, 2014

#32 楼 @boyishwei 貌似后面这句是后人杜撰的,而且极可能是某位中国网友

#5 楼 @nightire 直接写 JS 更灵活?coffee 有时候也是一种限制?

#39 楼 @Rei http://www.ashkenas.com/ 他的博客有什么玄机么?怎么只有图,什么博客没有?

#32 楼 @boyishwei 哪里看到乌龟了?

You need to Sign in before reply, if you don't have an account, please Sign up first.