node 模块学习笔记


一、fs模块(文件模块)

首选定义一个日志方法,记录操作的时间节点。

function log(...msg){
	const date = new Date();
    const dateStr = `[${date.getFullYear()}-${date.getMonth() + 1}-${date.getDate()} ${date.getHours()}:${date.getMinutes()}:${date.getSeconds()}]`;
    console.log(dateStr, ...msg);
}

1.unlink 删除文件

  1. promise 实例,其将在异步操作后完成
import {unlink} from 'fs/promises';

try {
	await unlink('./temp/hello');
	console.log('delete success');
} catch(error) {
	console.error('there was an error', error.message);
}
  1. 回调的形式进行删除,如果删除失败抛出异常,默认第一个参数 error 如果成功则是 null/undefined
import {unlink} from 'fs';
unlink('./temp/hello',(err) => {
	if (err) throw err;
	console.log('delete success');
});
  1. 同步的形式进行删除
import {unlinkSync} from 'fs';
try {
	unlinkSync('./temp/hello');
	console.log('delete success');
} catch(error){
	throw new ReferenceError(error.message);
}

注: 如果需要同步操作则需要捕获异常,防止发生线程阻塞.

2.read 读取文件

  1. 异步操作
const {readFile} = require('fs');
readFile('./test.json',(err, data) => {
	if (err) { throw err.message; }
	console.log(data.toString());
})
  1. 同步操作
const {readFileSync } = require('fs');
try {
	const data = readFileSync('./test.json');
	console.log(data.toString());
} catch(err){
	throw err.message;
}

3.write 写入文件

  1. 同步写入
const { writeFileSync } = require('fs');
try{
	writeFileSync('./test.txt', 'hello world');
} catch(err){
  throw err.message;
}
  1. 异步写入
const { writeFile } = require('fs');
const writeContent = 'hello world';
writeFile('./test.txt', writeContent,(err) => {
	if (err) { console.error(err); }
	console.log('写入成功!');
})

这里默认是如果文件不存在先创建然后写入.

4.watch 监听文件,目录变化

  • 监听目录及其下方的子目录
    监听器回调有两个参数 (eventType, filename)。 eventType 是 ‘rename’ 或 ‘change’, filename 是触发事件的文件的名称。
const {watch} = require('fs');
// recursive 是否监听子目录,默认为false
watch('./css', {recursive: true},(eventType, filename) => {
	console.log(eventType);
	console.log(filename);
})
  • 监听单个文件的变化
watch('./test.json', (eventType, filename) => {
	if (filename){
		console.log(`filename:${filename}`);
	} else {
		console.log('filename not provided');
	}
});

二、child_process模块

1.spawn 执行子进程

默认情况下,会在父Node.js 进程和衍生的子进程之间建立 stdinstdout , stderr 的管道。

const { spawn,exec } = require('child_process');
const ls = spawn('node',['-v']);
// 进程执行成功
ls.stdout.on('data',(data) => {
	console.log(`stdout: ${data}`);
});
// 进程执行异常
ls.stderr.on('data', (data) => {
	console.log(`stderr: ${data}`);
});
// 执行完毕后关闭子进程
ls.on('close',(code)=> {
	console.log(`子进程退出,退出码:${code}`);
});

如下图所示:

在这里插入图片描述

2.exec 执行子进程

exec 通常用于执行比较复杂的命令,无需像spawn 方法把参数列表传入,参数以空格的形式分开

exec('node -v', (error, stdout, stderr) => {
  console.log('**************');
  if (error) {
    console.error(`exec error ${error}`);
    return;
  }
  console.log(`stdout: ${stdout}`);
  if (stderr) {
    console.error(`stderr:${stderr}`);
  }
});
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值