node02

昨天的回顾作业:

根据自己的需求来完善发送验证码的需求,群发的功能

常用的内置模块

  • url
  • querystring
  • http
  • event
  • path
  • fs
  • stream

http模块

  • 跨域
  • 创建服务器
  • 爬虫 获取数据 获取图片 获取音频
爬虫
  1. 通过获取网页的源代码
    1) 用http接口的get方法进行获取源码:http.get();
    2)cheerio插件:实现将一堆字符串进行处理;快速分析页面中有哪些东西。
    npm install cheerio
const cheerit=require("cheerio)
const $=cheerio.load(rawData)//将数据格式进行处理,数据格式应该有正常的HTML格式
$("img").each(function(index,el){
	$(this).attr("src")
})
//通过jq的方式获取爬取的数据
//目前所学知识通过ajax动态生成的数据无法爬取
  1. 对源代码进行分析,获取数据,字符、图片的地址、音乐的地址

文件操作

  • 对文件夹的操作
新建文件夹

创建文件夹

const fs=require("fs");
fs.mkdir('./test',(err)=>{
	if(err){
		console.log(new Error("error"))
	}else{
		console.log("ok");
	}
})
//node的回调函数中有一个规范  错误优先,回调函数的第一个参数

let result=fs.mkdirSync("./test2");
console.log("a");
console.log(result);
//同步调用出错会终止执行,需要用try catch捕获错误

try{
let result=fs.mkdirSync();
}catch(e){
console.log(new Error("出错了"))
}
删除文件夹,表示是不是出错
fs.rmdir("./test3",(err)=>{
	console.log(err)
})
//删除文件  不存在的文件不能删除  不为空的文件不能删除
读取文件夹
fs.readdir("./test3",(err,files)=>{
	console.log(err,files);
});
判断文件夹
//检测一个文件或者文件夹的状态
fs.stat("./test",(err,states)=>{
//stats 表示该文件获取文件夹的状态   size  表示文件大小
	console.log(err,states,stas.isFile(),ststes.isDirectory());
})
  • 对文件本身的操作
新建文件(写入内容)

在这里插入图片描述

在这里插入图片描述

fs.writeFile("./file.txt","写入内容",(err)=>{
	console.log(err);
});
fs.appendFile("./file.txt","写入内容",(err)=>{
	console.log(err);
	if(err){throw err}
});

在文件操作中所有的路径都需要是绝对路径
创建文件,如果文件不错存在会自动新建,但是文件夹不存在,会报错误

console.log(new Error(“错误”));//打印错误对象
throw new Error(“错误”);//抛出错误的对象,终止执行

读取文件
fs.readFile("./file.txt",(err,data)=>{
	if(err){throw err}
	console.log(err,data.toString());
});

读取数据格式的修改方式:1.配置修改,第二个参数 2.toString 转化

删除文件
fs.unlink("./a.txt",(err)=>{
	if(err){throw err}
	console.log("删除ok");
});
//若删除一个不存在的文件,会报错
判断是否是一个文件

所有的异步都需要回调函数
所有的同步都不需要回调函数

作业

1.写一个模块,打印当前的目录树
分析:读取目录 目录有文件,有文件夹,区分文件或者文件夹,文件的话直接打印,文件夹继续读取目录

2.尝试用http下载图片,http的url换成图片,然后保存到文件中
分析:下载图片的原理:通过http请求图片数据,然后将图片保存到本地。设置数据格式为二进制,因图片的数据格式为二进制。
注意:网上连接的图片地址有时是时间戳,过一段时间就不能用了


案例: 在一个test文件夹下创建10个文件,文件的名字是01.txt 02.txt…每一个文件的内容都是数字 010203

判断文件是否存在

fs.stat("./test",(err,stats)=>{
	if(err){
		fs.mkdir("./test",(err)=>{
			if(err){throw Error("创建文件夹失败")}
			console.log("创建文件夹OK");
			for(var i=0;i<10;i++){
				fs.writeFile(`./test/${i}.txt`,i,(err)=>{
					if(err){throw Error("创建文件失败")}
					console.log("创建文件成功");
				})
			}
		})
	}else{
		throw new Error("test文件已存在”)
	}
});

回调地狱 promise asyc…

URL

统一资源定位符的构成

let result=url.format(obj);
console.log(result);

querystring

json 是一种数据格式 {“key”:“value”}
json字符串 是json格式的字符串
json对象 是json格式的对象

  • stringify parse 对象字符串相互转化,其余参数参考split(“@”)
  • unescape escape query中的汉字特殊字符,编码解码
let qs=require("querystring");
//将字符串转化为对象
let query="us=wangyi&ps=123"
//第二个参数是区分键值对的符号
//第三个参数是区分键值得符号
console.log(qs.parse(query,"&","="));
console.log(qs.parse(query,"?","="))
let qs=require("querystring");
let obj={
	us:"wangyi",
	ps:123
}
console.log(qs.stringify(obj,"@","="));

将query中的汉字或者特殊字符进行编码,将query中的汉字或者特殊字符进行解码

path 用处很大

  • __dirname 获取当前文件所在的目录的绝对路径
  • join(__dirname,"./test.js")智能拼接 唱歌用来获取绝对路径
  • basename 获取文件名
  • dirname 获取路径
  • extname 获取扩展名
  • isAbsolute 判断是否是绝对路径

path.join(__dirname,"./file.js");
path.join 作用:实现路径的拼接
path.join的参数没有限制,会自动拼接
主要作用:将参数进行智能拼接,主要用来获取绝对路径
见名知意
作业:1.目录树
2. 写一个注册登录(fs)用文件系统写一个,存入文件系统,然后登录时从文件中获取判断是否存在
3. 写一个方法,可以删除一个文件夹
4. 进阶版 邮箱注册;输入框,点击获取验证码,保存键值对,key:邮箱,value:

猜你喜欢

转载自blog.csdn.net/Fishmann/article/details/84562295