Node.js 的定义和功能是什么?

发表时间: 2023-04-18 13:04

简介

Node.js入门指南,服务器端JavaScript运行时环境。Node.js是在Google Chrome V8 JavaScript引擎的基础上构建的,它主要用于创建web服务器,但并不局限于此。

实际上Node.js 是把运行在浏览器中的js引擎抽离处理,进行再次封装,成为一个独立的运行环境。

Node.js是一个开源的跨平台JavaScript运行时环境。它几乎是任何类型项目的流行工具!

Node.js在浏览器之外运行V8 JavaScript引擎,这是谷歌Chrome的核心。这使得Node.js具有非常高的性能。

Node.js应用程序在单个进程中运行,而无需为每个请求创建新的线程。Node.js在其标准库中提供了一组异步I/O标准库,用于防止JavaScript代码阻塞。通常,Node.js中的库是使用非阻塞范式编写的,使阻塞行为成为例外而非常态。

区别其他后端语言,例如java、PHP等语言,进行请求的时候不会单独发送新的线程,而是Node.js引擎统一进行处理,只是在线程上分段处理,也类似于golang语言中协程的概念。

当Node.js执行I/O操作时,比如从网络读取、访问数据库或文件系统,而不是阻塞线程和浪费CPU周期等待,Node.js会在响应返回时恢复操作。

这使得Node.js可以在一台服务器上处理数千个并发连接,而不会带来管理线程并发的负担,这可能是一个重要的错误来源。

这样在进行高并发操作时,相对其他语言来说,相同资源下,可提供更高的并发数。

Node.js具有独特的优势,因为数百万为浏览器编写JavaScript的前端开发人员现在除了可以编写客户端代码外,还可以编写服务器端代码,而无需学习完全不同的语言。

基本上和js的操作一直,就能快速上手后端语言的开发工作。

在Node.js中,新的ECMAScript标准可以毫无问题地使用,因为你不必等待所有用户更新他们的浏览器——你可以通过更改Node.js版本来决定使用哪个ECMAScripts版本,你也可以通过运行带有标志的Node.js来启用特定的实验功能。

每个Node.js版本,都提供了对应ECMAScripts版本的支持。

示例

const http = require('http');const hostname = '127.0.0.1';const port = 3000;const server = http.createServer((req, res) => {  res.statusCode = 200;  res.setHeader('Content-Type', 'text/plain');  res.end('Hello World\n');});server.listen(port, hostname, () => {  console.log(`Server running at http://${hostname}:${port}/`);});

1、第一行,我们请求的Node.js 的http模块。

2、http.createServer() 方法,我们可以创建一个http服务器并返回它。

3、每当收到新请求时,都会调用请求事件,提供两个对象:一个请求(http.IncomingMessage对象)和一个响应(http.ServerResponse对象)。

4、请求对象我们可命名为req,返回对象,也就是响应对象,我们命名为res

  • res.statusCode 可设置一个自定义的状态码
  • res.setHeader 可设置http请求的头部信息
  • res.end() 可返回请求响应的信息。

5、server.listen() 方法,开始进行监听,开始默认打印console.log()里的内容。

6、在浏览器中输入IP地址和端口,我们看到如下所示内容:


这说明说明一直在监听 IP为127.0.0.1并且端口3000的这个地址。