【Node.js】基础概念

1. Node是什么?

Node.js简称Node,是一个基于 Chrome V8 引擎 的 JavaScript 运行时环境

  • Node.js不是一门语言
  • Node.js不是库、不是框架
  • Node.js是一个Javascript运行时环境
  • 简单来讲就是Node.js可以解析和执行JavaScript代码。
  • 以前只有浏览器可以解析执行JavaScript代码,现在的JavaScript可以完全脱离浏览器来运行,一切都归功于Node.js。
  • Node.js选择JavaScript作为实现语言的原因:
    • JavaScript满足CommonJs标准,符合事件驱动,用户较多且门槛较低;
    • Chrome的V8引擎具有出色的性能。
  • Node.js是跨平台的,能运行在Windows、macOS和Linux平台上。
  • Node.js除了自己的标准类库之外,还可以使用大量的第三方模块系统来实现代码的分享和重用
  • 与其他后端脚本语言不同的是,Node.js内置了处理网络请求和响应的函数库,也就是自备了HTTP服务器,所以不需要额外部署HTTP服务器

Node.js与 PHP对 HTTP请求的处理
在这里插入图片描述

2. Node.js的特点

1. 非阻塞I/O
  • 非阻塞I/O又称异步式I/O,是Node.js的重要特点。
  • 阻塞I/O是指线程在执行过程中遇到I/O操作时,操作系统会撤销该线程的CPU控制权,使其暂停执行,处于等待状态,同时将资源转让给其他线程。
  • 非阻塞I/O是指当线程遇到I/O操作时,不会以阻塞方式等待I/O操作完成或数据返回,而只是将I/O请求转发给操作系统,继续执行下一条指令。

Node.js的非阻塞 I/O
在这里插入图片描述

2. 事件驱动
  • 非阻塞I/O是一种异步方式的I/O,与事件驱动密不可分。

  • 事件驱动以事件为中心,Node.js在执行过程中会维护一个事件队列,需执行的每个任务都会加入事件队列并提供一个包含处理结果的回调函数

  • 在事件驱动模型中,会生成一个事件循环线程来监听事件,不断地检查是否有未处理的事件。

Node.js事件循环机制
在这里插入图片描述

3.单线程
  • Node.js的应用程序是单进程、单线程的,但是通过事件和回调支持并发,性能变得非常高。
  • 在阻塞模式下,一个线程只能处理一项任务,要想提高吞吐量必须使用多线程。
  • 在非阻塞模式下,线程不会被I/O操作阻塞,该线程所使用的CPU核心利用率永远是100%,I/O操作以事件的方式通知操作系统。
  • Node.js在主线程中维护一个事件队列,当接收到请求后,就将该请求作为一个事件放入该队列中,然后继续接收其他请求。
  • Node.js内部通过线程池来完成非阻塞I/O操作,Node.js的单线程是指对JavaScript层面的任务处理是单线程的,而Node.js本身是一个多线程平台。

3. Node.js的应用场合

  • REST API:REST API是一种前后端分离的应用程序架构。
  • 单页Web应用:加载单个HTML页面,并在用户与应用程序交互时动态更新该页面的Web应用程序。
  • 统一Web应用的UI层:Node.js是面向服务的架构,其能够更好地实现前后端的依赖分离,可以将所有的关键业务逻辑都封装成REST API,UI层只需要考虑如何用这些API构建具体的应用。
  • 准实时系统:如聊天系统、微博系统、博客系统的准实时社交系统,特点是轻量级、高流量,没有复杂的计算逻辑。
  • 游戏服务器:程序员不必使用C语言就能开发游戏的服务器程序。
  • 微服务架构:Node.js也可用于实现基于微服务架构的应用。

4.Node.js的组成

Node.js是由ECMAScriptNode环境提供的一些附加API组成的,包括文件、网络、路径等等一些更强大的API。
在这里插入图片描述

5.第一个Node.js应用程序

//导入http模块
const http = require('http');
const httpServer = http.createServer(function (req, res) {
    //设置响应头信息
    res.writeHead(200, {'Content-Type': 'text/plain'});
    // 发送响应数据 "Hello World!"
    res.end('Hello World!\n');
});
httpServer.listen(8080,function(){
    //向终端输出如下信息
    console.log('服务器正在8080端口上监听!');
});

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值