这集来聊什么是 Node.js,看看 Node.js 是为了解决什么问题而生的。

Node.js 的诞生

先来聊聊 Node.js 诞生的故事。

Node.js 是 2009 的时候由大神 Ryan Dahl 开发的,Ryan 的最初工作是使用 Ruby On Rails 框架开发 Web 项目。后来他总结出一个经验,一个高性能服务器应用,应该是满足 事件驱动,非阻塞 I/O 模型的。

Node.js 诞生

可以说有两点促成了 Node.js 的诞生。

  • 首先第一点,Ryan 发现 JS 语言本身的特点就是事件驱动并且是非阻塞 I/O 的,跟他的思路正是绝配。
  • 第二点,Chrome 的 JS 引擎,也就是 V8 引擎 是开源的,而且性能特别棒。于是 Ryan 就基于 V8 开发了 Node.js 。注意 Node.js 听名字好像是个 JS 库,其实不是的,Node.js 事实上是用 C++ 开发的。

Node.js 是一个基于 Chrome V8 引擎的 Javascript 运行环境

Node.js

所以说 Node.js 不是库,是一个运行环境,或者说是一个 JS 语言解释器

Node.js 最初的定位是提升 Ryan 自己的日常工作效率,也就是用来写服务器代码的。但是后来没有想到的是 Node.js 在前端领域却大放异彩。

Node.js 到底能做什么

一、后端开发

后端开发

先说几句 Node.js 在服务器端的发展。Node.js 的诞生带给人们的是个大大的惊喜,传统上 Web 开发者,前端用 JS 写,但是写服务器端代码的时候还必须用另外一种语言,类似 Ruby/Python/PHP/Java 等。但是 Node.js 出现之后,JS 前后端通吃了。如果去网上搜 Node.js 的资料,很多都是用 Node.js 去写服务器代码的。Node.js 开发后端,最著名的两个框架就是 ExpressKoa

二、前端开发

前端开发

Node.js 今天也成为了 Web 前端开发 必不可少的基础设施。注意,Web 前端JS 代码最终还是运行在浏览器中的,所以运行的时候,或者说在产品环境下,不依赖于 Node.js 。但是,Node.js 诞生以后,前端大爆发,类似 ReactVuejs 这样的前端框架的开发环境变得非常强大,Node.js 是这些开发环境运行的基础。

三、原生 App 开发

原生App开发

手机App,最主要分为iOS安卓阵营。这两个阵营里,其中 iOS 使用 Objective C 或者 Swift 开发,安卓使用 Java 开发。以前我们前端开发人员,如果想做 App,只能做 Web App 或者 混合App。实际上就是 HTML 代码套了一层浏览器,打包而成的 App。但是这种 App 的用户体验不够友好。Node.js 的诞生,直接促成了 React Native 的诞生,现在使用 JS,咱们前端开发人员也可以开发 原生 App 了。例如咱们 ITFun 的 App,就是使用了 React Native 来开发的,大家有兴趣,可以在官网底部下载了体验一下。

四、桌面软件开发

桌面软件开发

至于桌面软件,大家编程经常会用到的 VS Code 编辑器也是使用基于 Node.jsElectron 开发而来的。
除了 VS Code 外,还有很多知名的桌面应用都是使用这一套技术开发的。

这就是关于 Node.js 诞生,以及它如何从纯后端发展到如今无所不能的故事。

Node.js 的性能如何?

因为 Node.js 使用了非阻塞式 I/O 的模型,这就使它的性能非常高。尤其是服务端开发,在处理高并发上有非常大的优势。咱们举几个例子来说明:

  • 淘宝,为了处理双 11 的高并发,目前已经将所有 PHP 代码迁移到了 Node.js
  • Paypal,从 Java 迁移到 Node.js 以后。每秒处理的请求数增加了两倍,接口的请求时间减少了35%,文件代码减少44%,开发效率提高了两倍
  • LinkedIn(领英)4.5亿 用户量,由 Ruby on Rails 切换到了 Node.js。某些场景下,性能提高20倍,服务器由30个减少到了3个
  • Uber,使用 Node.js 每天处理20亿个远程过程调用 (Remote Procedure Call,RPC)。

以上这些案例,都是 Node.js 性能强大的证明,足以证明 Node.js 的成功。

已添加到喜欢了