node模块化
模块的分类:
内置模块 node官方提供的模块
自定义模块 开发人员定义的模块
第三方模块 由第三方开发,使用前需要下载安装。
模块作用域:
在自定义模块中的变量,函数,对象等成员,只能在当前模块中使用,这种模块级别的访问闲置,就叫做模块作用域。
自定义模块
在node下,每一个js文件中都有一个module对象,该对象下有一个exports属性。该属性默认是一个空对象
导出:
module.exports.属性名 = 属性值
module.exports = {
属性名:属性值
}
exports.属性名 = 属性值;
导入:
var 变量名 = require("自定义模块的路径(.js可以省略不写)")
外界使用require方法导入自定义模块时,得到的就是module.exports 指向的对象。
module.exports 和 exports的区别
共同点: 都是用来导出成员的。
默认情况下,exports和module.exports指向的是同一个对象。
区别:
1.exports导出右边不能直接赋值一个对象。module.exports可以。
2.两者一起使用时,如果指向的对象不是同一个,以module.exports为准。
使用场景:
导出对象使用module.exports 导出多个方法和变量用exports。
【注意】 1.使用require引入模块时,会执行该模块下的代码。 2.模块是有缓存的,多次导入只会执行一次。
//05模块化.js 文件
var a = 10;
module.exports = {
a,
b: 20
}
module.exports.c = 30;
//06.js文件
var obj = require("./05模块化");
console.log(obj);
//返回值{ a: 10, b: 20, c: 30 }
//05模块化.js 文件
exports.a = 30;
exports.b = 20;
//06.js文件
var obj = require("./05模块化");
console.log(obj);
//返回值 { a: 30, b: 20 }
//05模块化.js 文件
module.exports.c = 30;
exports = {
a,
b: 20
}
//06.js文件
var obj = require("./05模块化");
console.log(obj);
//返回值 { c: 30 } (两者一起使用时,如果指向的对象不是同一个,以module.exports为准。)
//05模块化.js 文件
exports = {
a,
b: 20
}
//06.js文件
var obj = require("./05模块化");
console.log(obj);
//返回值 {} (exports导出右边不能直接赋值一个对象)
fs模块
概念:fs模块是node官方提供的,用于操作文件。它提供了一系列的属性和方法,用于满足用户对文件的操作需求。
内置模块引入格式:
const 变量 = require(“模块名”) 不成文的规范:模块名是什么,变量名就是什么, 使用之前,必须先引入模块。
const fs = require("fs");
readFile读取文件
格式: readFile(path,option,callback)
path:必选 读取的文件的路径
option:可选, 字符集 utf-8
callBack 读取之后的回调函数。 回调函数中有两个参数:err和data (变量名可以自己定义)
err:错误信息
data:读取到的信息
如果读取成功,err的值为null,
如果读取失败,err的值为错误信息对象。data为undefined。
fs.readFile("./nodeTest/a.txt","utf8",(err,data)=>{
if (err) {
console.log(err);
return;
}
console.log(data);
})
writeFile写入文件
格式 writeFile(path,data,字符集,callBack)
path: 写入的文件的路径 如果写入的文件不存在,则会创建文件,前提是文件夹是存在的。
data: 要写入文件中的内容 会覆盖原来的所有内容。
字符集: utf-8
callBack 方法执行后的回调函数 回调函数只有一个参数 err 表示错误信息。
fs.writeFile("./node.Test/c.text", "111", "utf8", (err) => {
if (err) {
console.log(err);
return;
}
})
appendFile追加内容
在原文件的基础上追加内容,使用appendFile方法,该方法的参数与使用方法与writeFile一模一样。
fs.appendFile("./node.Test/c.text", "hello,world", (err) => {
if (err) {
console.log(err);
return;
}
})
案例
结合读写文件的方法,将一个文件的内容copy到另一个文件中。
步骤:
1.引入fs模块
2.读取a.js的内容
3.把读取到的内容写入到b.js中。
const fs = require("fs");
fs.readFile("./nodeTest/a.js","utf8",(err,data)=>{
if (err) {
console.log(err);
return;
}
fs.writeFile("./nodeTest/b.js",data,"utf8",(err)=>{
if (err) {
console.log(err);
return;
}
console.log("复制成功!");
})
})
unlink方法 删除文件
格式:
unlink(path,callBack)
path 要删除的文件的路径
callBack 执行之后的回调函数 err
const fs = require("fs");
fs.unlink("./nodeTest/b.js",(err)=>{
if (err) {
console.log(err);
return;
}
})
mkdir 创建文件夹
格式:
mkdir(“文件夹路径”,回调函数) 回调函数如果出现错误,可以用err来接收。
fs.mkdir("./nodeTest/c",(err)=>{
if (err) {
console.log(err);
return;
}
rename 重命名
rename(需要重命名的文件路径,新的文件名,回调函数)
fs.rename("./nodeTest/a.js", "./nodeTest/abc.js", (err) => {
if (err) {
console.log(err);
return;
}
})