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/ONode所有的会发生阻塞的操作都是异步的I/O 可以理解为从输入到输出之间的转化过程Node中的异步I/O因为Node的操作大多数都是异步,无法通过try catch捕获异常所以错误优先的回调函数 第一个参数为上一步的错误信息异步回调的问题 相比较于传统的代码1.异步事件驱动的代码不容易阅读 2. 异步事件驱动的代码不容易阅读 3 不容易调式 4 不容易维护 node内部的操作