昨天偶然去逛 CoffeeScript 官网发现,这门陪伴我时间最短,但是我最喜欢的语言已经发布了 2.0 版。虽然目前还在 Alpha 阶段,但也足以让我高兴。
新版本主要是对 ES6 的支持加强,比如 class
会被直接编译为 ES6 的 class
,而不是 1.0 中用恶心的 prototype
。类似的还有之前的剩余参数 (a, b, args...)
会被直接翻译为 function (a, b, ...args)
。
除了这些,还有对async
和await
的支持,这让我们在 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 的好处
- 干净,我对代码整洁干净有一些近乎偏执的追求
- 没有废话。相比之下 JavaScript 简直是一个废话连篇的语言,废话越多意味着越甘于平庸,有追求的人当有自己的语言。
- 保持敏锐。大家在写 JS, PHP, JAVA 这类比较大众化的语言时有没有这种感觉,写得越多越麻木,写到最后你自己都不知道在写什么玩意。这对程序员来说实际上是很要命的,写程序是需要想象力的,当你的想象力被冗长的语言消磨没了的时候,你的大脑就再也闪现不出那些美妙的创意了。而使用 CoffeeScript 时,你会不自觉地想要审视你的代码,让它直指需求所在,让它更贴近你想要的东西。
我使用 CoffeeScript 也已经有三年多的时间,目前我的绝大部分 JS 代码都由其完成。这个过程让我受益匪浅,甚至有段时间我都不愿去碰 PHP 这门宇宙第一大语言(手动滑稽。。。)。我建议大家可以去看看它的文档,这会让你以后的编码过程都心情愉悦的。
题外
四月一过半,可以不开空调在外浪的日子也已经屈指可数了。我赶紧抓住春天的尾巴,在周五把公司的小伙伴拉去完成承诺已久的爬山
山顶的石板路,阳光很充足,四周没有遮挡,但是非常安静。人群过后,只听得见风声
这是我爬完后,坐在路边的排水渠上等公交时照的。
而当我终于爬上去的时候,脑子里回响的却是李宗盛的《山丘》。
什么时候发布typecho 2.0呀!已经等4年了
马上出4.0
已经等了typecho的下一个正式版好久咯~
还有就是,博主的叽咕怎么实现的呢?
其实就是一个评论呀
后来查看网页源码发现了。不过我弄了一下,后面那个回复不知道该怎么去掉~瀑布汗!!!
我正在把它做成一个公用服务
那是极好的!
对了,typecho都不再发release的了么?以后就直接上GitHub下载开发版就好了?!
哈哈哈,看这个照片,我猜博主用的不是苹果手机 也好想出去走走啊
学习学习,必须的!谢谢!