1.Node作者:Ryan Dahl
JavaScript是一门前端脚本语言,一门语言会有自己的运行环境,JavaScript的运行环境就是我们的浏览器。
node是JavaScript的后台运行环境。
node是使用Chrome开源的V8引擎为基础搭建的运行环境。
并且在V8引擎中添加了服务器语言应该有的功能,如文件系统,模块,包,操作系统API,网络通信等由此产生了node。
Node = javaScript核心 + 扩展功能
前端的js是受到很大的限制的,是运行在浏览器里的,处理浏览器缓存,JavaScript是不能操作文件的。
1.1 什么是node(官方介绍)
Node.js是一个基于Chrome V8引擎的JavaScript运行环境。
1.2 Node优势:
Node.js使用了一个事件驱动
、非阻塞式异步I/O
的模型输入/输出(Input/Output)、使用轻量又高效。Node的包管理器npm是全球最大的开源库生态系统。
1.3 Node.js与JavaScript区别
Node.js : 一个可以运行JavaScript的运行环境,是基于 Chrome V8 引擎,并且对JavaScript语言进行了增强,使JavaScript具有服务器语言的开发的能力(操作文件,读取系统信息,网络通信等)。
1.4 Node.js特点:
| single Thread | 单线程 |
| Non-blocking I/O | 非阻塞异步I/O |
| Event Driven | 事件驱动 |
2.Node安装运行
2.1 官网下载
2.2 检查是否安装成功
按住shift + 鼠标右键打开powershell输入
$ node -v
$ npm -v
2.3 运行模式
REPL模式(Read-Evaluate-Print-Loop)输入 - 求值 - 输出 - 循环
(类似于浏览器控制台)
$ node
ctrl + c 退出REPL模式
2.4 运行js文件
$ node index.js
2.5 常用DOS命令
磁盘操作系统(Disk Operating System)DOS
dir 显示当前文件夹中所有文件及文件夹列表
cd 进入文件夹(../上一层文件夹)
exit 退出命令行
二.Node三大特点
1. Node.js 单线程
在传统服务器模型中,大多都使用多线程来解决并发问题,每一个客户端连接时就创建一个线程。
并发:同一时间有多个用户访问服务器
高并发:高并发是指可以让软件系统在一段时间内能够处理大量的请求。
2.非阻塞异步I/O
当某个I/O执行完毕时将以事件的形式通知执行I/O操作的线程,线程执行这个时间的回调函数。
Node适合I/O操作较多的服务器
例子:餐厅服务员招待客人
阻塞I/O:餐厅有多个服务员(多线程),一个服务员对应一个客人,客人从点菜到点菜结束的期间,服务员都会被闲置不做任何事情,直到这桌客人点完菜,服务员才能招待下一桌客人。
非阻塞I/O:餐厅有一个服务员(单线程),服务员招待一桌客人时,对客人说:“你先看下菜单,好了就叫我”。然后前往下一桌继续招待,等到一桌客人点完菜后,服务员再过去处理,如此反复,效率大大提高。
但也不能证明非阻塞I/O是一定好的,比如服务员中间发生意外,所有的客人都要等这一个服务员,这样就会影响餐厅整体质量(可以理解为服务器奔溃); 阻塞I/O由于有多个服务员,一对一的服务,即使有一个发生意外,也不会影响整体质量,而雇多个服务员也要相应的付出成本。
3.事件驱动模型
明天补