Node.js学习笔记-01

Node.js采用事件驱动和非阻塞I/O,擅长处理I/O密集型任务,如构建高效服务器。其单线程模型与异步特性使其在处理并发请求时表现优秀。Node.js通过CommonJS模块系统组织代码,NPM则管理第三方包,共同促进Node.js生态的发展。对于CPU密集型任务,Node.js可通过C/C++扩展或进程间通信优化。
摘要由CSDN通过智能技术生成

入门篇:
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纷乱和被误解的局面,进而进化成良性的生态系统

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值