1.运行脚本
安装好nodejs环境,新建一个test.js文件
let h = 'hello world'
console.log(h)
文件输出-在终端打印:
node .\test.js
2.模块机制
在node环境中运行结果为 {} --(空对象)
在目录下新建test1.js和test2.js
test1.js示例:
// 如果test2.js没有写module.exports或者exports
let res = require('./test2.js');
console.log(res); // 输出结果是{}
exports
test2.js如果写如下内容
exports.testFunc = function (a,b) {
return a + b
}
exports.str = '您好外星人'
那么访问test1.js输出如下:
let res = require('./test2.js');
console.log(res); // 输出结果 { testFunc: [Function], str: '您好外星人' }
module.exports
新建test3.js,输入内容如下:
module.exports = "您好,火星人"
module.exports = function(){
return "你好,太阳人"
}
在test1.js继续使用require引入:
let res2 = require('./test3.js');
console.log(res2) // 如果test3只有一个第一个module.exports,就输出: 您好,火星人 但是在加上第二个module.exports,就会被覆盖,直接输出Function
console.log(typeof res2 === 'function' && res2()) // 你好,太阳人
使用module.exports导出多个变量或者函数,比如新建一个test4.js,内容如下:
const num = 190000
const myFunc = (a,b) => {
return a * b
}
module.exports={
num,
myFunc
}
在测试test1.js调用
let res = require('./test4.js');
console.log(res) // { num: 190000, myFunc: [Function: myFunc] }
3.文件操作fs模块
读取文件
const fs = require("fs")
// 读取操作
// readFileSync-同步,堵塞模式
const input = fs.readFileSync("contents.txt", "utf8")
console.log(input)
// readFile-异步读取
fs.readFile("contents.txt", "utf8",function(err,data) {
if (err) throw err;
console.log(data)
})
写入文件
const fs = require("fs")
//writeFile异步写入文件
fs.writeFile('writeTest.txt','writeFile写入的内容',(err,data)=>{
if(err) throw err;
console.log('写入成功', data); // 写入成功 undefined
})
//writeFileSync-同步
fs.writeFileSync('writeTest1.txt','writeFileSync同步写入')
//writeFile异步写入文件对于引用类型一般都使用json存储,不然出现在读取容易出现乱码
const arr = [
{
name: 'Tyler Bennett',
age: 39
}
]
fs.writeFile('writeTest.txt',JSON.stringify(arr),'utf8',(err,data)=>{
console.log(err,data)
})
删除文件
const fs = require( 'fs' );
//异步操作删除writeTest1.txt
fs.unlink('writeTest1.txt',(err,data)=>{
if (err) {
console.log(err);
} else{
console.log('删除文件成功');
}
})
//同步操作删除writeTest.txt2
fs.unlinkSync('writeTest2.txt2');
创建文件
const fs = require('fs');
//异步创建文件夹
fs.mkdir('./mkdirTest',(err,data)=>{
if (err) {
console.log(err);
} else{
console.log('文件夹创建成功');
}
})
//同步创建文件夹
fs.mkdirSync('./mkdirSyncTtest');
删除文件夹
const fs = require( 'fs' );
//异步删除文件夹
fs.rmdir('mkdirSyncTtest',(err,data)=>{
if (err) {
console.log(err);
} else{
console.log('删除mkdirSyncTtest文件夹成功');
}
})
//同步删除文件夹
fs.rmdirSync('mkdirTest');
判断目录还是文件
const fs = require( 'fs' );
// 判断是否是目录还是文件
function isDirOrFile( path ) {
if(fs.lstatSync( path ).isDirectory()) {
return '是一个目录'
}else if(fs.lstatSync( path ).isFile()) {
return '是一个文件'
}else {
return '非目录非文件';
}
}
console.log(isDirOrFile('contents.txt')) // 是一个文件
console.log(isDirOrFile('testMkdir')) // 是一个目录
// 异步获取文件判断是否是目录还是文件
fs.stat('testMkdir',(err,file)=>{
if (err) {
return console.error(err);
} else{
// info.isFile() 判断是不是一个文件 返回结果为true
console.log(file.isFile());
if(file.isFile()) {
console.log('是一个文件')
}else if(file.isDirectory()){
console.log('是一个目录')
}
console.log("file信息",file)
/*
file信息输出:
Stats {
dev: 16777220,
mode: 16877,
nlink: 2,
uid: 502,
gid: 20,
rdev: 0,
blksize: 4096,
ino: 54129510,
size: 64,
blocks: 0,
atimeMs: 1685413920150.6394,
mtimeMs: 1685413920150.6394,
ctimeMs: 1685413920150.6394,
birthtimeMs: 1685413920150.6394,
atime: 2023-05-30T02:32:00.151Z,
mtime: 2023-05-30T02:32:00.151Z,
ctime: 2023-05-30T02:32:00.151Z,
birthtime: 2023-05-30T02:32:00.151Z
}
*/
}
})
// 同步获取文件
const file = fs.statSync('createMkdir.js')
if(file.isDirectory()){
console.log("是一个目录")
}else if(file.isFile()){
console.log("是一个文件")
}
console.log(file,'statSync')
获取某个文件夹下的所有文件
const fs = require('fs');
//异步读取文件夹下所有文件
fs.readdir('../my-project',(err,files)=>{
if (err) {
return new Error('Error reading directory');
}
// console.log("files",files) // 获取文件下所有文件数组集
/*
files [
'.gitignore',
'README.md',
'config-overrides.js',
'node_modules',
'package-lock.json',
'package.json',
'public',
'src',
'tsconfig.json'
]
*/
//读取所有文件的内容
files.map(item => {
fs.readFile(`../my-project/${item}`,'utf-8',(err,data)=>{
// console.log(err,data)
})
})
})
// 同步读取文件夹下所有文件
const files = fs.readdirSync('../my-project');
console.log(files)
重命名并移动文件位置
const fs = require('fs');
// 异步重命名并移动文件位置
fs.rename('contents.txt','testMkdir/test.txt',(err,data)=>{
if (err) {
console.log(err);
} else{
console.log('重命名并移动位置成功',data);
}
})
// 同步重命名并移动文件位置
fs.renameSync('writeTest.txt','testMkdir/test2.txt');
重命名文件并异步复制
const fs = require('fs');
// 重命名文件并异步复制
fs.copyFile('writeTest22.txt2','testMkdir/test3.txt',(err)=>{
if (err) {
console.log(err);
} else{
console.log('重命名文件并异步复制成功');
}
})
// 重命名文件并异步复制
fs.copyFileSync('writeTest.txtt','testMkdir/test4.txt');```