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则是null
  console.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);
  1. 写入文件内容

代码格式如下:

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); //null
  console.log(doc); //阳顶天-大九天手
});
相关推荐
我爱学习_zwj7 小时前
Node.js入门html,css,js 30年了nodejs环境 09年出现 15年
node.js
narukeu21 小时前
对于 TypeORM 精准&模糊查询的简单二次封装
typescript·node.js·express·typeorm
哟哟耶耶1 天前
npm-npm install时rollbackFailedOptional: verb npm-session ce210dc17dd264aa报错
前端·npm·node.js
m0_748248771 天前
最新最详细的配置Node.js环境教程
node.js
大梦百万秋1 天前
从零开始搭建一个RESTful API(Node.js + Express)
node.js·restful·express
Libby博仙1 天前
VUE3 常用的组件介绍
前端·javascript·vue.js·前端框架·npm·node.js
至少零下七度1 天前
npm : 无法加载文件 D:\SoftFile\npm.ps1,因为在此系统上禁止运行脚本。
前端·npm·node.js
Libby博仙1 天前
VUE3 VITE项目在 npm 中,关于 Vue 的常用命令有一些基础命令
前端·vue.js·npm·node.js
Libby博仙1 天前
VUE3 一些常用的 npm 和 cnpm 命令,涵盖了修改源、清理缓存、修改 SSL 协议设置等内容。
缓存·npm·node.js·vue·ssl
来吧~1 天前
webpack常见优化方法
前端·webpack·node.js