在 Rails 5 应用中使用 ES6 来替代 CoffeeScript(上)

什么是 CoffeeScript?

coffee-logo.png

CoffeeScript 是一门编译到 JavaScript 的小巧语言. 在 Java 般笨拙的外表下, JavaScript 其实有着一颗华丽的心脏. CoffeeScript 尝试用简洁的方式展示 JavaScript 优秀的部分。
CoffeeScript 的指导原则是: "她仅仅是 JavaScript". 代码一一对应地编译到 JS, 不会在编译过程中进行解释. 已有的 JavaScript 类库可以无缝地和 CoffeeScript 搭配使用, 反之亦然. 编译后的代码是可读的, 且经过美化, 能在所有 JavaScript 环境中运行, 并且应该和对应手写的 JavaScript 一样快或者更快。
—— http://coffeescript.cn

为什么要用CoffeeScript?

  • 更少,更紧凑,和更清晰的代码;
  • 通过规避和改变对 JavaScript 中不良部分的使用,只留下精华,让代码减少出错率,更容易维护;
  • 在很多常用模式的实现上采用了 JavaScript 中的最佳实践;
  • CoffeeScript生成的JavaScript代码都可以完全通过JSLint的检测。

什么是 ES6?

ECMAScript 6.0(简称ES6)是JavaScript语言的下一代标准,已经在2015年6月正式发布了。它的目标,是使得JavaScript语言可以用来编写复杂的大型应用程序,成为企业级开发语言。
标准的制定者有计划,以后每年发布一次标准,使用年份作为版本。因为ES6的第一个版本是在2015年发布的,所以又称ECMAScript 2015(简称ES2015)
—— http://es6.ruanyifeng.com/#docs/intro

为什么替代?

有很多人发文表达对于三种正在热点上的编译到 Javascript 的语言的看法(这三种分别是 ES6,CoffeeScript 和 TypeScript):

可以看到 CoffeeScript 是一片唱衰的局面,究其原因,也可以参考尤小右在知乎上的发言。

作者:尤雨溪
链接:https://www.zhihu.com/question/22323967/answer/21015056
来源:知乎
著作权归作者所有,转载请联系作者获得授权。

曾经用了大概一个礼拜左右,后来换回来了 。个人觉得CS的一些语法简化还是不错的(尤其是array comprehension和arrow function),但同时还引入了一些semantic上的不同,掩盖了很多JS本身的东西。比如用class掩盖了构造函数和原型链,把JS的原型继承硬套上了OO的外衣。还有一些不太明显的行为上的差异,比如variable shadowing(因为不用var所以在一个函数里没法覆盖同名的外层变量),implicit return(总是会返回最后一个expression的值)之类。另外就是有时候能省括号有时候又不能省... 这些问题导致我在写CS的时候会无法遏制地在脑子里把写下来的CS人工编译成JS... 时间长了感觉比写原生JS还累。
也就是说如果你深入了解并习惯了JS的各种细节之后,换到CS反而会带来一层额外的思考负担。这种情况在长期以JS作为主力语言的开发者身上比较常见。相比之下,新手、从其他语言转过来的、或者是主力语言不是JS并且没有也不想去了解JS各种坑的开发者会比较容易接受CS(我估计CS的一大部分用户都是rails开发者)。
另一方面就是生态圈上的原因:CS的项目接到Pull Request的概率会低很多(写CS的会愿意开JS项目的PR,但写JS的一般不乐意开CS项目的PR),不利于开源协作。

Ruby on Rails 开发框架默认用 CoffeeScript , 其为 RoR 开发带来了效率和代码可读性的大幅提升,Coffeescript 编程类似 Ruby 语法,使其作为 Ruby on Rails 开发者来说入门难度不高,但要熟练运用还需练习。正如上面尤小右所说的一样,写 CoffeeScript 的人绝大多数都是 Rails 开发者。

本人作为一个使用 Ruby 的开发者自然会接触到 CoffeeScript,不过对于这种简化开发,为了少写代码而少些代码的东西确实有些无法接触,或许正如上面尤小右所说的一样,我之前写过很长时间的 Javascript(或者说 jQuery),在写 CoffeeScript 的时候有一层额外的思考负担,感觉比写原生 JS 还累(有类似想法的除了 CoffeeScript 之外,还有 Ruby on Rails 的模板引擎 slim ,所以一直坚守 Rails 自带的模板 ERB)。所以当听说 Ruby on Rails 已经可以使用 ES6 代替 CoffeeScript 并且可以和 Assets Pipeline 一起使用,就迫不及待的想要试一下,虽然相关的 Gem 包都还没有发布 stable 版本。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,590评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,808评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,151评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,779评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,773评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,656评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,022评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,678评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,038评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,756评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,411评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,005评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,973评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,053评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,495评论 2 343

推荐阅读更多精彩内容

  • TITLE: 编程语言乱炖 码农最大的烦恼——编程语言太多。不是我不学习,这世界变化快! 有时候还是蛮怀念十几、二...
    码园老农阅读 5,294评论 2 35
  • 大学要教会你什么?或者说,你要在这个大学经历怎样的生活,获得什么? 在大学里,每个人都有自己的轨迹,没有了高中那...
    若栀阅读 369评论 2 4
  • 内心的强大,归根结底就是敢于直面现实,能做到遇事全力以赴,但又因识得天命而有所节制。(摘自人民日报50) 在遇...
    临淄茂业DDM黄红阅读 161评论 0 0
  • 十年了,十年如一梦。 十年前的夏天,好朋友教会了我骑自行车。后来常常往返于小镇与家之间,那条笔直的...
    叮叮当当叮叮当当当阅读 234评论 4 0