总有那么一天,你不得不去学一下 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 后,就不那么喜欢了。
谁说用 Coffee 的人,一定不懂的 Javascript ? 楼主是不是理解存在偏差?楼主认为 Coffee 存在的的意义是什么?
楼主的结论在一个本身就是错误的前提下才成立的。这个错误前提是:先用 Coffee, 再用 JS.
与原作者有同感,现在不怎么喜欢 CoffeeScript 了,不过不介意阅读或是参与使用 CoffeeScript 的项目,只是更喜欢写 JavaScript 而已。
这个论调真有意思。难道不知道,很多人都是写了很多年的 Javascript 后才开始用 Coffee 的么?Coffee 能提高开发效率,能让你少走弯路,同时避免了很多 Javascript 的语法陷阱。现在 Node 的各种应用服务器不论是 forever, pm2 还是开发环境下的 node-dev 都原生支持 Coffee 了,你为什么,有什么理由还要去写“原生“的 Javascript。记住,Coffee 本身也是 Javascript , 和 Javascript 并没有你存我亡的冲突。
少学一点不是坏事,更加能减少工作量 于是我就直接学的 coffeescript 并且不会写 javascript,看 js 很吃力,看各种别人的代码反而要 js2coffee,但是我根本不觉得有学 javascript 的必要——代码是 coffee,测试也是 coffee,测试变绿就完事了,debug 都不需要打开浏览器,开浏览器只在调整 css 的时候,那么我为啥要关心自己的编译出来的 js 是啥样子(反正要看还得 js2coffee……)
作者觉得 debug coffee 更麻烦只是因为他一开始学的是 js 而已,如果是像我这种学习路径,反而是会觉得 debug js 更麻烦,首先要编译成 coffee……
题目太冲,,, 同样的逻辑,Haml,Slim 也不应该用,因为有原生的 HTML. JQuery, 也不能用,有 js ruby 不能用,因为还有 C 懂 js 没坏处,但会 coffee 更是有益
从逻辑角度,可以把楼主的题目补充完整:
跟这个题目对立且成立的题目是:
重新看了一遍主题帖,然后打开帖子最后的链接,发现这篇文章是翻译自这里: http://blog.federicocarrone.com/javascript-erlang-ruby-python-2013-part-i
原文的标题是:
Javascript, Erlang, Ruby and Python - The main languages I've used this year - Part I
而中文标题是译者凭空添加的?还是从哪里引来的?是断章取义从原文中截出来的么?
别用 CoffeeScript 了,你总有一天得学 JavaScript
我很怀疑这篇标题党译文的题目来自这句:
Someday you will have to learn JavaScript. That's one of the things I did this year. You should do it too.
纵观全文,原作者压根没有任何劝君不要写 CoffeeScript 的意思,作者强调如果你不懂 JavaScript 的话,你需要去看一些经典的 JavaScript 书籍并深入学习这门语言。作者后面引用了一些关于 CoffeeScript帮助你写更好的代码还是增加了一层复杂度
链接。注意,这里完全没有作者的主观观点,更没有这层复杂度是否是不必要的
的言论。
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, specially on projects where I work with other people.
我在一个大项目中使用了 CoffeeScript。我非常喜欢这门语言。直以我跟别人一直工作后,并了解了一下 JavaScript 后,就不那么喜欢了。
我觉得可能是译者所处的立场,让他断章取义的翻译了这篇文章,并加入了自己的观点。从原文丝毫看不出作者讨厌 CoffeeScript,而且作者暗含的意思是如果你要写复杂的项目,要与他人合作,你必须深入学习和理解 JavaScript,即便是你只写 CoffeeScript。
最近一直是 js 和 coffeescript 混着用。
js 最头疼的是 }
的闭合。最近写 angular,经常怕改写时漏写漏删的。
coffee 比较麻烦的是函数参数。比如 timeout
,或者 .hover( handlerIn(eventObject), handlerOut(eventObject) )
这种双函数参数的,写起来就有点麻烦,要格外留心。
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 是什么样子的。
各有所爱嘛,Coffee 没有明确的结束,看着好烦,还缺三元,不能忍。语法的问题,编辑器的一堆插件自动完成了,JS 写起来也就还好了,Textmate 里 fun+tab,搞定了
“天才,百分之一是灵感,百分之九十九是汗水。” 小时候看着这句成长,大了才知道 ND 有后半句,,
“但那百分之一的灵感是最重要的,甚至比那百分之九十九的汗水都要重要。 ”
看看当今学术界就知道,以前那些乌龟蛋挖的坑有多深,,,
用 Ruby 的人自然而然会喜欢用 CoffeeScript, 因为 Coffeescript 就是 inspired by Ruby 等等语言,同理,Rubylist 会选择 SASS 而不是 LESS.
不过如今 JavaScript 原生的 library 越来越多了,诸如 underscore 这种,也一样能提供类似 sugar syntax, 一样可以很方便的操作数组,Map 等等,更别说如今特别火的 MVC frameworks.. 所以没有 coffeescript 也一样可以灵活的使用 JavaScript 并且避开诸多的坑。
楼上有些人用 jquery 和 coffee 类比是不对的,一个是需要编译的语言,一个是原生的 library, 没有可比性。
#36 楼 @jeff_duan 因为看了半天题目,说的像是用 coffee 是因为 js 很难学不会一样 只能觉得是模仿这个逻辑。lz 就是想让我们争一争 但是不要和他争...
#36 楼 @jeff_duan 我前阵子才留意到的:coffee-script、backbone、underscore 的作者是同一人
看个人风格,有人喜欢写 Java,有人喜欢写 Ruby,还有人写 JavaScript
我还是比较建议大家用 coffee,对于不是 JavaScript 的牛人,很难些出结构化的代码,用 coffee 可以很快把代码都结构化。
有两点不好的地方
但是谁在乎呢
CoffeeScript 本身就不是一个必须用的语言,它不像 JavaScript 那么没选择性(浏览器只能跑 JavaScript)。但 CoffeeScript 给我们这些不喜欢 JavaScript 某些繁琐地方的人另外一种选择。
对熟悉 JavaScript 的人来说,CoffeeScript 没有任何学习成本可言。它只是简化了我们反复写的繁琐的代码,就如 jQuery 简化了 dom 操作。有的地方我们需要用类库来简化工作,但有的地方我们不得不用语言来简化工作。抱着“学习 CoffeeScript 就避免学 JavaScript”的想法才是大错特错。
要说 JavaScript 的优势,我能想到的就是一点:所有懂 CoffeeScript 的人都懂 JavaScript,但不是所有懂 JavaScript 的人都懂 CoffeeScript。这也是 Discourse 把所有 CoffeeScript 全部转成 JavaScript 的原因。但他们这么做是因为,作为一个开源项目,需要更广泛的贡献者。也不是因为 CoffeeScript 本身的原因。