Node.js系统模块

【图书介绍】《Node.js+MongoDB+Vue.js全栈开发实战》-CSDN博客

《Node.js+MongoDB+Vue.js全栈开发实战(Web前端技术丛书)》(邹琼俊)【摘要 书评 试读】- 京东图书 (jd.com)

2.2.1  什么是系统模块

由于Node.js运行环境提供的API都是以模块化的方式进行开发的,因此它们又被称为系统模块。

系统模块是由Node.js提供的一个个具名模块,它们都有自己的特殊名称标识,例如:

  1. fs:文件操作模块。
  2. http:网络服务构建模块。
  3. os:操作系统信息模块。
  4. path:路径处理模块。

所有核心模块都必须先手动使用require方法来加载,然后才可以使用,如图2-5所示。

图2-5

2.2.2  系统模块fs文件操作

浏览器中的JavaScript是没有文件操作能力的,但是Node.js中的JavaScript具有文件操作的能力。

在Node.js中如果想要进行文件操作,就必须引入fs这个核心模块。

fs是file-system的简写,就是文件系统的意思。在fs这个核心模块中,提供了所有与文件操作相关的API。

fs的引用方式:const fs = require('fs')。

1. 读取文件内容

代码格式如下:

fs.reaFile('文件路径/文件名称'[,'文件编码'], callback);。

参数说明:

  1. 第一个参数是文件路径。
  2. 第二个参数是文件编码,方括号表示该参数是可选参数。
  3. 第三个参数是回调函数。

下面来看一个示例。新建测试文件hello-china.js,代码如下:

var msg = '中国,你好';
console.log(msg);

新建read-file.js,代码如下:

// 1.通过模块的名字fs对模块进行引用
const fs = require('fs');// 2.通过模块内部的readFile读取文件内容,res 是文件读取的结果
fs.readFile('./hello-china.js', 'utf8', (err, res) => {// 如果文件读取出错,err则是一个包含错误信息的对象// 如果文件读取正确,err则是nullconsole.log(err);console.log(res);console.log(res.toString());
});

文件中存储的其实都是二进制数,即0和1,但为什么这里看到的不是0和1呢?原因是二进制数转为十六进制数了。无论是二进制的0和1还是十六进制数,人们通常都不认识,我们可以通过toString方法将它们转为能认识的字符。

执行node read-file.js,结果如下:

D:\WorkSpace\node_mongodb_vue3_book\codes\chapter2\js> node read-file.js
null
var msg = '中国,你好';
console.log(msg);

2. 写入文件内容

代码格式如下:

fs.writeFile('文件路径/文件名称', '数据', callback);。

参数说明:

  1. 第一个参数是文件路径。
  2. 第二个参数是文件内容。
  3. 第三个参数是回调函数。

下面来看一个示例。新建文件write-file.js,代码如下:

const fs = require('fs');fs.writeFile('./file.txt', '阳顶天-大九天手', (err) => {if (err != null) {console.log(err);return;}console.log('文件内容写入成功');
});

如果文件file.txt不存在,会自动创建一个file.txt文件。

执行node write-file.js后,文件file.txt的内容如下:

阳顶天-大九天手

我们不需要全部记住Node.js中的API模块内容,只需要知道有哪些模块,到要用的时候,可以去查API文档。以下是API在线文档地址:

  1. 官网英文版:https://nodejs.org/dist/latest-v12.x/docs/api/。
  2. 中文版:http://nodejs.cn/api/。

2.2.3  系统模块path路径操作

在编写跨平台的应用程序时,需要进行路径拼接的原因是不同操作系统中文件路径的表示方式不同。例如,在Windows操作系统中,路径通常使用反斜杠(\)作为目录分隔符,而在Linux或macOS中,路径使用正斜杠(/)作为分隔符。为了确保代码的可移植性和避免潜在的错误,在使用Node.js等编程环境时,建议使用内置的路径处理模块(如Node.js的path模块)来进行路径拼接。这样可以保证路径在不同操作系统上都能正确工作,无须手动处理这些差异。

path模块包含一系列处理和转换文件路径的工具集,通过require('path')可以访问这个模块。

路径拼接语法:path.join('路径', '路径', ...)。

下面来看一个示例。新建文件path.js,代码如下:

// 导入path模块
const path = require('path');
// 路径拼接
const finalPath = path.join('public', 'uploads', 'avatar');
//输出结果: public/uploads/avatar
console.log(finalPath);

2.2.4  相对路径和绝对路径

大多数情况下使用绝对路径,因为相对路径相对的是node命令行工具的当前工作目录。为了尽量避免这个问题,建议将文件操作的相对路径都转为动态的绝对路径。

在读取文件或者设置文件路径时都会选择绝对路径,使用__dirname可以获取当前目录所在的绝对路径,使用__filename可以动态获取当前文件的绝对路径。

使用方式:path.join(__dirname, '文件名')。

下面来看一个示例。新建文件relative-absolute.js,代码如下:

const fs = require('fs');
const path = require('path');
//D:\WorkSpace\node_mongodb_vue3_book\codes\chapter2\js
console.log(__dirname);
// D:\WorkSpace\node_mongodb_vue3_book\codes\chapter2\js\file.txt
console.log(path.join(__dirname, 'file.txt'));fs.readFile(path.join(__dirname, 'file.txt'), 'utf8', (err, doc) => {console.log(err); //nullconsole.log(doc); //阳顶天-大九天手
});

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/63594.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

路由封装,连接导航router-link

路由的封装抽离: 所有路由配置堆在main.js中不合适,需将路由模块抽离出来,以便维护 将与路由相关信息提取到src文件夹下的router文件夹下的index.js文件中 在main.js中就只需要导入当前路由,并且注入到当前实例中,其他…

工业4.0下的IT网络与OT网络

https://zhuanlan.zhihu.com/p/498984722 随着“中国制造2025”的深入推进,制药行业以手工为主的传统生产方式正在被以“工业4.0 ”为核心的自动化生产方式逐步替代。 为了实现生产自动化,很多制药企业都引入了由PLC(可编程逻辑控制器 &am…

Ubuntu压缩打包解压

ubuntu压缩打包 上图,压缩当前目录svn 为svn.tar.gaz,解压后再当前解压目录生成svn文件 在Ubuntu中,你可以使用tar命令来创建一个压缩包,或者使用zip命令来创建一个.zip压缩文件。以下是两种常见的压缩方法: 下图&am…

Master EDI 项目需求分析

Master Electronics 通过其全球分销网络,支持多种采购需求,确保能够为客户提供可靠的元件供应链解决方案,同时为快速高效的与全球伙伴建立合作,Master 选择通过EDI来实现与交易伙伴间的数据传输。 EDI为交易伙伴之间建立了一个安…

人脸识别之Python的人工智能研究(附学习资源)

1. 引言:人脸识别的意义与挑战 人脸识别技术已经在多个领域得到了广泛应用,包括手机解锁、公共安全监控、社交媒体、人机交互等。这项技术的普及不仅提高了生活的便利性,也为社会安全提供了有效的支持。然而,随着人脸识别技术的不…

时频转换 | Matlab梅尔频谱图Mel spectrogram一维数据转二维图像方法

目录 基本介绍程序设计参考资料获取方式 基本介绍 时频转换 | Matlab梅尔频谱图Mel spectrogram一维数据转二维图像方法 程序设计 clear clc % close all load 130.mat % 导入数据 x X130_DE_time; % 本数据只选择5120个点进行分析 x x(1:120000,:); fs 12000 ; % 数据…

Milvus向量数据库03-搜索理论

Milvus向量数据库03-搜索理论 1-ANN搜索 通过 k-最近邻(kNN)搜索可以找到一个查询向量的 k 个最近向量。kNN 算法将查询向量与向量空间中的每个向量进行比较,直到出现 k 个完全匹配的结果。尽管 kNN 搜索可以确保准确性,但十分耗…

STM32 出租车计价器系统设计(一) 江科大源码改写

STM32 出租车计价器系统设计 功能目标 驱动步进电机模拟车轮旋转,并实现调速功能。 设置车轮周长和单价,检测车轮转速和运转时间。 计算并显示行驶里程和价格。 硬件材料 28BYJ48 五线四相步进电机和 ULN2003 驱动板模块 测速传感器模块 嵌入式小系统…

顶顶通电话机器人开发接口对接大语言模型之实时流TTS对接介绍

大语言模型一般都是流式返回文字,如果等全部文字返回了一次性去TTS,那么延迟会非常严重,常用的方法就是通过标点符号断句,返回了一句话就提交给TTS。随着流TTS的出现,就可以直接把大模型返回的文字灌给流TTS&#xff0…

问题清除指南|AEROBLADE论文复现相关要点总结

前言:本篇博客总结本人在复现 CVPR 2024 论文 AEROBLADE 过程中遇到的一些问题及解决方案。 注:仅仅使用了论文github源码中的Quickstart部分。 论文链接🔗:AEROBLADE: Training-Free Detection of Latent Diffusion Images Using…

Qt初识_对象树

个人主页:C忠实粉丝 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 C忠实粉丝 原创 Qt初识_对象树 收录于专栏【Qt开发】 本专栏旨在分享学习Qt的一点学习笔记,欢迎大家在评论区交流讨论💌 目录 什么是对象树 为什么要引…

排序算法(3):插入排序

问题 排序 [30, 24, 5, 58, 18, 36, 12, 42, 39] 插入排序 插入排序将序列分为已排序和未排序两部分,每次从未排序部分取出第一个元素,插入到已排序部分的适当位置。重复此过程直到所有元素排序完成。 图解 初始化第一个元素为已排序部分&#xff0…

Java版-图论-最小生成树-Kruskal算法

实现描述 为了造出一棵最小生成树,我们从最小边权的边开始,按边权从小到大依次加入,如果某次加边产生了环,就扔掉这条边,直到加入了 n-1 条边,即形成了一棵树。 实现代码 首选我们对所有的边&#xff0c…

深入解析 Spring Security —— 打造高效安全的权限管理体系

目录 前言1. 初识 Spring Security1.1 Spring Security 的两大核心功能1.2 Spring Security 的主要特点 2. 配置 Spring Security2.1 配置类概述2.2 基础配置示例2.3 示例解析 3. Spring Security 的进阶功能3.1 自定义用户服务3.2 注解式权限控制3.3 动态权限控制 4. 实战应用…

JetBrains IDE(IDEAWebStorm)配置GitHub Copilot

关于 GitHub Copilot 和 JetBrains IDE GitHub Copilot 在编写代码时提供 AI 对程序员的自动完成样式的建议。 有关详细信息,请参阅“关于 GitHub Copilot Individual”。 如果使用 JetBrains IDE,可以直接在编辑器中查看并合并来自 GitHub Copilot 的…

OLLAMA+FASTGPT+M3E 大模型本地化部署手记

目录 1.安装ollama 0.5.1 2.下载大模型 qwen2.5 3b 3.开启WSL 4.更新wsl 5.安装ubuntu 6.docker下载 6.1 修改docker镜像源 6.2 开启WSL integration 7.安装fastgpt 7.1 创建fastgpt文件夹 7.2 下载fastgpt配置文件 8.启动容器 9.M3E下载 9.1 下载运行命令 9.2…

Go的Gin比java的Springboot更加的开箱即用?

前言 隔壁组的云计算零零后女同事,后文简称 云女士 ,非说 Go 的 Gin 框架比 Springboot 更加的开箱即用,我心想在 Java 里面 Springboot 已经打遍天下无敌手,这份底蕴岂是 Gin 能比。 但是云女士突出一个执拗,非我要…

神经网络中的过拟合问题及其解决方案

目录 ​编辑 过拟合的定义与影响 过拟合的成因 1. 模型复杂度过高 2. 训练数据不足 3. 训练时间过长 4. 数据特征过多 解决方案 1. 数据增强 2. 正则化 3. Dropout 4. 提前停止 5. 减少模型复杂度 6. 集成学习 7. 交叉验证 8. 增加数据量 9. 特征选择 10. 使…

Pull down筛靶策略丨筛选药物与潜在靶蛋白之间相互作用的体外技术

小分子药靶筛选的Pull down实验是一种有效的筛选药物与潜在靶蛋白之间相互作用的体外技术。利用生物分子之间的亲和力原理,将生物素标记的小分子化合物固定在链霉亲和素的磁珠上,与蛋白裂解液进行孵育,孵育结束后与小分子结合的蛋白可以通过质…

Certimate自动化SSL证书部署至IIS服务器

前言:笔者上一篇内容已经部署好了Certimate开源系统,于是开始搭建部署至Linux和Windows服务器,Linux服务器十分的顺利,申请证书-部署证书很快的完成了,但是部署至Windows Server的IIS服务时,遇到一些阻碍&a…