CoffeeScript 是一门让人上瘾的语言

im, 无色
im, 无色
im, 无色
919
文章
0
评论
2020年7月16日17:03:38 评论 2,307
CoffeeScript 是一门让人上瘾的语言

昨天偶然去逛 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 这门宇宙第一大语言(手动滑稽。。。)。我建议大家可以去看看它的文档,这会让你以后的编码过程都心情愉悦的。

出处:https://joyqi.com/javascript/awesome-coffescript.html

im, 无色
  • 本文由 发表于 2020年7月16日17:03:38
CoffeeScript介绍 JavaScript

CoffeeScript介绍

CoffeeScript 是一门编译到 JavaScript 的小巧语言. 在 Java 般笨拙的外表下, JavaScript 其实有着一颗华丽的心脏. CoffeeScript 尝试用简洁的方式展...
复制粘贴的高级玩法 JavaScript

复制粘贴的高级玩法

想做一个好用的在线编辑器,不管是地图编辑器、PPT 创作平台还是通过拖拽快速创建活动页面的编辑器等等,必然要给用户提供各种快捷的操作方法。如非常常用的复制粘贴功能。 举个例子,在 iPresst 创作...
JS粘贴事件paste简单解析及遇到的坑 JavaScript

JS粘贴事件paste简单解析及遇到的坑

在用户执行粘贴操作的时候,js能够获得剪切板的内容,本文讨论一下这个问题。 目前只有Chrome支持获取剪切板中的图片数据。还好需要这个功能的产品目前只支持Chrome和Safari,一些Chrome...
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: