Node.js知识梳理之Node.js概述

什么是Node.js

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。前端

注意:Node.js不是一门新的语言也不是语言,他是使用C和C++编写的基于V8引擎的JS运行环境,并在ECMAScript基础上提供了一系列扩展对象,好比:fs,event。后端

Node.js语法基于ECMAScript(Javascript是由ECMAScript+DOM+BOM组成,因此Node.js中不具有DOM与BOM的API),他与咱们接触到的传统客户端Javascript不一样,Node.js不须要浏览器宿主环境,他能够独立的运行在服务器端,而且编写服务器端应用程序,与他对应的语言是服务器端的JSP、PHP、ASP.NET浏览器

学习的Node.js前提条件

一、Node.js是基于ECMAScript,因此在学习Node.js前必须可以使用客户端Javascript,或者了解Javascript基本语法。必须熟悉Javascript中的核心概念:闭包、函数、对象、原型与原型链等。服务器

二、熟悉ES6及ES6+中常用的的新语法,Node.js运行在服务器端,因此不存在客户端的兼容问题,Node.js最新版本几乎已经支持全部ES新标准。 好比:因为Node.js的异步I/O特性,须要大量的回调函数,这也就形成了传说中传统客户端开发中想象不到的地狱回调,ES6中由Promise到Async就是他的最终解决方案。学会ES6会使你Node.js开发插上起飞的翅膀。babel

三、加分项:学习过JSP、PHP、ASP.NET等后端服务器语言,学习Node.js会更加游刃有余。若是没有学过也不要紧,Node.js和其余语言也有必定差异,稍加学习也能快速掌握。网络

Node.js的特性

一、单线程 Node.js是单线程,Node.js之父ryan dahl为了极致的性能,避免过分设计,本身在编写Nginx模块时Nginx的异步引发了他的思考。当时Chrome的V8引擎出世加上Javascript的语言特性恰好知足了他当时的需求。Node.js由于是单线程因此没有上下文切换因此性能很是高。 注意:Node.js的底层是由C和C++编写,Node.js虽然是单线程机制,可是执行具体的任务时,底层C/C++程序依旧是在多线程运行。多线程

二、非阻塞I/O 无锁机制,不会产生死锁,支持上万个并发链接。由于Node.js是单线程,加入多个任务会面临等待,其中一个任务报错,其余任务会被阻断执行。因此对应单线程的是非阻塞I/O。任务执行过程,进程不会等待任务完成,而是把任务放入事件队列。闭包

三、事件循环 Node.js有一个事件环,在执行一个任务时,开始执行到回调结果这段时间,能够执行其余任务,当任务执行完成,会继续执行原任务的回调函数。并发

Node.js可以作什么

因为Node.js的特性,他特别擅长开发I/O密集型的网络应用。框架

一、命令行工具

二、单元测试工具

三、交互式终端程序

四、客户端Javascript编译工具

好比Webpack打包工具,React、Vue、Angular是当下前端开发三大开发框架,babel是当前前端开发者必不可少的Javascript编译工具。

五、GUI界面的本地应用程序

Electron是基于Chromium和Node.js可使用HTML、CSS、JS构建桌面应用程序。

六、Web Socket服务器

七、TCP/UDP套接字程序

八、高并发的社交网络应用程序

淘宝双十一就是用了Node.js进行前端渲染,阿里巴巴、腾讯、去哪儿、美团、PayPal都在使用Node.js开发本身的应用服务,许多大型网站也选用Node.js做为主要后台开发语言。

Node.js性能测试

Node.js与PHP+Nginx组合性能测试对比:(3000并发链接、持续30秒的压力下)

输出“hello world”响应:

PHP每秒响应请求3624,平均每一个请求响应时间为0.39秒;

Node.js每秒响应请求数为7677,平均每一个请求响应时间为0.13秒

执行对MySQL的查询操做:

PHP每秒响应请求书为1293.平均每一个请求响应时间为0.82秒

Node.js每秒响应请求数位2999,平均请求响应时间为0.33秒

相关文章
相关标签/搜索