freeCodeCamp/guide/chinese/nodejs/index.md

56 lines
2.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

---
title: Node.js
localeTitle: Node.js的
---
## Node.js的
Node.js是一个基于Chrome的V8 JavaScript引擎构建的JavaScript运行时。 Node.js使用事件驱动的非阻塞I / O模型使其轻量且高效。 Node.js的包生态系统npm是世界上最大的开源库生态系统。
#### 让我们分解吧。
* 基于Chrome的V8 JavaScript引擎构建的Javascript运行时。
每个浏览器都内置了一个JavaSript引擎来处理网站中包含的JavaScript文件。 Google Chrome使用的是使用C ++构建的V8引擎。 Node.js也使用这个超快引擎来解释JavaScript文件。
* Node.js使用事件驱动的模型。
这意味着Node.js等待某些事件发生。然后它会对这些事件采取行动。事件可以是从单击到HTTP请求的任何事件。我们还可以声明自己的自定义事件并使node.js监听这些事件。
* Node.js使用非阻塞I / O模型。
我们知道I / O任务比处理任务花费的时间更长。 Node.js使用回调函数来处理此类请求。
让我们假设一个特定的I / O任务需要5秒才能执行。 我们希望在代码中执行两次此I / O.
**蟒蛇**
```python
import time
def my_io_task():
time.sleep(5)
print("done")
my_io_task()
my_io_task()
```
**Node.js的**
```js
function my_io_task() {
setTimeout(function() {
console.log('done');
}, 5000);
}
my_io_task();
my_io_task();
```
两者看起来相似,但执行时间不同。 python代码需要10秒才能执行而Node.js代码只需5秒即可执行。
Node.js由于其非阻塞I / O模型而花费的时间更少。第一次调用`my_io_task()`启动计时器并将其`my_io_task()`在那里。它不等待函数的响应,而是继续调用第二个`my_io_task()` ,启动计时器并将其`my_io_task()`在那里。
当计时器完成它的执行需要5秒时它会调用该功能并在控制台上`done`打印。因为,两个定时器一起启动,它们一起完成,因此需要相同的时间。
#### 更多信息:
* [官方NodeJS网站](https://nodejs.org)
* [节点版本管理器](https://github.com/creationix/nvm/blob/master/README.md)
* [n交互式NodeJS版本管理器](https://github.com/tj/n)