Temp:修订间差异

来自泡泡学习笔记
跳到导航 跳到搜索
(清空全部内容)
标签清空 手工回退
无编辑摘要
标签已被回退
第1行: 第1行:
Node.js是一个开源的跨平台JavaScript运行时环境,适用于几乎所有类型的项目。


Node.js在浏览器之外运行V8 JavaScript引擎,这是Google Chrome的核心。这使得Node.js具有很高的性能。
一个Node.js应用程序在一个进程中运行,而不需要为每个请求创建新线程。Node.js在其标准库中提供了一组异步I/O原语,防止JavaScript代码阻塞。通常,Node.js中的库使用非阻塞范例编写,使得阻塞行为成为例外而不是规范。
当Node.js执行I/O操作(如从网络读取、访问数据库或文件系统)时,它不会阻塞线程并浪费CPU周期等待,而是在响应返回时恢复操作。
这使得Node.js能够处理数千个并发连接,而无需引入管理线程并发的负担,这可能是错误的一个重要来源。
Node.js具有独特的优势,因为数百万为浏览器编写JavaScript的前端开发人员现在可以在不学习完全不同语言的情况下编写服务器端代码以及客户端代码。
在Node.js中,可以使用新的ECMAScript标准而不会出现问题,因为您不必等待所有用户更新他们的浏览器-您可以通过更改Node.js版本来决定使用哪个ECMAScript版本,并且您还可以通过运行带有标志的Node.js来启用特定的实验性功能。
这是一个Node.js的Hello World示例,它是一个web服务器:
```javascript
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
');
});
server.listen(port, hostname, () => {
  console.log(`Server running at http://${hostname}:${port}/`);
});
```
要运行此代码片段,请将其保存为server.js文件并在终端中运行node server.js。
这段代码首先引入了Node.js的http模块。
Node.js有一个非常棒的标准库,包括对网络的一流支持。
http模块的createServer()方法创建一个新的HTTP服务器并返回它。
服务器设置为在指定的端口和主机名上监听。当服务器准备好时,回调函数被调用,在这种情况下,通知我们服务器正在运行。
每当收到新的请求时,都会调用request事件,提供两个对象:一个请求(一个http.IncomingMessage对象)和一个响应(一个http.ServerResponse对象)。
这两个对象对于处理HTTP调用至关重要。
第一个提供了请求的详细信息。在这个简单的例子中,这个没有被使用,但是你可以通过访问请求头和请求数据来获取它们。
第二个用于向调用者返回数据。
在这个例子中,我们设置statusCode属性为200,表示成功的响应。
我们设置Content-Type头部:
```javascript
res.setHeader('Content-Type', 'text/plain');
```
并通过将内容作为参数传递给end()来关闭响应:
```javascript
res.end('Hello World
');
```

2023年11月8日 (三) 09:33的版本

Node.js是一个开源的跨平台JavaScript运行时环境,适用于几乎所有类型的项目。

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

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

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

这使得Node.js能够处理数千个并发连接,而无需引入管理线程并发的负担,这可能是错误的一个重要来源。

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

在Node.js中,可以使用新的ECMAScript标准而不会出现问题,因为您不必等待所有用户更新他们的浏览器-您可以通过更改Node.js版本来决定使用哪个ECMAScript版本,并且您还可以通过运行带有标志的Node.js来启用特定的实验性功能。

这是一个Node.js的Hello World示例,它是一个web服务器:

```javascript 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

'); }); server.listen(port, hostname, () => {

 console.log(`Server running at http://${hostname}:${port}/`);

}); ```

要运行此代码片段,请将其保存为server.js文件并在终端中运行node server.js。

这段代码首先引入了Node.js的http模块。

Node.js有一个非常棒的标准库,包括对网络的一流支持。

http模块的createServer()方法创建一个新的HTTP服务器并返回它。

服务器设置为在指定的端口和主机名上监听。当服务器准备好时,回调函数被调用,在这种情况下,通知我们服务器正在运行。

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

这两个对象对于处理HTTP调用至关重要。

第一个提供了请求的详细信息。在这个简单的例子中,这个没有被使用,但是你可以通过访问请求头和请求数据来获取它们。

第二个用于向调用者返回数据。

在这个例子中,我们设置statusCode属性为200,表示成功的响应。

我们设置Content-Type头部:

```javascript res.setHeader('Content-Type', 'text/plain'); ```

并通过将内容作为参数传递给end()来关闭响应:

```javascript res.end('Hello World '); ```