Node.js【简介、安装、运行 Node.js 脚本、事件循环、ES6 作业队列、Buffer(缓冲区)、Stream(流)】(一)-全面详解(学习总结---从入门到深化)(上)

简介: Node.js【简介、安装、运行 Node.js 脚本、事件循环、ES6 作业队列、Buffer(缓冲区)、Stream(流)】(一)-全面详解(学习总结---从入门到深化)

Node.js 简介



Node.js 是一个开源和跨平台的JavaScript运行时环境。


Node.js 在浏览器之外运行V8 JavaScript引擎(Google Chrome的内核)。


Node.js 可以构建web服务器。


Node.js 是单线程非阻塞的,这允许Node.js使用单个服务器就可以处理数千个并发连接。


Node.js 可以使用新的ECMAScript标准。


Node.js 安装



1、打开nodejs官网:https://nodejs.org/en/


2、下载安装包,安装


3、验证

node -v //查看nodejs版本
npm -v //查看npm版本



Node.js 历史版本下载地址:https://nodejs.org/dist/


运行 Node.js 脚本



1、Node.js REPL


Node.js REPL ,类似 Window 系统的终端,我们可以在终端中输入命令,并接收系统的响应,提供交互式的nodejs编程环境。


1.1、输入以下命令来启动 Node 的终端:


1.2、接下来就可以在 > 后面输入一些表达式或者语句,然后按下回车,就会执行代码并给出反馈。


1.3、退出REPL


按下两次 ctrl + c 键或者 ctrl + d 就能退出 REPL。


使用REPL可以简单的去调试 Javascript 代码


1.4、运行脚本文件


node 脚本文件


Node.js 事件循环



Node.js 事件循环阐明了 Node.js 如何做到异步且具有非阻塞的 I/O。


1、调用堆栈


调用堆栈是一个 LIFO 队列(后进先出)。


事件循环不断地检查调用堆栈,以查看是否需要运行任何函数。

const bar = () => console.log('bar')
const baz = () => console.log('baz')
const foo = () => {
 console.log('foo')
 bar()
 baz()
}
foo()
//foo
//bar
//baz



const bar = () => console.log('bar')
const baz = () => console.log('baz')
const foo = () => {
        console.log('foo')
        setTimeout(bar, 0)
        baz()
}
foo()
//foo
//baz
//bar



消息队列


当调用 setTimeout() 时, Node.js 会启动定时器。 当定时器到期时,则回调函数会被放入 消息队列 中。包括其它的一些异步的操作,网络请求或者一些事件的订阅,得到响应后它们的回调函数也会被放入 消息队列 。


事件循环会赋予调用堆栈优先级,它首先处理在调用堆栈中找到的所有东西,一旦其中没有任何东西,便开始处理消息队列中的东西。


Node.js 事件循环_ES6 作业队列



ECMAScript 2015 引入了 作业队列 的概念, Promise 使用了该队列。 这种方式会尽快地执行异步函数的结果,而不是放在调用堆栈的末尾。


作业队列的优先级高于消息队列。

const bar = () => console.log('bar')
const baz = () => console.log('baz')
const foo = () => {
 console.log('foo')
 setTimeout(bar, 0)
 new Promise((resolve, reject) =>
  resolve('应该在 baz 之后、bar 之前')
).then(resolve => console.log(resolve))
 baz()
}
foo()
//foo
//baz
//应该在 baz 之后、bar 之前
//bar


Node.js【简介、安装、运行 Node.js 脚本、事件循环、ES6 作业队列、Buffer(缓冲区)、Stream(流)】(一)-全面详解(学习总结---从入门到深化)(下):https://developer.aliyun.com/article/1420285

目录
相关文章
|
1月前
|
存储 JavaScript 前端开发
webSocket+Node+Js实现在线聊天(包含所有代码)
文章介绍了如何使用WebSocket、Node.js和JavaScript实现在线聊天功能,包括完整的前端和后端代码示例。
102 0
|
13天前
|
JavaScript
Node.js Stream(流)
10月更文挑战第4天
24 1
Node.js Stream(流)
|
1月前
|
JavaScript
NodeJs的安装
文章介绍了Node.js的安装步骤和如何创建第一个Node.js应用。包括从官网下载安装包、安装过程、验证安装是否成功,以及使用Node.js监听端口构建简单服务器的示例代码。
NodeJs的安装
|
13天前
|
存储 JSON JavaScript
Node.js Buffer(缓冲区)
10月更文挑战第4天
16 4
|
1月前
|
JavaScript 前端开发 开发工具
五子棋小游戏(JS+Node+Websocket)可分房间对战
本文介绍了通过JS、Node和WebSocket实现的五子棋游戏,支持多人在线对战和观战功能。
33 1
五子棋小游戏(JS+Node+Websocket)可分房间对战
|
14天前
|
人工智能 JavaScript 前端开发
使用Node.js模拟执行JavaScript
使用Node.js模拟执行JavaScript
15 2
|
14天前
|
消息中间件 JavaScript 前端开发
用于全栈数据流的 JavaScript、Node.js 和 Apache Kafka
用于全栈数据流的 JavaScript、Node.js 和 Apache Kafka
35 1
|
15天前
|
JavaScript 开发工具 git
已安装nodejs但是安装hexo报错
已安装nodejs但是安装hexo报错
19 2
|
5天前
|
缓存 监控 JavaScript
Node.js中基于node-schedule实现定时任务之详解
Node.js中基于node-schedule实现定时任务之详解
19 0
|
5天前
|
Web App开发 JavaScript 前端开发
Node.js:JavaScript世界的全能工具
Node.js:JavaScript世界的全能工具