nodejs模块化
module对象是node自带的模块化对象,该对象下有一个空对象exports,我们将需要暴漏出去的对象,直接赋值给exports即可,就对外暴漏了接口。
require引入
在需要引入的模块中,使用require引入,再用变量接收。
格式:let 变量名 = require(“模块化路径”);
如:
let moduleA = require("./a.js");
module.exports与exports的区别
extports:可以多次导出,本质与module.exports是相等的
module.exports:只能导出一次,多次导出最后一次生效
extports是一个引用,指向的是module.exports
如果在同一文件中使用两种导出,给exports添加的属性和方法也会添加在module.exports上。而添加在module.exports上的属性与方法则不会添加在exports上。
nodejs模块
1,自定义模块
需要自己手动导出
定义模块:
通过module.exports = {} 导出
通过exports.属性名 = value 导出
引入模块:
const 变量名 = require(”模块路径“)
2,内置模块
nodejs原生提供,可直接使用
1,读取文件
引入fs内置模块,此模块用来操作文件。fs:filesystem,文件操作系统。
引入模块
const fs = require("fs");
调用readFile方法,读取文件内容
fs.readFile("./b.txt",'utf-8',function(err,data){
console.log("错误信息为"+err);
console.log("读取到的内容为"+data);
})
readFile()第一个参数:指定读取文件的路径
readFile()第二个参数”utf-8“:指定读取的编码
readFile()第三个参数:回调函数,读取的时候执行的操作。
err 是读取失败时的错误信息
data 是读取的内容。
2,写入内容
// 引入fs内置模块
const fs = require("fs");
let data = "hello world";
// writeFile 方法是写入,覆盖式 第一个参数:写入文件的路径
// 第二个参数:写入的内容。
// 第三个参数:一个函数,写入完成后执行. err表示错误信息,如果成功执行,则err为null
fs.writeFile("./a.txt",data,function(err){
if(err){
console.log(err);
}
})
// appendFile 追加
// fs.appendFile("./a.txt",data,function(err){
// if(err){
// console.log(err);
// }
// })
3,文件的读写
const fs = require("fs");
fs.readFile("./a.txt","utf-8",function(err,data){
if (err) {
console.log("读取失败:"+err);
return;
}
fs.writeFile("./b.txt",data,function(err){
if (err) {
console.log("写入失败:"+err);
}
})
})
4,删除文件
const fs = require("fs");
fs.unlink("./a.txt",function(error){
if (error) {
console.log("删除失败,原因:"+error);
}
console.log("删除成功!");
})
5,创建文件夹
const fs = require("fs");
fs.mkdir("a",function(err){
if (err) {
//对错误进行处理
console.log("创建文件夹失败,原因:"+err);
}
console.log("创建成功");
})
6,重命名
const fs = require("fs");
fs.rename("c","d",function(err){
if (err) {
console.log("重命名失败,原因:"+err);
}else{
console.log("重命名成功");
}
})
路径模块
路径模块:包含了一系列处理和转换文件路径的工具集合。
为什么要使用路径模块?
window 文件的分隔符是 \ / 在Linux下只有/
引入:
const path = require("path");
path.join()
作用:拼接路径
let filePath = path.join("static","img","heixin001","kenghuo002");
// 输出结果:static\img\heixin001\kenghuo002
// 如果是Linux 输出结果:static/img/heixin001/kenghuo002
console.log(filePath);
path.extname(文件路径)
作用: 获取文件的后缀名
__dirname:获取当前文件所在的绝对路径
在node中,操作文件时需要使用绝对路径,引入模块时使用相对路径
node中,相对路径不是按照当前文件来执行的,而是按照命令行所在的目录下。
const path =require("path");
const fs = require("fs");
fs.readFile(path.join(__dirname,"a.txt"),"utf-8",function(err,data){
if (err) {
console.log("读取失败:"+err);
}else{
console.log("读取的内容:"+data);
}
})