Node.js学习笔记-01

入门篇:
Node.js采用了事件驱动非阻塞I/O的模型,利用了JavaScript的单线程模型和异步I/O的特性,使得Node.js能够高效处理大量的并发请求。

Node 的特点

1、异步I/O

2、事件与回调函数

3、单线程

4、跨平台

Node 的应用场景

1、I/O密集型

I/O密集的优势主要在于Node利用事件循环的处理能力,而不是启动每一个线程为每一个请求服务,资源占用极少。

2、是否不擅长CPU密集型业务

不适合长时间运行的计算,node没有提供多线程用于计算支持。但可以利用一下两种方式成分利用CPU:

  1. 编写C/C++的扩展。
  2. 如果单线程的Node不能满足需求,甚至用了C/C++扩展后还觉得不够,那么通过子进程的方式,将一部分Node进程当做常驻服务进程用于计算,然后利用进程间的消息来传递结果,将计算与IO分离,这样还能充分利用多CPU。

CPU密集不可怕,如何合理调度是诀窍。

3、分布式应用

模块机制

CommonJS规范

Node的模块实现

  • Node并非完全按照规范实现,而是对规范进行了一定的取舍,同时增加了少许自身需要的特性。
  • exports、require 和 module ,在node中引入模块需要经历如下三个步骤。
    • (1)、路径分析
    • (2)、文件定位
    • (3)、编译执行

在Node中模块分为两类:

核心模块(Node提供的模块)

在编译成可执行文件的过程中被编译进二进制文件。
可分为 C/C++编写(存放在Node项目的src目录下)的和JavaScript编写(存放在bin目录下)的两部分。

文件模块(用户编写的模块)

C/C++ 扩展模块

模块调用栈

包 与 NPM

前后端共用模块

模块的侧重点

AMD 规范

CMD 规范

兼容多种模块规范

总结

CommonJS提出的规范均十分简单,但是现实意义却十分强大。Node通过模块规范,组织了自身的原生模块,弥补JavaScript弱结构性的问题,形成了稳定的结构,并向外提供服务。NPM通过对包规范的支持,有效地组织了第三方模块,这使得项目开发中的依赖问题得到很好的解决,并有效提供了分享和传播的平台,借助第三方开源力量,使得Node第三方模块的发展速度前所未有,这对于其他后端JavaScript语言实现而言是从未有过的。从一定的角度上讲,CommonJS规范帮助Node形成了它的骨骼。只有苗壮的根,才能培养出茂盛的枝叶,并成长为参天大树。正是这些底层的规范和实践,使得Node有序地发展着,摆脱掉过去JavaScript纷乱和被误解的局面,进而进化成良性的生态系统

你可能感兴趣的:(node学习笔记,node.js,学习,笔记)