Node.js

博客分类: 笔记 阅读次数: comments

Node.js

Node

1. 定义:

​ 一个让 js 运行在后台的服务开发平台

​ 与 PHP、JSP 等相比,Node.js 跳过了 Apache、Naginx、IIS 等 HTTP 服务器软件,它自己不用建设在任何服务器软件之上。Node.js 的许多设计理念与经典架构(LAMP)有着很大的不同,可以提供强大的伸缩能力。

nodejs 是花最小的硬件成本,追求更高的并发,更高的处理性能

2. 特点:

​ 1. 单线程:所有客户端请求的连接 都使用一个线程来处理.操作系统不会为新线程创建/销毁内容空间占用额外资源;

​ 2. 非阻塞 I/O:I/O 操作不会阻塞程序的运行.

​ * 在阻塞模式下,一个线程只能处理一项任务,想要提高吞吐量必须通过多线程.

​ * 而非阻塞模式下,一个线程永远在执行计算操作,这个线程的利用率永远是满载的.

​ 3. 事件驱动:客户端 请求建立连接,提交数据等行为,就会触发 相应的事件.

​ * 在 Node 中,在一个时刻,只能执行 一个事件回调函数,但是在执行 一个事件回调函数的中途,可以转而处理其他事件(比如,又有新用户连接了),然后返回继续执行原事件的回调函数,这种处理机制,称为“事件环”机制.

3. node 的优缺和使用场景:

​ 1. 学习 js 后,不用在单独学习一门新语言,降低学习的门槛,一次读取数据较小。

​ 2. nodejs 善于 I/O,不善于计算

​ 3. 处理高并发

​ 4. 服务器推送

缺点:

​ 线程单一,所以一旦崩溃,整个服务就挂了

使用场景:

​ nodejs 不能完全替代传统的后端语言,但在某些方面优于传统

​ 当应用程序需要处理大量并发的 I/O 操作,而在发出响应之前,应用程序内部,并不需要进行非常复杂的计算处理的时候,node.js 非常适合。

​ node.js 也非常适合与 web——socket 配合,开发浪连接实时交互应用程序。

​ 例如: 考试系统、聊天室、图文直播、用户表单收集、提供 json 的 API

nodejs 模块:

​ 在 Node.js 中,不可能用一个 js 文件去写全部的业务,肯定要有 MVC.

​ 它以模块为单位 划分所有功能,并且提供了一个 完整的模块加载机制,我们可以将应用程序 划分为各个不同的部分.需要用到什么模块,就可以使用什么模块,可以使用 require(‘‘)来引入使用。

​ 较为常用的模块有:

​ HTTP 模块、URL 模块、文件系统等

nodejs 变量/函数:

​ js 文件中的变量、函数都只能在这个文件内部使用。其他文件中中要想使用必须在本文件使用 exports = 构造函数名 的方式 向外输出一个类,其他文件用 require 导入引用执行这个文件。

V8 引擎说明:

​ V8 JavaScript 引擎是 Google 用于其 Chrome 浏览器的底层 JavaScript 引擎。Google 使用 V8 创建了一个用 C++编写的超快解释器,该解释器拥有另一个独特特征:您可以下载该引擎并将其嵌入任何应用程序。V8 JavaScript 引擎并不仅限于在一个浏览器中运行。因此,Node.js 实际上会使用 Google 编写的 V8 JavaScript 引擎,并将其重建为可在服务器上使用。