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

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

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

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]删除
最新教程 更多>
  • Async Void vs. Async Task在ASP.NET中:为什么Async Void方法有时会抛出异常?
    Async Void vs. Async Task在ASP.NET中:为什么Async Void方法有时会抛出异常?
    在ASP.NET async void void async void void void void void的设计无需返回asynchroncon而无需返回任务对象。他们在执行过程中增加未偿还操作的计数,并在完成后减少。在某些情况下,这种行为可能是有益的,例如未期望或明确预期操作结果的火灾和...
    编程 发布于2025-06-03
  • 如何使用node-mysql在单个查询中执行多个SQL语句?
    如何使用node-mysql在单个查询中执行多个SQL语句?
    Multi-Statement Query Support in Node-MySQLIn Node.js, the question arises when executing multiple SQL statements in a single query using the node-mys...
    编程 发布于2025-06-03
  • `console.log`显示修改后对象值异常的原因
    `console.log`显示修改后对象值异常的原因
    foo = [{id:1},{id:2},{id:3},{id:4},{id:id:5},],]; console.log('foo1',foo,foo.length); foo.splice(2,1); console.log('foo2', foo, foo....
    编程 发布于2025-06-03
  • Go语言如何动态发现导出包类型?
    Go语言如何动态发现导出包类型?
    与反射软件包中的有限类型的发现能力相反,本文探索了替代方法,探索了在Runruntime。go import( “ FMT” “去/进口商” ) func main(){ pkg,err:= incorter.default()。导入(“ time”) 如果err...
    编程 发布于2025-06-03
  • 如何将PANDAS DataFrame列转换为DateTime格式并按日期过滤?
    如何将PANDAS DataFrame列转换为DateTime格式并按日期过滤?
    将pandas dataframe列转换为dateTime格式示例:使用column(mycol)包含以下格式的以下dataframe,以自定义格式:})指定的格式参数匹配给定的字符串格式。转换后,MyCol列现在将包含DateTime对象。 date oped filtering > = p...
    编程 发布于2025-06-03
  • 如何同步迭代并从PHP中的两个等级阵列打印值?
    如何同步迭代并从PHP中的两个等级阵列打印值?
    同步的迭代和打印值来自相同大小的两个数组使用两个数组相等大小的selectbox时,一个包含country代码的数组,另一个包含乡村代码,另一个包含其相应名称的数组,可能会因不当提供了exply for for for the uncore for the forsion for for ytry...
    编程 发布于2025-06-03
  • C++成员函数指针正确传递方法
    C++成员函数指针正确传递方法
    如何将成员函数置于c 的函数时,接受成员函数指针的函数时,必须同时提供对象的指针,并提供指针和指针到函数。需要具有一定签名的功能指针。要通过成员函数,您需要同时提供对象指针(此)和成员函数指针。这可以通过修改Menubutton :: SetButton()(如下所示:[&& && && &&华)...
    编程 发布于2025-06-03
  • 如何使用FormData()处理多个文件上传?
    如何使用FormData()处理多个文件上传?
    )处理多个文件输入时,通常需要处理多个文件上传时,通常是必要的。 The fd.append("fileToUpload[]", files[x]); method can be used for this purpose, allowing you to send multi...
    编程 发布于2025-06-03
  • 解决Spring Security 4.1及以上版本CORS问题指南
    解决Spring Security 4.1及以上版本CORS问题指南
    弹簧安全性cors filter:故障排除常见问题 在将Spring Security集成到现有项目中时,您可能会遇到与CORS相关的错误,如果像“访问Control-allo-allow-Origin”之类的标头,则无法设置在响应中。为了解决此问题,您可以实现自定义过滤器,例如代码段中的MyFi...
    编程 发布于2025-06-03
  • 如何为PostgreSQL中的每个唯一标识符有效地检索最后一行?
    如何为PostgreSQL中的每个唯一标识符有效地检索最后一行?
    postgresql:为每个唯一标识符提取最后一行,在Postgresql中,您可能需要遇到与在数据库中的每个不同标识相关的信息中提取信息的情况。考虑以下数据:[ 1 2014-02-01 kjkj 在数据集中的每个唯一ID中检索最后一行的信息,您可以在操作员上使用Postgres的有效效率: ...
    编程 发布于2025-06-03
  • 为什么不使用CSS`content'属性显示图像?
    为什么不使用CSS`content'属性显示图像?
    在Firefox extemers属性为某些图像很大,&& && && &&华倍华倍[华氏华倍华氏度]很少见,却是某些浏览属性很少,尤其是特定于Firefox的某些浏览器未能在使用内容属性引用时未能显示图像的情况。这可以在提供的CSS类中看到:。googlepic { 内容:url(&#...
    编程 发布于2025-06-03
  • 如何使用Python的请求和假用户代理绕过网站块?
    如何使用Python的请求和假用户代理绕过网站块?
    如何使用Python的请求模拟浏览器行为,以及伪造的用户代理提供了一个用户 - 代理标头一个有效方法是提供有效的用户式header,以提供有效的用户 - 设置,该标题可以通过browser和Acterner Systems the equestersystermery和操作系统。通过模仿像Chro...
    编程 发布于2025-06-03
  • Java为何无法创建泛型数组?
    Java为何无法创建泛型数组?
    通用阵列创建错误 arrayList [2]; JAVA报告了“通用数组创建”错误。为什么不允许这样做?答案:Create an Auxiliary Class:public static ArrayList<myObject>[] a = new ArrayList<myO...
    编程 发布于2025-06-03
  • 如何从PHP中的数组中提取随机元素?
    如何从PHP中的数组中提取随机元素?
    从阵列中的随机选择,可以轻松从数组中获取随机项目。考虑以下数组:; 从此数组中检索一个随机项目,利用array_rand( array_rand()函数从数组返回一个随机键。通过将$项目数组索引使用此键,我们可以从数组中访问一个随机元素。这种方法为选择随机项目提供了一种直接且可靠的方法。
    编程 发布于2025-06-03
  • 使用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-06-03

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

Copyright© 2022 湘ICP备2022001581号-3