”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > Node.js 基础知识 - 需要了解的基本知识

Node.js 基础知识 - 需要了解的基本知识

发布于2024-11-02
浏览:188

Node.js Basics - Essential Things to Know

概念亮点:

  1. Node.js 全局变量
  2. Node.js 模块
  3. 路径模块
  4. 进程对象
  5. 处理输入和输出
  6. 文件管理和流

1.Node.js 全局变量

Node.js 附带了几个全局对象和函数,可以在应用程序中的任何位置使用它们,而无需 require() 它们。一些关键的全局对象包括:

  • __dirname: 当前模块的目录名。
  • __filename: 当前文件的完整路径。
  • setTimeout(), clearTimeout(), setInterval(), clearInterval(): 管理异步计时的函数。

例如。)

console.log(__dirname); // outputs the current directory
console.log(__filename); // outputs the full path of the current file 

2.Node.js 模块

Node.js 遵循模块化结构,其中代码被分为更小的、可重用的模块。您可以使用 require() 函数加载内置或自定义模块。

例如) Node.js 中有三种类型的模块:

  1. 核心模块:Node.js提供的fs、http、path等。
  2. 第三方模块:通过npm安装,例如express或lodash。
  3. 自定义模块:由您创建用于组织代码。
const fs = require('fs'); // Require the built-in file system module

3. 路径模块

Node.js 中的路径模块提供了用于处理文件和目录路径的实用程序。它对于使代码独立于平台特别有用,因为路径分隔符(Windows 上的 \)可能因操作系统而异。

例)path模块中的关键方法:

  • path.join() 将多个路径段连接成一个。
  • path.basename() 返回路径的最后一部分(通常是文件名)。
  • paht.extname() 返回文件扩展名。
const path = require('path');

const filePath = path.join(__dirname, 'folder', 'file.txt');
console.log(filePath); // Combines the paths to create a full file path

4. 进程对象

Node.js 中的进程对象提供有关当前 Node.js 进程的信息和控制。它是一个全局对象,允许您与运行时环境联网。

例如) 一些有用的属性和过程方法包括:

  • process.argv: 传递给 Node.js 进程的参数。
  • process.env:环境变量。
  • process.exit(): 终止进程。
console.log(process.argv); // Returns an array of command-line arguments
console.log(process.env); // Accesses environment variables

5. 处理输入和输出

Node.js 提供了处理输入和输出的简单方法,特别是通过其流程对象来处理标准输入和输出。

例如) 此示例侦听用户输入并将其记录到控制台。对于更高级的 I/O 处理,您还可以使用流,它允许您逐段处理数据,而不是一次将整个 I/O 加载到内存中。

process.stdin.on('data', (data) => {
  console.log(`You typed: ${data}`);
});

6. 文件管理和流

文件管理是许多 Node.js 应用程序的关键部分,Node 的 fs(文件系统)模块提供了一系列使用文件系统的方法。您可以使用异步或同步 API 读取、写入和管理文件。

例如。)

const fs = require('fs');

// Asynchronous file reading
fs.readFile('example.txt', 'utf8', (err, data) => {
  if (err) throw err;
  console.log(data);
});

// Writing to a file
fs.writeFile('output.txt', 'This is some content', (err) => {
  if (err) throw err;
  console.log('File written successfully');
});

Node.js 还有一个强大的流处理系统,用于有效地处理大量数据。流通常用于读/写文件或处理网络通信。

const fs = require('fs');

const readStream = fs.createReadStream('example.txt');
const writeStream = fs.createWriteStream('output.txt');

readStream.pipe(writeStream); // Piping data from one file to another
版本声明 本文转载于:https://dev.to/ryoichihomma/nodejs-basics-3lnm?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • 如何使用PHP从XML文件中有效地检索属性值?
    如何使用PHP从XML文件中有效地检索属性值?
    从php $xml = simplexml_load_file($file); foreach ($xml->Var[0]->attributes() as $attributeName => $attributeValue) { echo $attributeName,...
    编程 发布于2025-04-19
  • 如何从Google API中检索最新的jQuery库?
    如何从Google API中检索最新的jQuery库?
    从Google APIS 问题中提供的jQuery URL是版本1.2.6。对于检索最新版本,以前有一种使用特定版本编号的替代方法,它是使用以下语法:获取最新版本:未压缩)While these legacy URLs still remain in use, it is recommended ...
    编程 发布于2025-04-19
  • 使用jQuery如何有效修改":after"伪元素的CSS属性?
    使用jQuery如何有效修改":after"伪元素的CSS属性?
    在jquery中了解伪元素的限制:访问“ selector 尝试修改“:”选择器的CSS属性时,您可能会遇到困难。 This is because pseudo-elements are not part of the DOM (Document Object Model) and are th...
    编程 发布于2025-04-19
  • 哪种在JavaScript中声明多个变量的方法更可维护?
    哪种在JavaScript中声明多个变量的方法更可维护?
    在JavaScript中声明多个变量:探索两个方法在JavaScript中,开发人员经常遇到需要声明多个变量的需要。对此的两种常见方法是:在单独的行上声明每个变量: 当涉及性能时,这两种方法本质上都是等效的。但是,可维护性可能会有所不同。 第一个方法被认为更易于维护。每个声明都是其自己的语句,使其...
    编程 发布于2025-04-19
  • 如何使用不同数量列的联合数据库表?
    如何使用不同数量列的联合数据库表?
    合并列数不同的表 当尝试合并列数不同的数据库表时,可能会遇到挑战。一种直接的方法是在列数较少的表中,为缺失的列追加空值。 例如,考虑两个表,表 A 和表 B,其中表 A 的列数多于表 B。为了合并这些表,同时处理表 B 中缺失的列,请按照以下步骤操作: 确定表 B 中缺失的列,并将它们添加到表的末...
    编程 发布于2025-04-19
  • 大批
    大批
    [2 数组是对象,因此它们在JS中也具有方法。 切片(开始):在新数组中提取部分数组,而无需突变原始数组。 令ARR = ['a','b','c','d','e']; // USECASE:提取直到索引作...
    编程 发布于2025-04-19
  • 在PHP中如何高效检测空数组?
    在PHP中如何高效检测空数组?
    在PHP 中检查一个空数组可以通过各种方法在PHP中确定一个空数组。如果需要验证任何数组元素的存在,则PHP的松散键入允许对数组本身进行直接评估:一种更严格的方法涉及使用count()函数: if(count(count($ playerList)=== 0){ //列表为空。 } 对...
    编程 发布于2025-04-19
  • Java开发者如何保护数据库凭证免受反编译?
    Java开发者如何保护数据库凭证免受反编译?
    在java 在单独的配置文件保护数据库凭证的最有效方法中存储凭据是将它们存储在单独的配置文件中。该文件可以在运行时加载,从而使登录数据从编译的二进制文件中远离。使用prevereness class import java.util.prefs.preferences; 公共类示例{ 首选项...
    编程 发布于2025-04-19
  • 为什么我的CSS背景图像出现?
    为什么我的CSS背景图像出现?
    故障排除:CSS背景图像未出现 ,您的背景图像尽管遵循教程说明,但您的背景图像仍未加载。图像和样式表位于相同的目录中,但背景仍然是空白的白色帆布。而不是不弃用的,您已经使用了CSS样式: bockent {背景:封闭图像文件名:背景图:url(nickcage.jpg); 如果您的html,css...
    编程 发布于2025-04-19
  • 为什么Microsoft Visual C ++无法正确实现两台模板的实例?
    为什么Microsoft Visual C ++无法正确实现两台模板的实例?
    The Mystery of "Broken" Two-Phase Template Instantiation in Microsoft Visual C Problem Statement:Users commonly express concerns that Micro...
    编程 发布于2025-04-19
  • 找到最大计数时,如何解决mySQL中的“组函数\”错误的“无效使用”?
    找到最大计数时,如何解决mySQL中的“组函数\”错误的“无效使用”?
    如何在mySQL中使用mySql 检索最大计数,您可能会遇到一个问题,您可能会在尝试使用以下命令:理解错误正确找到由名称列分组的值的最大计数,请使用以下修改后的查询: 计数(*)为c 来自EMP1 按名称组 c desc订购 限制1 查询说明 select语句提取名称列和每个名称...
    编程 发布于2025-04-19
  • 在细胞编辑后,如何维护自定义的JTable细胞渲染?
    在细胞编辑后,如何维护自定义的JTable细胞渲染?
    在JTable中维护jtable单元格渲染后,在JTable中,在JTable中实现自定义单元格渲染和编辑功能可以增强用户体验。但是,至关重要的是要确保即使在编辑操作后也保留所需的格式。在设置用于格式化“价格”列的“价格”列,用户遇到的数字格式丢失的“价格”列的“价格”之后,问题在设置自定义单元格...
    编程 发布于2025-04-19
  • 如何解决由于Android的内容安全策略而拒绝加载脚本... \”错误?
    如何解决由于Android的内容安全策略而拒绝加载脚本... \”错误?
    Unveiling the Mystery: Content Security Policy Directive ErrorsEncountering the enigmatic error "Refused to load the script..." when deployi...
    编程 发布于2025-04-19
  • 在JavaScript中如何获取实际渲染的字体,当CSS字体属性未定义时?
    在JavaScript中如何获取实际渲染的字体,当CSS字体属性未定义时?
    Accessing Actual Rendered Font when Undefined in CSSWhen accessing the font properties of an element, the JavaScript object.style.fontFamily and objec...
    编程 发布于2025-04-19
  • 解决MySQL错误1153:数据包超出'max_allowed_packet'限制
    解决MySQL错误1153:数据包超出'max_allowed_packet'限制
    mysql错误1153:故障排除比“ max_allowed_pa​​cket” bytes 更大的数据包,用于面对阴谋mysql错误1153,同时导入数据capase doft a Database dust?让我们深入研究罪魁祸首并探索解决方案以纠正此问题。理解错误此错误表明在导入过程中接...
    编程 发布于2025-04-19

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3