Node.js 是什么?

news/2024/12/29 7:14:51/

简介

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地址和端口,我们看到如下所示内容:


http://www.ppmy.cn/news/62831.html

相关文章

( “图“ 之 二分图 ) 785. 判断二分图 ——【Leetcode每日一题】

❓785. 判断二分图 难度:中等 存在一个 无向图 ,图中有 n 个节点。其中每个节点都有一个介于 0 到 n - 1 之间的唯一编号。给你一个二维数组 graph ,其中 graph[u] 是一个节点数组,由节点 u 的邻接节点组成。形式上,…

Mybatis 一对多查询列表属性处理

Mybatis 一对多查询列表属性处理 一、说明1.<collection>标签属性说明2. 示例代码 二、平铺查询三、 嵌套查询&#xff08;Nested Select for Collection&#xff09;3.1 外键查询3.2 select传入多个参数 一、说明 1.<collection>标签属性说明 property&#xff1…

Linux挂载新磁盘到根目录

添加磁盘到需要挂载的机器上 lsblk查看硬盘挂载情况&#xff0c;sdb,sdc为我新挂载的磁盘 fdisk -l查看挂载之前的分区情况 为新硬盘创建分区 fdisk /dev/sdb 终端会提示&#xff1a; Command &#xff08;m for help&#xff09;&#xff1a;输入&#xff1a;n 依次输入p…

10 KVM虚拟机配置-虚拟CPU和虚拟内存

文章目录 10 KVM虚拟机配置-虚拟CPU和虚拟内存10.1 概述10.2 元素介绍10.3 配置示例 10 KVM虚拟机配置-虚拟CPU和虚拟内存 10.1 概述 本节介绍虚拟CPU和虚拟内存的常用配置。 10.2 元素介绍 vcpu&#xff1a;虚拟处理器的个数。 memory&#xff1a;虚拟内存的大小。 属性un…

第四十章 Unity 按钮 (Button) UI

本章节我们介绍一下按钮UI。首先&#xff0c;我们创建一个新的场景“SampleScene3.unity”。然后&#xff0c;在菜单栏中点击“GameObject”->“UI”->“Button”&#xff0c;截图如下 我们选中刚刚创建的Button&#xff0c;然后查看它的Inspector检视面板&#xff0c;如…

【数据结构】二叉树(详细)

二叉树 1.树1.1定义1.2基本术语1.3树形结构和线性结构1.4树的存储结构1.4.1双亲表示法1.4.2孩子兄弟表示法 2.二叉树2.1定义2.2特殊二叉树2.3性质2.4存储结构2.4.1顺序存储2.4.2链式存储结构 3.二叉树的基本操作3.1前序遍历&#xff08;先序遍历&#xff09;3.2中序遍历3.3后序…

Linux上安装Elasticsearch

Linux上安装Elasticsearch 文章目录 Linux上安装Elasticsearch1. 下载安装包2. 上传到linux服务器3. 解压4. 修改配置文件5. 扩大内存权限6. 启动ES(注意&#xff1a;root用户无法启动)创建用户创建所属组,赋予es文件操作权限&#xff1a;切换到yizhi用户进入bin目录启动elasti…

网络安全事件调查,如何追溯攻击者的行踪和攻击路径

在当今互联网的世界里&#xff0c;网络安全已成为一个非常重要的话题。随着网络攻击的不断增加&#xff0c;如何保护我们的网络安全已成为一个严峻的挑战。为了防止网络攻击&#xff0c;需要了解攻击者的行踪和攻击路径&#xff0c;以便更好地预防和应对网络攻击。 网络安全事…