Path
const path = require('node:path')
console.log(path.basename('/foo/bar/baz/asdf/quux.html'));
console.log(path.dirname('/foo/bar/baz/asdf/quux.html'));
console.log(path.extname('/foo/bar/baz/asdf/quux.html'));
console.log(path.join('/foo', 'bar', 'baz/asdf', 'quux', '..'));
console.log(path.resolve('/foo/bar', './baz'));
console.log(path.resolve('./baz'))
console.log(path.resolve(__dirname, './index.js'));
console.log(path.parse('/foo/bar/baz/asdf/quux.html'));
console.log(path.format(path.parse('/foo/bar/baz/asdf/quux.html')));
console.log(path.sep);
os
const os = require('os');
console.log(os.platform());
console.log(os.release());
console.log(os.type());
console.log(os.version());
const paltform = os.platform();
const { exec } = require('child_process');
const open = (url) => {
if (paltform === 'win32') {
exec(`start ${url}`);
} else if (paltform === 'darwin') {
exec(`open ${url}`);
} else if (paltform === 'linux') {
exec(`xdg-open ${url}`);
}
}
open('https://www.baidu.com');
process
console.log(process.arch);
console.log(process.platform);
console.log(process.argv);
[ 'E:\\software\\nodejs\\node.exe', 'E:\\learn_node\\demo1\\index03.js',
'--version' ]
console.log(process.cwd());
process.on('exit', () => {
console.log('退出进程');
});
child_process
const path = require('node:path')
const { exec, execSync, spawn, spawnSync, execFile, execFileSync, fork } = require('child_process')
exec('node -v', (err, stdout, stderr) => {
console.log(stdout);
});
console.log(execSync('node -v').toString());
execFile(path.resolve(__dirname, './bat.cmd'), null, (err, stdout) => {
console.log(stdout);
});
const testPorcess = fork(path.resolve(__dirname, './test.js'));
testPorcess.send('hello world');
util工具
const eventEmitter = require('events');
const bus = new eventEmitter();
bus.setMaxListeners(20);
bus.on('test', (data) => {
console.log(data);
})
bus.once('test', (data) => {
console.log(data);
})
bus.emit('test', 'hello world');
const { exec } = require('child_process');
const util = require('node:util');
exec('node -v', (err, stdout, stderr) => {
if (err) {
return;
}
console.log(stdout);
})
const execPromise = util.promisify(exec);
execPromise('node -v').then((res) => {
console.log(res);
}).catch((err) => {
console.log(err);
})
const promiseify = (fn) => {
return (...args) => {
return new Promise((resolve, reject) => {
fn(...args, (err, ...values) => {
if (err) {
return reject(err);
}
if (values && values.length > 1) {
let obj = {}
for(let key in values) {
obj[key] = values[key];
}
resolve(obj);
} else {
resolve(values[0]);
}
})
})
}
}
const execPromise1 = promiseify(exec);
execPromise1('node -v').then((res) => {
console.log(res);
}).catch((err) => {
console.log(err);
})
const fn = (type) => {
if (type === 1) {
return Promise.resolve('success');
} else {
return Promise.reject('error');
}
}
const callback = util.callbackify(fn);
callback(1, (err, res) => {
console.log(err, res);
})
fs文件
const fs = require('node:fs')
const fs2 = require('node:fs/promises')
fs.readFile('./index.txt', {
encoding: 'utf-8',
flag: 'r'
}, (err, data) => {
if (err) {
console.error(err)
return
}
console.log(data,'1')
})
let data = fs.readFileSync('./index.txt')
console.log(data, '2')
console.log(data.toString('utf-8'))
fs2.readFile('./index.txt').then((data) => {
console.log(data.toString('utf-8'), '3')
})
const readStream = fs.createReadStream('./index.txt')
readStream.on('data', (chunk) => {
console.log(chunk.toString('utf-8'), 'chunk')
})
readStream.on('end', () => {
console.log('读取完成')
})
fs.mkdirSync('./test')
fs.mkdirSync('./test2/test3', { recursive: true })
fs.rmSync('./test2', { recursive: true })
fs.renameSync('./test', './test1')
fs.watch('./index.txt', (eventType, filename) => {
console.log(eventType, filename)
})
fs.writeFileSync('./index.txt', 'hello world')
fs.writeFileSync('./index.txt', '\nhello world1', { flag: 'a' })
fs.appendFileSync('./index.txt', '\nhello world2')
let verse = ['hello world3', 'hello world4', 'hello world5']
let writeStream = fs.createWriteStream('./index.txt')
verse.forEach((item) => {
writeStream.write(item + '\n')
})
writeStream.end()
writeStream.on('finish', () => {
console.log('写入完成')
})
fs.symlinkSync('./index.txt', './index3.txt')