**
Node.js
1、定义
它是一个Javascript运行环境(简单来说就是可以解析、执行js代码),不是一门语言/库/框架
,依赖于Chrome V8引擎进行代码解释 (1)Node.js中的JavaScript没有BOM、DOM,只有ECMAScript (基本语法),因为服务端不操作页面
(2)在Node这个javascript执行环境中为js提供了一些服务器级别的操作API(文件读写、构建网络服务、网络通信、http服务器等)
2、特性:
优点有(基于V8的优点):
- 采用事件驱动、异步编程,为网络服务而设计
- Node.js非阻塞模式的IO处理
- Node.js轻量高效
- Node.js使用Google V8 JavaScript 引擎,
因为:
V8是基于BSD许可证的开源软件
V8速度非常快
V8专注于网络功能,在HTTP、DNS、TCP等方面更加成熟
使用事件驱动、非阻塞IO模型(简单来讲就是异步)、轻量高效
缺点有:
- 单进程,单线程(有办法解决的),不能充分的利用多核CPU服务器
- 可靠性低,一旦代码某个环节崩溃,整个系统都崩溃(因为是单线程)
- 开源组件库质量参差不齐,更新快,向下不兼容
解决的缺点的方法:
- 多进程绑定在同一个端口侦听。
- 开启多个进程,每个进程绑定不同的端口,用反向代理服务器如 Nginx 做负载均衡
- 一个进程负责监听、接收连接,然后把接收到的连接平均发送到子进程中去处理
Node.js能做什么
1、Web服务器后台(java、php做的node.js都能做)
2、命令行工具,Node.js把JavaScript的易学易用和Unix网络编程的强大结合到了一起
3、Node.js是事件驱动的。开发者可以在不使用线程的情况下开发出一个能够承载高并发的服务器。(高并发:简单来说,指通过设计保证系统能够高效并行处理很多请求。)
4、大多数与JS相关的包都放在npm上
有了npm之后,一条命令就可以下载不同的库/框架,不用再到各个库/框架的官网上去下载