1.诞生:javascript
Ryan Dahl 2009年3月宣布建立基于v8的轻量级库,5月发布第一版java
最初基于linux系统,2011年7月发布windows版本node
2012年交给IsaacZ.Schlueter(npm包管理者和做者)linux
2.为什么选择javascript:web
设计高性能web服务器的要点:事件驱动、非阻塞I/Onpm
事件驱动:javascript作两件事:操做DOM和操做BOM,何时干?须要干的时候干。何时须要干?事件被触发的时候。即在事件被触发以前,全部的结构被静态的呈现出来,在事件触发以后,动态的行为发生,从新产生新的静态结构,事件与状态构成了事件驱动开发的基本要素。编程
非阻塞I/O:js单线程,经过回掉函数达到非阻塞的目的,非阻塞就是程序会一直按顺序执行,直到全部代码执行完毕,当遇到须要等待即异步函数的时候,直接跳过,等同步队列执行完,再来执行。windows
3.为何叫node:后端
开始起名为web.js,单纯做为web服务器使用,随着发展,构建了服务器,客户端,命令行工具等,发展为一个强制不共享任何资源的单线程、单进程的系统,为构建大型分布式应用提供基础设施,目标是构建快速的可伸缩的网络应用平台。经过通讯协议构建许多node,每一个node进程都是构建这个网络应用的一个节点。浏览器
4.对javascript的意义:
Node与浏览器对比
Node与浏览器运行机理相同,是浏览器在协议栈另外一边的倒影。Node打破了javascript只能在浏览器中运行的局面,先后端环境统一,下降了先后端转换的代价。
5.特色:
异步的I/O;同步io任务耗时是全部任务耗时之和,异步优点显而易见。
事件与回掉函数;事件编程轻量级,松耦合,只关注事物点。
单线程;不须要向多线程那样在乎状态同步问题,不会有死锁存在
缺点:没法利用多核cpu,错误引发整个应用退出,
大量计算调用cpu会致使没法异步调用io(child_process)
跨平台:基于libuv实现跨平台