CoffeeScript 是一门让人上瘾的语言

Javascript

屏幕快照 2017-04-17 上午2.48.37.png

昨天偶然去逛 CoffeeScript 官网发现,这门陪伴我时间最短,但是我最喜欢的语言已经发布了 2.0 版。虽然目前还在 Alpha 阶段,但也足以让我高兴。

新版本主要是对 ES6 的支持加强,比如 class 会被直接编译为 ES6 的 class,而不是 1.0 中用恶心的 prototype。类似的还有之前的剩余参数 (a, b, args...) 会被直接翻译为 function (a, b, ...args)

除了这些,还有对asyncawait的支持,这让我们在 CoffeeScript 上也可以使用这一最先进的生产力了,避免了回调地狱的产生,真是大好。不过需要注意的是,支持这些新特性需要你将 node.js 升级到至少 7.6+

我的标题里说了,CoffeeScript 是一门让人上瘾的语言。这在我身上已经得以验证,我认为优雅的程序员都要去学习它。就像它的名字一样,它可以让你干净利落地完成一件工作,就像喝着咖啡那样 decent。

这是我刚刚顺手写的一个脚本,因为我之前写程序习惯用四个空格缩进,直到今天我才注意到 CoffeeScript 官方推荐的是两空格。作为一个很懒的程序员,我当然不会一行一行地去改。因此我哼着歌写着代码,几分钟就完成了这飘着咖啡香味的代码。

fs = require 'fs'
path = require 'path'

dir = process.argv.pop()

listFiles = (dir) ->
  fs.readdirSync dir
    .forEach (file) ->
      file = path.join dir, file

      if (fs.statSync file).isDirectory()
        listFiles file
      else if /\.coffee$/.test file
        changeIndention file


changeIndention = (file) ->
  console.log file

  content = fs.readFileSync file, encoding: 'utf8'
    .split "\n"
    .map (line) ->
      line.replace /^(\s*)(.*)$/, (m, a, b) ->
        (a.substring 0, a.length / 2) + b
    .join "\n"

  fs.writeFileSync file, content, encoding: 'utf8'


listFiles dir

把它保存为文件 file.coffee,然后你只需要运行

coffee file.coffee {目标目录}

{目标目录} 替换为你的coffee文件存放的目录即可。此脚本会自动将此目录下所有的 .coffee 文件的缩进大小缩减为原来的一半。

我小小总结了下使用 CoffeeScript 的好处

  1. 干净,我对代码整洁干净有一些近乎偏执的追求
  2. 没有废话。相比之下 JavaScript 简直是一个废话连篇的语言,废话越多意味着越甘于平庸,有追求的人当有自己的语言。
  3. 保持敏锐。大家在写 JS, PHP, JAVA 这类比较大众化的语言时有没有这种感觉,写得越多越麻木,写到最后你自己都不知道在写什么玩意。这对程序员来说实际上是很要命的,写程序是需要想象力的,当你的想象力被冗长的语言消磨没了的时候,你的大脑就再也闪现不出那些美妙的创意了。而使用 CoffeeScript 时,你会不自觉地想要审视你的代码,让它直指需求所在,让它更贴近你想要的东西。

我使用 CoffeeScript 也已经有三年多的时间,目前我的绝大部分 JS 代码都由其完成。这个过程让我受益匪浅,甚至有段时间我都不愿去碰 PHP 这门宇宙第一大语言(手动滑稽。。。)。我建议大家可以去看看它的文档,这会让你以后的编码过程都心情愉悦的。

题外

四月一过半,可以不开空调在外浪的日子也已经屈指可数了。我赶紧抓住春天的尾巴,在周五把公司的小伙伴拉去完成承诺已久的爬山

IMG_2955.JPG

山顶的石板路,阳光很充足,四周没有遮挡,但是非常安静。人群过后,只听得见风声

IMG_2958.JPG

这是我爬完后,坐在路边的排水渠上等公交时照的。

IMG_2950.JPG

而当我终于爬上去的时候,脑子里回响的却是李宗盛的《山丘》。

已有 9 条评论
  1. 什么时候发布typecho 2.0呀!已经等4年了

  2. 十三姨爱我
    十三姨爱我

    已经等了typecho的下一个正式版好久咯~
    还有就是,博主的叽咕怎么实现的呢?

      1. 其实就是一个评论呀

          1. 十三姨爱我
            十三姨爱我

            后来查看网页源码发现了。不过我弄了一下,后面那个回复不知道该怎么去掉~瀑布汗!!!

              1. 我正在把它做成一个公用服务

                  1. 十三姨爱我
                    十三姨爱我

                    那是极好的!
                    对了,typecho都不再发release的了么?以后就直接上GitHub下载开发版就好了?!

  3. markwinds
    markwinds

    哈哈哈,看这个照片,我猜博主用的不是苹果手机 也好想出去走走啊

  4. 跨境电商数据分析
    跨境电商数据分析

    学习学习,必须的!谢谢!