Node.js Interactive 2016 North America 纪行

受 Node.js 基金会的邀请到 Node.js Interactive 2016 North America 做了一次 talk,以下是个人的一些记录。

关于 Node.js Interactive

Node.js 相关的技术会议主要包括

  • 每年夏天在旧金山举办的 Node Summit,规模较大,主要关注 Node.js 在各种企业/组织(如 ebay,NASA,Netflix 等)中的应用和 Node.js 生态系统方面的议题,偏架构/应用开发
  • 每年在世界各地举办的多场 Node Conf,规模不等,主要集中在欧洲和南北美洲,有点类似 JS Conf,内容比较广泛,主要由来自当地的开发者做分享。今年规模最大的应该是 Node Conf EU。
  • 每年在纽约举办的 EmpireNode,规模中等,面向开发者社区,内容也比较广泛
  • 由 Node.js 基金会在世界各地举办的 Node Live,规模比较小,内容取决于提交,主要是为了推广 Node.js 和接触世界各地的开发者,会去到一些当地不举办 Node 会议的地方(比如北京)

Node.js v6 LTS 杂谈(一):LTS 与 Node.js 的版本、分支

2016 年 10 月 18 日,Node.js v6 LTS (Boron) 发布,这也是 Node.js 启用 LTS 发布计划以来,第一次同时迎来两个 active LTS(v4 与 v6)。这系列文章将讲述 Node.js v6 LTS 带来的一系列变化,本篇主要围绕 LTS 展开。如果读者还对 Node.js LTS 的发布流程不了解,可以先阅读本篇,否则可以直接跳过阅读下一篇关于 Node.js Core 的变动。

Node.js LTS 计划

Node.js core 在 Node.js 与 io.js 合并后,为了保证发布稳定有序,让开发者能够合理安排升级,开始使用 LTS(Long Term Support)来规划发布周期。第一个 LTS 版本是 v4,发布于 2015 年 10 月。在这个规划下,Node.js 的版本相当于 master 分支在特定时间下经过稳定化处理的快照,时间到了就将 master 分支上稳定的部分整合起来,发布新的版本,因此 Node.js 的发布是以时间的流逝为准,在保证兼容性靠拢的前提下跳版本,而不是以兼容性和新

arguments 对象的老历史

本文经作者 柯拓 授权转载。原文地址:http://www.cnblogs.com/ziyunfei/p/5890322.html

引题:为什么 JavaScript 中的 arguments 对象不是数组 http://www.zhihu.com/question/50803453

JavaScript 1.0

1995 年, Brendan Eich 在 Netscape Navigator 2.0 中实现了 JavaScript 1.0,arguments 对象在那时候就已经有了。当时的 arguments 对象很像我们现在的数组(现在也像),它有一些索引属性,对应每个实参,还有一个 length 属性,代表实参的数量,还有一个现在浏览器已经都没有了的 caller 属性(等价于当前函数的 caller 属性)。但是,和现在的 arguments 对象不同的是,当时的 arguments 不是一个特殊的本地变量,而是作为函数的属性(现在仍保留着)存在的:

```j

解读 V8 GC Log(二): 堆内外内存的划分与 GC 算法

上一篇文章介绍了理解 V8 GC Log 的意义在哪,简单介绍了一下 V8 GC 的整体特征。在这篇文章里,我们介绍 V8 中堆内存的划分与新老生代的 GC 算法。这些基础知识是理解 V8 GC Log 的关键,不过这篇文章的介绍点到为止,能够读懂 V8 GC Log 即可,以免把大家在细节中带迷路。

V8 堆外内存的划分

在 V8 中,大部分的对象都直接在堆上创建(虽然 V8 的优化编译器会将一些静态分析后确定完全本地的对象放到栈上,即所谓的逃逸分析 = Escape Analysis,此处不赘述)。V8 将堆划分成了几个不同的空间(space,以下 以 4.x 为准,老版本有更多),其中新生代包括一个 New Space,老生代包括 Old Space,Code Space,和 Map Space,此外还有一个特殊的 Large Object Space 用于存储特别大的对象(也属于老生代)。V8 的用户还可以自行维护堆外内存,并将这些内存的数据上报给 V8,帮助 V8 调整 GC 的策略和时机。

解读 V8 GC Log(一): Node.js 应用背景与 GC 基础知识

前言

本文基于我在 Node.js 基金会主办的 Node Live Beijing 的分享,因为微软准备了一个翻译,现场临时把英文的分享改成中文了,有点磕巴。加上分享时长有限很多地方没有展开,于是现在事后来用文字再详细写一下这个题目。

本文是该系列的第一篇,第二篇请点这里:解读 V8 GC Log(二): 堆内外内存的划分与 GC 算法,第三篇还在编写中。

背景:阿里的 Node.js 应用

阿里是国内的大公司里使用 Node.js 较多的一家,目前大部分的场景是在阿里内部的一系列分布式系统/服务/中间件之上,使用 Node.js 来开发原来使用 PHP/Java 开发的应用层的程序。在解决回调维护的问题上,大多使用 ES6 generator 来编写视觉上同步的代码。目前阿里基于 Koa 开发了一个企业级框架来集成运维接入、基础设施接入等各部门内共同的需求,各个部门再在此之上根据各自的业务和技术架构定制不同的 Web 框架。

![](//alinode-assets.oss-c