为什么是节点?如何使用节点

了解 Node.js,这是一个用于构建服务器端或桌面应用程序的 JavaScript 运行时。

JavaScript 和 Node.js

Javascript 自 1995 年以来就已经存在,并已成为 Web 开发的主要语言。在其生命的大部分时间里,JavaScript 主要用于<script>在 Web 浏览器中执行的标签内的客户端脚本。这种限制意味着开发人员经常在 Web 应用程序的前端(客户端)和后端(服务器端)方面使用多种不同的语言和框架工作。

为什么是节点?如何使用节点-南华中天

尽管还有其他项目将 JavaScript 引入服务器端应用程序,但随着 2009 年 Node.js 的推出,该功能开始发挥作用。Node 允许开发人员编写直接在计算机进程本身而不是浏览器中运行的 JavaScript 代码。因此,Node 可用于编写服务器端应用程序,以访问操作系统、文件系统以及构建全功能应用程序所需的一切。

Node.js 是用 C、C++ 和 JavaScript 编写的,它建立在开源V8 JavaScript 引擎之上,该引擎还支持 Google Chrome 等浏览器中的 JS。由于 V8 支持 JavaScript 中的新功能,它们被合并到 Node.js 中。

特定于节点的功能

全局变量

Node 提供对几个重要的全局对象的访问,以便与 Node 程序文件一起使用。在编写将在 Node 环境中运行的文件时,这些变量将可以在文件的全局范围内访问。

  • module是一个对象,指的是将从文件中导出的功能。在 Node 中,每个文件都被视为一个模块。
  • require()是用于从其他文件或 Node 包中导入模块的函数。
  • process是一个引用运行 Node 程序的实际计算机进程的对象,并允许访问命令行参数等等。

模块

Node 有许多内置模块来帮助与命令行、计算机文件系统和 Internet 进行交互。这些包括

  • 用于创建 Web 服务器的HTTP和HTTPS 。
  • File System、OS和Path用于与文件系统、操作系统和文件/目录路径进行交互。

您可以查看完整文档以了解更多 Node 的内置功能。

为什么是节点?

根据Node.js 主页,Node “使用事件驱动的非阻塞 I/O 模型”。实际上,这意味着 Node 可以很好地处理异步 JavaScript 代码以执行许多异步活动,例如读取和写入文件系统、处理与数据库服务器的连接或作为 Web 服务器处理请求。

为了处理异步代码,Node 使用基于回调的系统。将实现一些异步活动的节点函数和方法采用回调函数。只要异步操作已解决,就会调用此回调。按照惯例,此回调的第一个参数是错误占位符。如果异步操作发生错误(例如,试图读取不存在的文件),则错误参数将是一个错误对象,但null如果没有发生错误,它将是一个错误对象。

常量fs =要求( 'fs' ) ;
FS readFile './script.js' 函数错误数据{
// 如果没有发生错误,则错误为 null,但如果发生错误,则为 Error 对象
如果错误{
抛出错误
}
// 如果没有抛出错误,文件数据将被传递到回调中
控制台日志数据
} ) ;

在这个例子中,我们使用 Node 的内置fs模块来读取script.js文件。文件读取操作完成后调用回调函数。如果发生错误,它将被传入error并抛出。如果不存在,则从文件读取操作中检索到的数据将记录到控制台。

如何使用节点

该视频将向您展示如何下载和安装 Node.js。

要在 Node 中运行 JS 文件,node后跟文件路径的命令将执行程序文件。

例如,如果我们将以下内容保存在文件script.js中:

控制台log ( '我是一个 Node 程序' ) ;

在与script.jsnode script.js相同的文件夹中运行终端命令将启动 Node,打印到终端窗口,然后退出,因为脚本文件已完成执行。I am a Node program

节点作为 REPL

Node 也可以在终端窗口中用作 Read-Evaluate-Print-Loop 或 REPL。此功能允许您从命令行执行 JavaScript 命令。

安装 Node 后,您可以通过node在终端中运行命令并按来启动 REPL Enter。您现在处于交互式 JavaScript 环境中,可以运行任何有效的 JavaScript 代码,例如4 + 5. 执行命令后,Node 将始终打印该评估的结果。

$节点
> 4 + 5
9
> 函数 nodeIsGreat() {
... console.log('节点很棒!');
... }
不明确的
> 节点伟大()
节点很棒!
不明确的
> .退出
$

node在此示例中,用户使用终端命令在第一行启动节点。在第 2 行,用户键入4 + 5并使用返回键进行评估。9打印到输出终端。

在第 4 行,用户打开nodeIsGreat. 因为这个函数声明需要多行,Node REPL 将...在一行的开头打印以表明它仍在读取用户的输入语句并且尚未评估。在第 6 行关闭函数声明后,undefined打印到输出终端,因为函数声明本身不计算任何值。在第 8 行调用该函数时,Node is great!记录到控制台,并undefined在之后记录,因为nodeIsGreat()返回undefined.

要退出 Node REPL,请.exit随时使用该命令并返回到系统 shell。按ctrl+c两次也将退出。

加载现有文件

Node REPL 还可以加载现有的 JS 文件。如果我们将以下代码保存到script.js中:

var a = 'Node REPL 很有趣!' ;

我们可以使用.load它来将它加载到 REPL 中。.load接受一个路径参数,所以要加载script.js ,我们将使用.load ./script.js.

$节点
> .load ./script.js
var a = 'Node REPL 很有趣!';
> 一个
“节点 REPL 很有趣!”

加载脚本文件后,变量可以在 REPL 中访问,因此当我们评估a变量时,它的值已通过加载script.js设置,并且“节点 REPL 很有趣!” 打印到控制台。

通过在终端中运行自己尝试一下,node或者查看REPL 文档以获取更多功能。

包管理

Node 包是在 Node 开发人员之间共享模块的便捷方式。服务npm是 Node 的默认包管理器,它附带了 Node 的安装。

npm 允许访问数十万个可用的开源包。

除了 npm,yarn作为另一个 JS 包管理器越来越受欢迎。

要了解更多信息并查看 npm 的实际应用,请参加我们的浏览器兼容性和转译课程。

节点版本

Node 的主要版本旨在支持最新的 JavaScript 功能,包括 ES6/ES2015 及更高版本,无需转译。要查看不同版本支持的 JavaScript 功能列表,请访问node.green

版本管理

与任何主要的软件版本一样,顶级 Node 版本(8.x、7x 等)有时会在旧版本环境中构建的应用程序中引入重大更改。版本管理器可用于在单台计算机上的多个 Node 版本之间切换。有两个版本管理器提供此功能:nvm(节点版本管理器)和n。N 可以很容易地安装为 npm 包!