"

千亿体育手机登录版

                                              "
                                              经典案例推广高端H5电商设计公司联系报价
                                              QQ联系
                                              微信联系
                                              手机联系
                                              QQ联系
                                              微信联系
                                              手机联系

                                              Node.js 究竟是什么?了解一下

                                              发布时间:2019-07-26
                                              发布者:eidea
                                              浏览次数:2112
                                              Node.js 是一个 JavaScript 运行时环境千亿体育手机登录版千亿体育手机登录版。听起来还不错千亿体育手机登录版,不过这究竟意味着什么千亿体育手机登录版?它又是如何运作的千亿体育手机登录版?

                                              Node 运行时环境包含执行 JavaScript 程序所需要的一切千亿体育手机登录版。如果你了解 Java 的话千亿体育手机登录版,会发现它们有点像千亿体育手机登录版。



                                              JavaScript 原来是只能在浏览器中运行的千亿体育手机登录版千亿体育手机登录版,当把它扩展成为可以在你的计算机上作为独立的程序运行时千亿体育手机登录版千亿体育手机登录版千亿体育手机登录版千亿体育手机登录版,Node.js 就出现了千亿体育手机登录版千亿体育手机登录版。

                                              现在你可以用 JavaScript 做更多的事情千亿体育手机登录版,而不仅仅是用在网站的互动和特效上千亿体育手机登录版。

                                              JavaScript 现在能够去做其他脚本语言(如Python)可以执行的操作。

                                              你 Chrome 浏览器中的 JavaScript 和 Node.js 都在 V8 引擎上运行千亿体育手机登录版。该引擎将你的 JavaScript 代码转换为更快的机器代码千亿体育手机登录版?;鞔胧堑图洞?千亿体育手机登录版千亿体育手机登录版,计算机可以直接运行而无需先解释它千亿体育手机登录版。

                                              为什么选择 Node.js千亿体育手机登录版?

                                              这是 Node.js 官方网站上给出的正式定义:

                                              Node.js?是基于 Chrome 的 V8 JavaScript 引擎构建的 JavaScript 运行时环境千亿体育手机登录版。

                                              Node.js 使用事件驱动的非阻塞 I/O模型,轻量且高效千亿体育手机登录版。

                                              Node.js 的包生态系统 npm 是世界上最大的开源库生态系统千亿体育手机登录版。

                                              我们在前面已经讨论过了这个定义的第一行:“Node.js?是基于 Chrome 的 V8 JavaScript 引擎构建的 JavaScript 运行时环境千亿体育手机登录版?!?现在让我们理解剩下的两行,这样我们就可以找出为什么 Node.js 如此受欢迎的原因千亿体育手机登录版千亿体育手机登录版。

                                              I/O 指的是输入/输出。它可以是从读取/写入本地文件到向 API 发出 HTTP 的任何内容。

                                              I/O 需要时间千亿体育手机登录版千亿体育手机登录版,因此会阻止其他函数。

                                              考虑一下这种情况千亿体育手机登录版,我们需要通过请求后端数据库来获取 user1 和 user2 的详细信息千亿体育手机登录版千亿体育手机登录版,然后在屏幕或控制台上打印它们千亿体育手机登录版。对该请求的响应需要时间千亿体育手机登录版千亿体育手机登录版,但是两个用户数据的请求可以独立地同时执行。




                                              阻塞 I/O(左)与非阻塞 I/O(右)

                                              阻塞 I/O
                                              在阻塞方法中千亿体育手机登录版千亿体育手机登录版千亿体育手机登录版千亿体育手机登录版,在 user1 的数据被输出到屏幕之前,不会启动 user2 的数据请求千亿体育手机登录版千亿体育手机登录版。

                                              如果这是一个Web服务器,我们必须为每个新用户启动一个新线程千亿体育手机登录版。但 JavaScript 是单线程的(实际上不是真的千亿体育手机登录版千亿体育手机登录版千亿体育手机登录版,但它有一个单线程的事件循环,我们稍后会讨论)千亿体育手机登录版。所以这会使 JavaScript 不太适合多线程任务千亿体育手机登录版。

                                              这就是非阻塞的用武之地。

                                              非阻塞 I/O
                                              另一方面,如果用非阻塞请求,可以在为 user2 发起数据请求时,无需先等待对 user1 请求的响应千亿体育手机登录版。你可以并行启动这两个请求千亿体育手机登录版。

                                              这种非阻塞 I/O 消除了对多线程的需要千亿体育手机登录版千亿体育手机登录版,因为服务器可以同时处理多个请求千亿体育手机登录版。

                                              JavaScript 事件循环

                                              以下是 JavaScript 事件循环工作原理简要的逐步描述千亿体育手机登录版千亿体育手机登录版。



                                              1千亿体育手机登录版、将 main() 送入调用栈千亿体育手机登录版千亿体育手机登录版。
                                              2千亿体育手机登录版、将 console.log() 送入调用栈千亿体育手机登录版千亿体育手机登录版千亿体育手机登录版。然后立即运行并弹出千亿体育手机登录版千亿体育手机登录版。
                                              3、将 setTimeout(2000) 送入栈。 setTimeout(2000)是一个 Node API千亿体育手机登录版千亿体育手机登录版千亿体育手机登录版。在调用它时千亿体育手机登录版千亿体育手机登录版千亿体育手机登录版,先注册事件回调千亿体育手机登录版。事件将等待 2000 毫秒,然后回调这个函数千亿体育手机登录版。
                                              4、在 API 中注册后千亿体育手机登录版,setTimeout(2000) 从调用堆栈中弹出千亿体育手机登录版。
                                              5、现在第二个 setTimeout(0) 以相同的方式注册。我们现在有两个 Node API 等待执行千亿体育手机登录版。
                                              6千亿体育手机登录版千亿体育手机登录版、等待 0 秒后千亿体育手机登录版千亿体育手机登录版千亿体育手机登录版,setTimeout(0) 被移动到回调队列千亿体育手机登录版,同样的事情发生在 setTimeout(2000)千亿体育手机登录版千亿体育手机登录版千亿体育手机登录版。
                                              7、在回调队列中千亿体育手机登录版,函数等待调用栈为空千亿体育手机登录版千亿体育手机登录版,因为每个语句都执行一次千亿体育手机登录版。这由事件循环处理千亿体育手机登录版千亿体育手机登录版。
                                              8千亿体育手机登录版、最后一个 console.log() 运行千亿体育手机登录版,并且 main() 从调用栈中弹出。
                                              9、如果事件循环检测到到调用堆栈为空且回调队列不为空。它将回调(以先进先出顺序)移动到调用栈并执行。

                                              npm

                                              这些是由令人敬畏的社区所构建的库千亿体育手机登录版千亿体育手机登录版,它能解决你的大多数的常规问题。 npm(Node package manager))中有很多可以用在你的程序中包千亿体育手机登录版,可以使你的开发更快更有效。

                                              Require

                                              Require 做三件事:

                                              它从 Node.js API 加载与 Node.js 捆绑在一起的???千亿体育手机登录版千亿体育手机登录版,如文件系统和 HTTP 等千亿体育手机登录版千亿体育手机登录版千亿体育手机登录版。
                                              它加载从 npm 安装的第三方库,如 Express 和 Mongoose 等千亿体育手机登录版。
                                              它允许你 require 自己的文件并把项目那б谔逵只锹及??榛б谔逵只锹及?。

                                              Require 是一个函数,它接受参数 “path” 并返回 module.exports千亿体育手机登录版。

                                              Node ?千亿体育手机登录版??/strong>

                                              Node ??槭且桓隹芍赜玫拇肟?千亿体育手机登录版千亿体育手机登录版,它的存在不会对其他代码产生意外地影响千亿体育手机登录版千亿体育手机登录版千亿体育手机登录版。

                                              你可以编写自己的那б谔逵只锹及??椴⒃诟髦殖绦蛑惺褂盟?千亿体育手机登录版千亿体育手机登录版。 Node.js 有一组内置?千亿体育手机登录版??,无需进一步安装即可使用千亿体育手机登录版。

                                              V8 通过利用 C++ 来加速 JavaScript

                                              V8 是一个用 C++ 编写的开源运行时引擎。

                                              JavaScript => V8(C ++)=> 机器码

                                              V8 实现了 ECMA-262 中指定的名为 ECMAScript 的脚本千亿体育手机登录版。 ECMAScript 由 Ecma International 创建,用于标准化JavaScript。

                                              V8 可以独立运行千亿体育手机登录版千亿体育手机登录版,也可以嵌入到任何 C++ 程序中。它有一些钩子千亿体育手机登录版,允许你编写自己的C++代码供 JavaScript 使用千亿体育手机登录版。

                                              这实际上允许你通过将 V8 嵌入到 C++ 代码中来向 JavaScript 添加功能,以便使你的 C++ 代码实现比 ECMAScript 标准更多的功能。

                                              正如 Greg Bulmash 引起了我的注意千亿体育手机登录版,除了V8之外千亿体育手机登录版,还有许多不同的 JavaScript 引擎千亿体育手机登录版千亿体育手机登录版千亿体育手机登录版,如 Mozilla 的 SpiderMonkey千亿体育手机登录版千亿体育手机登录版,微软的 Chakra 等等千亿体育手机登录版。更多的东西可以在这里找到千亿体育手机登录版千亿体育手机登录版千亿体育手机登录版千亿体育手机登录版。

                                              事件

                                              事件指的是我们可以对在程序中发生的事情作出回应千亿体育手机登录版。Node 中有两种类型的事件千亿体育手机登录版。

                                              系统事件:来自用 C++ 实现的基于 libuv 库的内核千亿体育手机登录版千亿体育手机登录版。(例如千亿体育手机登录版,读取文件完毕)千亿体育手机登录版千亿体育手机登录版。
                                              自定义事件:JavaScript 核心千亿体育手机登录版。

                                              在 Node.js 中写一个 Hello World

                                              创建文件 app.js 并将以下内容添加到其中。

                                              console.log("Hello World!");

                                              打开终端,将目录切换到保存文件的文件夹,然后运行 node app.js。

                                              就这么简单千亿体育手机登录版,你在 Node.js 中写的 “Hello World” 跑起来了千亿体育手机登录版千亿体育手机登录版千亿体育手机登录版。

                                              网站案例欣赏

                                              汇金国际城

                                              FLASH项目官网

                                              八爪鱼教育

                                              响应式企业官网

                                              合众生物股份

                                              响应式企业网站

                                              千亿体育手机登录版 网络小说排行榜 小说排行榜完结版 好看的言情小说 完美世界有声小说全集 欢乐颂小说结局是什么 小说阅读网站 遮天 辰东 小说 玄幻小说完本 管理书籍排行榜 小说阅读网 《完美世界》txt全集 绝色狂妃 仙魅 小说 小说阅读器 玄幻小说排行榜完本 盛世嫡妃 凤轻 小说 欢乐颂第一季免费阅读 灵域 天下 高月 小说 好看的历史书籍推荐 如何发布网络小说 盗墓笔记有声小说 君子以泽 梦入神机 辰东全部小说 好看的课外书 小说 《完美世界》txt全集 有声读物 有声小说打包下载 完美世界有声小说 《完美世界》txt全集 官场小说排行榜 有声小说下载 我欲封天 耳根 小说零 欢乐颂第一季免费阅读 怎么写网络小说 古风名字 盗墓笔记 欢乐颂小说txt 古风小说 君子以泽 辰东 梦入神机 风凌天下 灵域 琅琊榜 海宴 小说 我欲封天 耳根 小说 盗墓笔记小说txt下载 盗墓笔记txt全集下载 我欲封天txt下载 有声小说打包下载 我欲封天 耳根 小说 雪鹰领主 怎样写网络小说 好看的课外书 完美世界txt下载 好看的电视剧 盛世嫡妃 凤轻 小说 好看的小说 君子以泽 欢乐颂小说txt 完美世界小说下载