Node.js简介
- Node.js是一个能够在服务器端运行JavaScript的开放源代码、 跨平台JavaScript运行环境。
- Node采用Google开发的V8引擎运行js代码,使用事件驱动、 非阻塞和异步I/O模型等技术来提高性能,可优化应用程序的传输量和规模。
- Node是对ES标准的一个实现,Node也是一个JS引擎
- 通过Node可以使JS代码在服务器端执行,在Node出现之前,JS通常作为客户端程序设计语言使用,以JS写出的程序常在用户的浏览器上运行。
- Node.js允许通过JS和一系列模块来编写服务器端应用和网络相关的应用。
- 核心模块包括文件系统I/O、网络(HTTP、TCP、UDP、DNS、 TLS/SSL等)、二进制数据流、加密算法、数据流等等。
- Node模块的API形式简单,降低了编程的复杂度。
- 使用框架可以加速开发。常用的框架有Express.js、Socket.IO 和Connect等。Node.js的程序可以在Microsoft Windows、 Linux、Unix、Mac OS X等服务器上运行。
- Node.js也可以使用CoffeeScript、TypeScript、Dart语言,以及其他能够编译成JavaScript的语言编程。
- Node仅仅对ES标准进行了实现, 所以在Node中不包含DOM和BOM
- Node中可以使用所有的内建对象
- String Number Boolean Math Date RegExp Function Object Array
- 而BOM和DOM都不能使用
- 但是可以用console
- 也可以使用定时器(setTimeout()和setInterval())
- Node可以在后台来编写服务器
- Node编写服务器都是单线程的服务器
(补充:进程和线程)
进程
- 进程就是一个一个的工作计划(类似于工厂中的车间)
线程
- 线程是计算机的最小运算单位(类似于工厂中的工人)
- 线程是干活儿的
传统的服务器都是多线程的
- 每进来一个请求,就创建一个线程去处理请求
Node服务器是单线程的
- Node处理请求时是单线程,但是在后台拥有一个I/O线程池
Node.js之父
瑞安·达尔(Ryan Dahl)
Node.js用途
- Web服务API,比如REST
- 实时多人游戏
- 后端的Web服务,例如跨域、服务器端的请求
- 基于Web的应用
- 多客户端的通信,如即时通信