Node深入浅出 - 第二章

114 阅读2分钟

介绍

Node 打破了过去JavaScript只能在浏览器中运行的局面, 统一了前后端编程环境, 大大降低了前后端转换所需要的上下文切换代价

什么是Node.js

Mode.js是一个基于Chrome v8引擎的JavaScript运行时环境。 使用了事件驱动、非阻塞I/O 的模型,使其轻量又高效。

运行时环境: 洋气的英文名叫 Managed Runtime Environment, 是一个平台, 它把运行在底层的操作系统和体系结构的特点抽象出来,承担了解释与编译、堆管理(Heap Management)、垃圾回收机制(Garbage Collection)、内存分配、安全机制等功能。 在运行时环境中开发的人可以不用关心底层的计算机处理器指令,把更多的精力投入到更为关键的业务逻辑中去。许多高级语言都有配套运行时环境, 如Java中的jre

发展历史

Node作者 Ryan Dahl 毕业于罗彻斯特大学数学系, 早期是一位从事Ruby on Rails 的 Web开发者。 为了解决Web服务器高并发问题, Ryan Dahl 尝试过Ruby、C、Lua但均已失败告终, 所以罗马并非一日建成

  • 2009 年 5 月 在Github上发布了最初版本
  • 2010 年 3 月 - Express 问世
  • 2011 年发布了Windows版本, 同年12月 Uber 线上开始使用 Node.js
  • 2013 年 12 月 - Koa 框架发布
  • 2014 年 12 月 创建了一个分支io.js, 开放、开源(刚刚成立的前几个月,就吸引了比整个 Node.js 历史上都多的活跃开发者。)
  • 2015 年 6 月 Node.js 版本0.12 和 io.js 版本3.3 合并为 Node 4.0 (隶属 Node.js 基金会)
  • 2016 年 10 月 - Yarn 包管理器发布
  • 截止目前2022-01-23   Node.js 17.4.0

Node维护了着两条发布流程线:

奇数版本每年的10月份发布,偶数版本第二年的4月份发布。偶数版本为稳定版

跨平台

期初, Node只能在Linux平台上运行, 后来微软投入了一个团队帮助Node兼容Windows平台

graph TD
   Node  --> libuv
   libuv --> *nix
   libuv --> Windows

Node基于libuv实现跨平台的架构示意图

应用场景

  1. I/O密集型: 聊天室 - 电商平台客服系统、 Web博客、 Web论坛

  2. CPU密集型: Node可以通过两种方式充分利用CPU,

    编写C++扩展添加子进程,将计算与I/O分离

所以CPU密集型应用Node并不怕, 合理调度是诀窍

  1. 分布式应用: 比如做一个数据平台。 需要在一个数据库集群中寻找需要的数据, Node可以并行的去查询多台数据库, 其实也是高效利用IO的应用

  2. 游戏开发领域: 游戏领域对实时和并发要求非常高,

  3. 工具类应用