1. 内置模块:node中自己携带的模块,可以放心直接使用。 2. 第三方模块:先下载模块在使用的模块。 3. 自定义模块:开发者按自己的需求自己定义的模块。
文件夹的操作之创建文件夹fs.mkdirSync("./xixi")
异步→ fs.mkdir(path[options], callback)
1. 同步→fs.mkdirSync("./xixi")
2. 文件的操作 非阻塞异步的创建文件夹方法如下👇 fs.mkdir(path[options], callback) const fs=require(“fs”) const fs=require(“fs”)
// 如下创建文件夹 // 参数1 path填写一个路径表示你想在哪个地址下创建文件夹 // 参数2[option]表示可选参数,可以写可以不写 // 参数3callback表示回调函数的意思创建完成后就会执行这个回调函数 // fs.mkdir(path[options], callback) // 如下写法 console.log("node.js当中本来文件创建是一个阻塞的i/o模型,是什么原因可以让其变成非阻塞呢?"); fs.mkdir("./fs",function(err){ console.log("创建加创建完毕!") console.log(err) }) console.log("我们通过写回调函数就会让其变成非阻塞的i/o模型!");看如下打印输出的结果(验证执行多个创建文件夹的代码时会报错)
同步的创建文件夹方法:如下👇: fs.mkdirSync("./xixi")文件操作之删除文件夹 同步fs.rmdir() 异步fs.rmdirSync()
fs.rmdir("./haha",function(e){ if(e){ console.log("删除失败!") console.log("报错信息为→",e) } else{ console.log("删除成功!") } }) fs.rmdirSync("./fs1")文件操作之修改文件夹 同步→fs.rename(参数1,参数2,回调) 参数1为你要修改的文件夹的地址以及名字 参数2是你要改成什么名字并且把他放到哪一个地址上
fs.rename("./fs","./fsgm",function(e){ if(e){console.log(e)} else{ console.log("修改成功!") } })异步如下 fs.renameSync() 文件夹操作之读取文件夹 异步非阻塞:fs.readFile(参数1,回调) 参数1 为你要读取的那个文件的地址 参数2位回调函数,回调函数的第一个参数是报错信息,第二个参数是读取结果 CMD快捷键,在CMD当中如果想执行上一个已经执行过的命令那么直接按↑这个键,按F7可以弹出历史操作记录。
fs.readFile("./fsgm/d.html",function(err,infos){ if(err){ console.log("报错信息err是→",err) }else{ console.log(infos) } })文件夹操作之写入文件 fs.writeFile() fs.writeFile(file, data[, options], callback) option可选参数可以填写’utf8’ . “binary”
参数file表示你需要在哪个文件下写入东西,填写的是文件的具体地址需要自己写上文件格式。(如果没有这个文件就会自动帮你创建一个文件) 参数data表示你要在file参数内部覆盖式的改写的 信息。【注意是覆盖式的改写】 Callback回调函数, 一般只用到回调函数的第一个参数err,表示报错信息。
const fs=require("fs") fs.writeFile("./file.js","var t='张亿'",function(err){ if(err){ console.log("错误信息为→",err) }else{ console.log("文件写入成功!") } })fs.appendFile()的作用是修改内容。他和fs.writeFile()参数都是类似的 fs.appendFile()和fs.writeFile()唯一的区别是fs.writeFile()是覆盖式的改写,而fs.appendFile()是在后面添加一个内容(append)
删除一个文件(注意不是一个文件夹是文件和上面的删除文件夹fs.rmdir()不一样) fs.unlink(file,callback)
fs.unlink("./file.text",function(e){ if(e){ console.log("报错信息如👉",e) }else{ console.log("删除文件成功!") } }) 文件操作之读取文件 注意读取文件夹是fs.rename()而读取文件是fs.readFile() fs.readFile()参数1是文件地址,参数2 是一个【option】可选的配置参数(一般填utf8配置读取的字符编码),参数三是回调,回调的err参数为报错信息,data则为你读取到文件内部的信息。 fs.readFile("./file.text",function(err,data){ if(err){ console.log("报错信息如右→",err) }else{ // buffer 为二进制数据流是我们不认识的东西,如果要转化成我们认识的需要使用toString()方法进行转化一下。 console.log(data) } }) 如果不用toString()方法转换就是如下输出 转化后 fs.readFile("./file.text",function(err,data){ if(err){ console.log("报错信息如右→",err) }else{ // buffer 为二进制数据流我们需要用toString()转换 console.log(data.toString()) } })当然如果你不想用toString方法转换那我们也可以有另一种解决方案 就是在readFile方法的参数当中加一个option配置参数在配置参数里写utf8 fs.stat(“参数1位你要读取的文件或文件夹地址”,“参数2为一个回调函数,回调函数颞部的参数1为错误信息err,参数2 是读取的结果”)加粗样式
如下dirent.isFile()判断是否是一个文件和dirent.isDirectory()判断是否是一个文件夹 方法需要在fs.stat方法的内部使用
dirent.isFile()判断是否是一个文件
dirent.isDirectory()判断是否是一个文件夹
fs.stat("./file.text",function(err,data){ if(err){ console.log("报错信息如右→",err) }else{ // buffer 为二进制数据流我们需要用toString()转换 console.log(data.toString()) // 用isDirectory()判断是否是一个文件夹返回值是一个布尔值 console.log(data.isDirectory()) // 用isFile()判断是否是一个文件夹 console.log(data.isFile()); } })__dirname
var path=require("path") // 引入了path模块之后那么__dirname就表示当前文件所在文件夹的绝对路径 console.log("当前文件的文件夹的绝对路径如右→",__dirname) var t=path.join(__dirname,"./路径.js")path.join() path.join()
// path.join()可以有多个参数,这个方法的作用就是吧所有的参数拼接成一个路径 var t1=path.join(__dirname,"mjn","./路径.js") console.log("t1",t1)nodemailer模块 nodemailer模块的官方地址https://nodemailer.com/about/
// 通过第三方模块发送邮箱 nodemailer // 通过地址:node_modules/nodemailer/lib/well-know/services.json // 找到services.json文件,然后找到QQ复制其配置信息到创建发送邮件的对象中**
// 引入nodemailer模块 const nodemailer = require("nodemailer"); // 创建发送邮件的对象 let transporter = nodemailer.createTransport({ host: "smtp.qq.com", port:465, secure: true, // true for 465, false for other ports auth: { user: "2796522557@qq.com", // 发送方邮箱账号 pass: "xtqbwhnmbinwdhdj", // 邮箱的授权码 // 授权码的获取,登录自己的QQ邮箱,点击设置,点击常规右边的那个账户,找到POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务 // 然后开启服务器→POP3/SMTP服务 (如何使用 Foxmail 等软件收发邮件?),点击开启,已关闭 | 开启,然后自己验证后就可以获取到 // 授权码了 }, }); // 邮件的内容 var content={ from: '2796522557@qq.com', // sender address→发送人地址,这个指的是邮件的发送方账号信息 // to: "2796522557@qq.com,411620704@qq.com",// list of receivers→接收者名单,邮件的接收方信息,如果要发送给多个账号用逗号隔开即可 to:"2796522557@qq.com,823571683@qq.com", subject: "Hello ✔", // Subject line(你要发送的内容的标题) // text和html只能二选一不能同时发所以我们选择如下发送html // text: "Hello world?", // plain text body(你想发送的纯文本内容) html: `<b>欢迎光临逆战1911</b>`, // html body(带有标签的html内容,会生成网页) } // 调用sendMail()发送邮件 // sendMail()第一个参数为发送的内容,第二个参数为回调函数。 setInterval(function(){ transporter.sendMail(content,function(err){ if(err){ console.log(err); }else{ console.log("邮件发送成功!") } }); },10000)配合http模块或者https模块获取网络资源(网页,记事本,图片,音频,视频) http.get(url,(res)=>{ res.on(“data”,(chunk)=>{}) res.on(“end”,(chunk)=>{}) })
var https=require("https") var fs=require("fs") var url="https://img04.sogoucdn.com/net/a/04/link?url=http%3A%2F%2Fimg03.sogoucdn.com%2Fapp%2Fa%2F100520024%2F968013acbc34fa232b16607a4b519eab&appid=122" https.get(url,(res)=>{ // 如果你想下载文本就要设置成res.setEncoding('utf8'); res.setEncoding("binary") // 如上 res.setEncoding("binary") // 是吧把请求的格式转成图片的格式,不然下载的图片失效 var t="" res.on("data",(chunk)=>{ t+=chunk }) res.on("end",(chunk)=>{ fs.writeFile("./图片/tp.jpg",t,"binary",function(err){ if(err){ console.log("图片下载失败!",err); }else{ console.log("图片下载成功!"); } }) }) }).on("err",function(err){ if(err){ console.log("图片下载失败!"); } } )请求的方式以及作用 // 请求方式有,但是他们分别的规范作用如下【规范并不是规定可以遵守也可以不遵守】规范的名称叫做restful api规范 restful api规范的作用 是让程序员根据不同的请求类型规范接口的需求编写
我们常见的是post请求和get请求,其实很早之前就定义了规范,为什么put/patch【改】和delete删不常用呢?因为早期的浏览器对着它们的接口支持度不好.所以大家都用post和get请求了
post请求/接口 // post请求/接口 →增 delete请求/接口 // delete请求/接口 →删 put请求/接口 // put请求/接口 →改【修改一部分】 patch请求/接口 // patch请求/接口 →改【覆盖式的改,全部改。】 get请求/接口 // get请求/接口 →查