跳到主要内容

工程化操作

node实现遍历文件及所有文件名​

js
const fs=require('fs');
const realPath = require('realPath ')
// import fs from 'fs' 这里是不能用import的 ,因为node是基于commonJS规范,import是基于ES规范的
const readFile=(path)=>{
const dirInfo = fs.resddirSync(path);//dirInfo是一个数组;
dirInfo.firEach((item)=>{
const fileLocal = realPath.join(path, item); //拿到文件的目录
const info = fs.statSync(fileLocal ); //获取文件信息
if(info.isDirectorty){
readFile(fileLocal);
}else{
console.log(`file:$(fileLocal)`)
}
})
// console.log(path);
}
readFile(_dirname) //_dirname表示当前文件所在的目录

util工具​

promisify​

  • 可以将回调风格的函数,转换为promise的形式 【Callback 转为 Promise】

满足条件:首先要确保这个 callback 为一个错误优先的回调函数,即 (err, value) => ... err 指定一个错误参数,value 为返回值

用法:

  • 传统的callback写法:
js
const util = require('util');

fs.readFile('text.txt', 'utf8', function(err, result) {
console.error('Error: ', err);
console.log('Result: ', result); // Nodejs Callback 转 Promise 对象测试
});
  • 使用promisify转换
js
const { promisify } = require('util');
const readFilePromisify = util.promisify(fs.readFile); // 转化为 promise

readFilePromisify('text.txt', 'utf8')
.then(result => console.log(result)) // Nodejs Callback 转 Promise 对象测试
.catch(err => console.log(err));

promisify简易版实现

js
const promisify = fn => (...args) => new Promise((resolve,reject)=>{
fn(...args,(err,data)=>{
if(err) reject(err);
resolve(data);
})
})