Nodejs入门(一)

1、nodejs是ecmascript的runtime

2、nodejs使用了event-driven(事件驱动)non-blocking I/O model(无阻塞的io模型)

非阻塞:I/O时函数立即返回,进程不等I/O完成

event-driven:Nodejs靠事件进行驱动

3、cpu密集 vs I/O密集

cpu密集:压缩、解压、加密、解密

I/O密集:文件操作、网络操作、数据库

因为JS操作是I/O密集,所以Nodejs是JS在serves上面的runtime

4、高并发应对之道

增加机器数

增加每台机器的cpu数

5、Nodejs单线程

单线程只针对主进程,I/O操作系统底层多线程调度(Nodejs自己是单线程,但它有一部分任务交给操作系统自己去做多线程)

单线程不是单进程

6、Nodejs应用场景

Web Server

本地代码构建(编译之类)

二、Nodejs开发环境与调试工具

1、环境

CommonJS 规范

global 对象(类似于js里面的window对象)

process 当前执行的进程

2、CommonJS规范

每个文件都是一个模块,都有自己的作用域

在模块内部module变量代表模块本身

module.exports属性代表模块对外接口(将模块的一些东西输出)

require规则

/ 表示绝对路径,. / 表示相对于当前文件的

支持js、json、node的拓展名

require特性

module被加载的时候会执行一遍,并进行缓存,第二次直接用缓存里面的结果

当一个模块被循环加载(a依赖b,然后b又依赖a),那么只会输出已经执行的部分(a执行在b依赖a之前a该执行的部分)

3、global全局对象

CommonJS

Buffer、process、console

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wspjzd.html