最新发布《数智时代的AI人才粮仓模型解读白皮书(2024版)》,立即领取! 了解详情
写点什么

CoffeeScript 1.7 发布: 增加了无括号链式调用、多行字符串等特性

  • 2014-02-18
  • 本文字数:1494 字

    阅读完需:约 5 分钟

Jeremy Ashkenas 刚发布了 CoffeeScript 的 1.7 版,并对流行的 JavaScript 转换做了一些备受期待的修改。

版本 1.7 中包含了一个非常受欢迎的语言特性请求,支持无括号链式调用。在 1.7 版之前,如果有开发者想要链接函数,则必须使用括号,而在 CoffeeScript 中,函数是没必要使用括号的。

复制代码
// 1.7 之前 - 链式调用需要括号
$('#element').addClass('active').css({ left: 5 });
// 1.7 - 没有括号了
$ '#element'
.addClass 'active'
.css { left: 5 }

这一版还实现了对多行字符串的正确支持。在之前版本的 CoffeeScript 中,字符串(或字符串字面量)留下了新行和空格,而忽略了\\操作符,这个符号的意思是要让两个字符串留在同一行上。在 1.7 版中,这个问题也被解决了,开发人员在 CoffeeScript 中可以清楚地格式化多行字符串了。

复制代码
console.log '''The quick brown fox jumped over the \
lazy dog'''
// 1.7 版之前的输出
The quick brown fox jumped \nover the lazy dog
// 1.7 版现在的输出
The quick brown fox jumped over the lazy dog

对数组解构的扩张也给加上了,这个之前曾经是 CoffeScript 项目中开放时间最长的问题

复制代码
# 取得 animals 数组中的最后一项
animals = [ 'cat', 'dog', 'hippopotamus' ]
# 1.7 版之前
hippo = animals[animal.length - 1]
# 1.7 版现在的样子
[..., hippo] = animals
# ... 两个都会被转换成...
hippo = animals[animals.length - 1];

还有更方便的数学操作符。包括新的平方操作符、向下取整除,以及一个模除操作符 (返回除法操作的余数)。

复制代码
# 平方
2 ** 2
# 转换成...
Math.pow(2, 2);
# 向下取整除
2 // 3
#转换成...
Math.floor(2 / 3)
# 模除
2 %% 3
#转换成...
var __modulo = function(a, b) { return (a % b + +b) % b; };
__modulo(2, 1);

其它改进包括让 CoffeeScript 跟 Node.js 保持一致,这样它的 require 语句不会自动运行一个目录中的每个文件,而是表现的像 Node 一样,只运行 index.coffee 文件。

1.7 版本发布的大部分工作 (实际上过去几年大部分的 CoffeeScript) 都是由社区成员完成的。" CoffeeScript 中合并了超过一百多个开发人员的贡献和补丁",Jeremy 说。" CoffeeScript 之所以乐于采用,是因为那些想法能够吸引 JavaScript 程序员。"考虑到 Michael Srb 对 1.7 版本所作的贡献, Jeremy 对他致以了 特别的感谢

CoffeeScript 确实享有巨大的声望,达到了 GitHub 上最受欢迎的十大项目之一的高度。在 Ruby on Rails (自 3.1 版开始) 之类的框架中也出现到了对它的支持,微软的 Visual Studio 也通过 Web Essentials 插件对它提供了支持。此外,JavaScript 的创建者 Brenden Eich 也曾表示过,CoffeeScript 在他思考 JavaScript 的未来时产生了怎样的影响。

GitHub 用户 stefanpenner 评论说在 CoffeeScript 中 “…ES6 import export 将会成为关键…”

Jeremy 确实在 CoffeeScript 的评述中提到了 ES6 的特性,

CoffeeScript 几乎要完成了— 过去两年到现在都十分稳定— 但将来还会继续有小幅度增长。比如说:有新的 JavaScript 特性出现时提供支持,进一步改进源码映射的支持, 为文学编程风格进一步打磨,让编译器内部更加精简。

曾经有个 Kickstarter 项目,它要重写 CoffeeScript 编译器。这个项目成功地募集到了资金,被称为 CoffeeScriptRedux 。Jeremy 认为有人为 CoffeeScript 创建新的编译器是好事, " 面向一种语言的编译器越多—那种语言越健康。CoffeeScript 也是,它能从多个独立的编译器中受益。"

你马上就可以在 GitHub ,或 CoffeeScript 官方网站上得到 CoffeeScript 的 1.7 版。

原文英文链接: CoffeeScript 1.7 Released: Adds Chaining Without Parenthesis, Multiline Strings and More

2014-02-18 18:581838
用户头像

发布了 45 篇内容, 共 24.4 次阅读, 收获喜欢 10 次。

关注

评论

发布
暂无评论
发现更多内容

火山引擎 MARS X 今日头条 | 大型App高效协同开发,实现研发流程自动化

字节跳动终端技术

今日头条 字节跳动 研发 火山引擎MARS

TASKCTL 调度设计器作业属性的应用

TASKCTL

分布式 元数据区 ETL 自动化运维 任务调度器

当 API 成为服务,我们将连接一切!

鼎道智联

MySQL事务并发带来的问题以及其解决方案分析

乌龟哥哥

4月月更

【云管平台】三大云管平台厂商详细介绍

行云管家

云计算 云管平台 云堡垒机 云厂商

组合式应用新利器?SaaS新时代事件网格如何解决集成标准化问题

华为云开发者联盟

Serverless 无服务器 事件网格 组合式应用

增长270%!PWA 在 Chrome 平台迎来井喷式增长

鼎道智联

豆瓣评分9.0,时隔6年,“Linux命令行圣经”新版终于来了!

图灵教育

Linux shell脚本编程

Flink整合ElasticSearch详细指南及踩坑记录

五分钟学大数据

4月月更

2022年中国茶饮产业洞察

易观分析

茶饮 产业洞察

小程序运行时+SAAS级服务,提升研发降本增效作用

Speedoooo

flutter APP开发 SaaS平台 小程序容器 小程序运行时

NFT数字藏品交易平台系统开发搭建

薇電13242772558

NFT 数字藏品

项目中如何优雅的消除if-else

Rubble

4月日更 4月月更

TiDB 在连锁快餐企业丨海量交易与实时分析的应用探索

TiDB 社区干货传送门

《数字经济全景白皮书》Z世代用户洞察篇(2)重磅发布!

易观分析

Z世代

书单 | “阿里云数字新基建”系列丛书全家福来啦!

博文视点Broadview

关于 WordPress 你了解多少?

海拥(haiyong.site)

4月月更

大咖说·智篆商业|颜杰华:数字经济时代,不确定性中的确定性

大咖说

阿里巴巴 数字经济数字时代 数智化 存量时代

人人都可以学会的产品手册制作方法

小炮

产品宣传手册

华为云物联网高级攻城狮的4年配置中心实践分享

华为云开发者联盟

开源 DevOps 配置中心 Apollo 业务配置

java高级用法之:JNA中的Structure

程序那些事

Java 程序那些事 JNA 4月月更

GPU底层技术、全球市场格局分析(中)

Finovy Cloud

人工智能 云计算 云服务器 GPU服务器 GPU算力

什么时候需要使用CRM系统?

低代码小观

CRM 客户关系管理 低代码开发 CRM系统 客户关系管理系统

基于LAXCUS开发分布式视频转码应用

LAXCUS分布式操作系统

分布式计算 分布式应用 视频转码

轻量级兼顾本地体验,PWA应用到底有多卷?

鼎道智联

LSM-Tree - LevelDb了解和实现

懒时小窝

LSM树 LSM-Tree

CrashSight异常崩溃管理解决方案

WeTest

桌面运维工程师需要会哪些技能?主要是做什么的?

行云管家

云计算 运维 运维工程师 IT运维 云运维

TASKCTL 变量的函数表达式运算

TASKCTL

批量任务 调度引擎 ETL 自动化运维 调度任务

【数据安全与流通专题】星环科技春季新品发布周

星环科技

阿里云代码托管平台,不限容量,免费使用

阿里云云效

云计算 阿里云 代码管理 代码托管 阿里云代码托管

CoffeeScript 1.7发布:增加了无括号链式调用、多行字符串等特性_JavaScript_Burke Holland_InfoQ精选文章