乐趣区

Node概念详解

1 编程语言的能力取决于什么
语言本身只提供定义变量 定义函数,定义类型,流程控制,循环结构之类的操作取决于运行该语言的平台(环境)对于 js 来说,我们常说的 js 实际是 ES, 大部分能力都是有浏览器的执行引擎决定的 BOM 和 DOM 可以说是浏览器开放出来的接口 javascript 能运行在哪取决于 这个环境有没有特定的平台
node.js 是一个基于 ChromeV8 引擎的 javascript 运行环境。node.js 使用了一个事件驱动、非阻塞式 I / O 的模型,使其轻量又高效
Node 就是 Javascript 语言在服务器端的运行环境
运行平台有两层意思 1 首先 js 语言通过 Node 在服务器运行 在这个意思上 Node 有点像 javascript 虚拟机 Node 提供大量的工具库,使得 javascript 语言与操作系统互动 2 Node 又是 javascript 的工具库 Node 选择了 javascript 不是 javascript 发展出来了一个 node,Node 可以用来开发服务端应用程序,Web 系统。分发数据请求 渲染 HTML
阻塞
用户不操作就会一直阻塞停顿上一行代码不执行完 下一行代码无法执行
非阻塞的优势
提高代码的效率充分利用单核 CPU 的优势改善 I / O 的不可预测带来的问题

Node 采用的 Chrome V8 引擎处理 javascript 脚本
V8 最大的特点就是单线程运行,一次只能运行一个任务 Node 大量采用大量异步操作即不是马上执行 而是插在任务队列的尾部 等到前面的任务运行完成后再执行这样就提高了代码的响应能力不知道用户什么时候操作交互当代码需要等待一个无状态的时候 就需要异步
进程

线程

I/O
Node 所有的会发生阻塞的操作都是异步的 I /O 可以理解为从输入到输出之间的转化过程
Node 中的异步 I /O

因为 Node 的操作大多数都是异步,无法通过 try catch 捕获异常所以错误优先的回调函数 第一个参数为上一步的错误信息

异步回调的问题 相比较于传统的代码
1. 异步事件驱动的代码不容易阅读
2. 异步事件驱动的代码不容易阅读
3 不容易调式
4 不容易维护

node 内部的操作

退出移动版