《深入浅出nodejs》阅读笔记

闲来无事,想仔细了解一下nodejs,在知乎上查了一下node的读物,很多人推荐这一本朴灵的书。于是开个坑,读一读

我的阅读笔记一向如此:摘抄为主,个人感悟为辅。主要是便于自己复习回顾。(单押有没有!)

1、Node简介

这一章主要讲了Node的起源和其特点,包括应用场景

1.1 Node的起源

Node的作者 Ryan Dahl 是一个C/C++的程序员,C语言偏底层,偏硬件。而我们的作者先生的工作主要是围绕高性能的web服务器来进行的。他总结出了高性能的Web服务器的特点为: 事件驱动和非阻塞I/O。

高性能、符号事件驱动、没有历史包袱

在选择语言的时候,JavaScript脱颖而出: C语言门槛太高(懂得都懂);Lua有很多阻塞IO库,构建非阻塞IO库阻力大;Ruby虚拟机性能差。

而JavaScript的开发门槛低,历史包袱少,后端没有市场。并且JavaScript在前端有广泛的事件驱动方面的应用。

1.2 Node的特点

  • 异步I/O

    在Node中,绝大多数的操作都以异步的方式进行调用

  • 事件与回调函数
  • 单线程

    在Node中,JavaScript与其余线程是无法共享任何状态的。单线程的最大好是不用像多线程编程那样处处在意状态同步的问题,这里没有死锁的存在,也没有线程上下文交换所带来的性能上的开销。

单线程的缺点则是无法利用多核CPU、错误会引起整个应用退出,大量计算占用CPU导致无法继续调用异步I/O

  • 跨平台

1.3 Node的应用场景

  • I/O 密集型
  • CPU密集型,通过合理的调度可以胜任
  • 分布式应用

2、 模块机制