一、文件夹操作
1.读取文件夹信息
readdir(文件夹路径,(error,data)=>{ }) 读取文件夹中的信息 返回一个数组 数组中的元素是是文件夹中的文件夹或者文件
const fs=require('fs');
fs.readdir('./aa',(error,data)=>{
if(error) console.log('读取失败');
else console.log(data);
})
//同步方法
console.log(fs.readdirSync('./aa'));
2.读取文件或文件夹信息
stat(文件夹路径,(error,data)=>{ }) 读取文件夹中的信息 返回一个对象 对象中的元素是是文件夹中的文件夹或者文件
返回对象有isFile()方法,判断该文件夹是否为文件,结果为Boolean console.log(data.isFile());
const fs=require('fs');
fs.stat('./aa',(error,data)=>{
if(error) console.log('读取失败');
else console.log(data);
})
3.删除文件
unlink(路径,(error)=>{ })
const fs = require('fs');
/*
使用方法unlink 直接删除文件
内置两个参数 第一个参数是文件路径 第二个参数是回调函数
回调内置一个参数 参数是错误
*/
fs.unlink('./aa/1.jpg',(err)=>{
if (err) console.log('删除失败');
else console.log('删除成功');
})
fs.unlinkSync('./aa/3bb/1.js');
4.创建文件夹
mkdir(文件路径,{递归创建},(error)=>{ })
const fs=require('fs');
fs.mkdir('./aa/bb/4.html',{recursive:true},error=>{
if (error) console.log('创建失败');
else console.log('创建成功');
})
5.删除文件夹
rmdir(路径,{递归删除},error=>{ }) 内置两个或者三个参数
删除的是单体文件夹,可以不传递这个参数;删除非空文件夹 那么必须加上这个参数 递归删除
const fs=require('fs');
fs.rmdir('./aa/bb',{recursive:true},error=>{
if (error) console.log('删除失败');
else console.log('删除成功');
})
6.移动或者重命名
rename(旧路径名字,新路径名字,error=>{ }) 也有同步方法
const fs=require('fs');
fs.rename('./aa/2.png','./aa/3bb/3.css',error=>{
if (error) console.log('移动重命名失败');
else console.log('移动重命名成功');
})
二、path模块
path模块也是核心模块 我们很多的时候都会使用到 尤其是使用fs模块的时候 都和fs模块进行连用
basename : 返回文件的最后一部分
delimiter : 返回语句的定界符
pathname : 获取URL请求的路径
extname : 返回文件的后缀名
isAbsolute : 判断路径是否为绝对路径
join : 连接路径
resolve : 连接路径
在这里插入代码片
三、URL模块
URL : 统一资源定位器
parse : 将URL转化成对象格式
URL的组成
协议 : http:// https://
域名 : www.xx.xx
端口 : 80 443
路径 : / /index.html /jiaoxue/pxsz/index.html
参数 : ?n=m&a=b
锚点 : #
let str1 = "http://www.ujiuye.com:80/jiaoxue/pxsz/index.html?name=Eric&age=18";
let str2 = "https://www.baidu.com:443/index.html?kw=Web";
console.log(url.parse(str1));
protocol: 'http:',
host: 'www.ujiuye.com:80',
port: '80',
hostname: 'www.ujiuye.com',
search: '?name=Eric&age=18',
query: 'name=Eric&age=18',
pathname: '/jiaoxue/pxsz/index.html',
path: '/jiaoxue/pxsz/index.html?name=Eric&age=18'
四、网络基础
1.域名
域名(英语:Domain Name),是由一串用点分隔的名字组成的Internet上某一台计算机或计算机组的名称,用于在数据传输时对计算机的定位标识 由于IP地址具有不方便记忆并且不能显示地址组织的名称和性质等缺点,人们设计出了域名,并通过网域名称系统来将域名和IP地址相互映射使人更方便地访问互联网,而不用去记住能够被机器直接读取的IP地址数串
2.IP地址
IP是Internet Protocol(网际互连协议)的缩写,是TCP/IP体系中的网络层协议,设计IP的目的是提高网络的可扩展性,解决互联网问题,实现大规模、异构网络的互联互通,分割顶层网络应用和底层网络技术之间的耦合关系,以利于两者的独立发展,根据端到端的设计原则,IP只为主机提供一种无连接、不可靠的、尽力而为的数据报传输服务
A类:(1.0.0.0-126.0.0.0)
第一个字节为网络号,后三个字节为主机号
该类IP地址的最前面为“0”,所以地址的网络号取值于1~126之间。一般用于大型网络
B类:(128.0.0.0-191.255.0.0)
前两个字节为网络号,后两个字节为主机号
该类IP地址的最前面为“10”,所以地址的网络号取值于128~191之间。一般用于中等规模网络
C类:(192.0.0.0-223.255.255.0)
前三个字节为网络号,最后一个字节为主机号
类IP地址的最前面为“110”,所以地址的网络号取值于192~223之间。一般用于小型网络
D类:是多播地址。该类IP地址的最前面为“1110”,所以地址的网络号取值于224~239之间。一般用于多路广播用户
E类:是保留地址。该类IP地址的最前面为“1111”,所以地址的网络号取值于240~255之间
3.端口
"端口"是英文port的意译,可以认为是设备与外界通讯交流的出口
端口可分为虚拟端口和物理端口,其中虚拟端口指计算机内部或交换机路由器内的端口,不可见
例如计算机中的80端口、21端口、23端口等。物理端口又称为接口,是可见端口
计算机背板的RJ45网口,交换机路由器集线器等RJ45端口。电话使用RJ11插口也属于物理端口的范畴
4.http协议
- 概念
http : 超文本传输协议;http是一个简单的请求-响应协议,它通常运行在TCP之上
它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应
请求和响应消息的头以ASCII码形式给出;而消息内容则具有一个类似MIME的格式。
这个简单模型是早期Web成功的有功之臣,因为它使得开发和部署是那么的直截了当 - 请求
是指从客户端到服务器端的请求消息;包括:消息首行中,对资源的请求方法、资源的标识符及相关协议 - 响应
HTTP状态码(HTTP Status Code)是用以表示网页服务器超文本传输协议响应状态的3位数字代码
它由 RFC 2616 规范定义的,并得到 RFC 2518、RFC 2817、RFC 2295、RFC 2774 与 RFC 4918 等规范扩展,所有状态码的第一个数字代表了响应的五种状态之一,所示的消息短语是典型的,但是可以提供任何可读取的替代方案 - 响应码分类
1xx:指示信息—表示请求已接收,继续处理
2xx:成功—表示请求已经被成功接收、理解、接受
3xx:重定向—要完成请求必须进行更进一步的操作
4xx:客户端错误—请求有语法错误或请求无法实现
5xx:服务器端错误—服务器未能实现合法的请求 - 常见响应码
200: 客户端请求, 和服务器成功做出响应
301: 重定向, 资源被重定向到一个永久性的地址上, 资源的原始url可能无法访问
302: 重定向, 资源被重定向到一个临时性的地址上, 资源的原始url还在
400: 语义错误, 无法被服务器理解, 请求参数有误
401: 请求需要用户验证, 包含了 Authorization 证书, 但是被服务器拒绝了
403: 服务器已经理解请求, 但是拒绝执行它
404: 请求url不存在 (一般常见于请求路径拼写错误)
500: 服务器遇到了一个未曾预料的请求, 一般出现在后台代码报错
502: 网关或者代理服务器请求时, 从服务器接收到了一个无效响应
503: 服务器过载, 当前无法完成响应, 拒绝客户端连接
504: 网关或者代理服务器请求时, 等待响应超时了
四、MIME
MIME的全称是Multipurpose Internet Mail Extensions,即多用途互联网邮件扩展类型;这是HTTP协议中用来定义文档性质及格式的标准;服务器通过MIME告知响应内容类型,而浏览器则通过MIME类型来确定如何处理文档
常见类型:
application/octet-stream?未知的应用程序文件
application/json?json数据
text/plain 未知的文本文件(纯文本文件),浏览器会认为这是可以直接显示的
ext/css?css文件
text/html?HTML文件
image/gif?gif文件
五、HTTP模块
1.http服务器
拥有web网页服务功能的计算机, 可以叫做web服务器, 也可以叫http服务器
借助Node.js的核心模块(安装Node就带了), http模块, 来创建web网页服务
有web网页服务功能, 可以提供浏览器要访问的资源 http模块主要用于创建http server服务器
createServer方法,创建出一个Web服务器 使用服务器中的listen方法进行监听
- 请求
使用createServer中的request参数处理请求 请求最重要的是request中的url属性,这个属性可以使用url模块进行处理
const http = require('http');
// 创建服务器
http.createServer((request,response)=>{
// 本节课说明请求参数
// 请求的参数 我们只学习一个 request.url 请求的路由
// 请求的路由就是URL中的路径 url是一个属性 获取我们请求的路由
console.log(request.url);
}).listen(3000,'127.0.0.1',()=>{
console.log('服务器正在运行......');
})
- 响应
使用createServer中的response参数处理响应
响应参数
响应头信息 : response.writeHead
响应内容 : response.write
响应结束 : response.end
const http = require('http');
/*
创建Web服务器使用http模块中的createServer方法进行创建
内置一个参数 参数是回调函数
回调内置两个参数
第一个参数是请求
第二个参数是响应
返回的结果是 server服务器
*/
let server = http.createServer((request,response)=>{
// 测试响应数据 响应hello Eric
// response.end('hello Eric');
// 如果说响应的是英文 那么没问题 如果说响应的是汉语 那么我们必须统一字符集
// 必须使用MIME
// 使用MIME 需要使用response中的writeHead方法 内置两个参数
// 第一个参数是http响应码 第二个参数是对象 MIME
response.writeHead(200,{"Content-type" : "text/html;charset=utf-8"});
// 其实 我们使用响应的函数不是end 而是write函数
// 使用response对象中的write方法进行响应数据内容
response.write('<h2>今天的天气真不错</h2>');
response.write('<h2>上课可惜了</h2>');
response.write('<h2>应该出去玩</h2>');
// 使用write方法响应之后 是无法完成响应的 因为不确定是否响应完成
// 这回需要使用end方法进行结束 他就是结束响应的信号枪
// response.end();
// 一个程序中只能有一个end方法 应为程序一旦执行到end 就已经结束了
// end方法可以携带一个参数 参数也能响应到页面中 但是这个参数必须是字符串
response.end('<h2>你好 埃里克</h2>');
// response.end(123); // 报错
});
/*
服务器创建好之后 我们需要进行监听
绑定访问IP地址 端口号
IP地址需要注意 必须和你的电脑本机相匹配
使用listen方法进行监听
内置三个参数 第一个参数是端口号 注意选择端口号 只有这个参数是必选参数
第二个参数是IP地址 本机地址127.0.0.1 || localhost || 10.10.140.61
第三个参数是回调函数 没有任何意义的回调函数
*/
server.listen(3000,'127.0.0.1',()=>{
console.log('服务器正在运行......');
});
2.展现静态页面
读取页面,展现静态页面,展现请求中的所有静态页面
3.get和post
- get请求
使用url模块中的parse方法解析http请求,获取结果中的query属性,解析出get传递的参数
使用querystring模块,模块中的parse方法解析get参数
2.post请求
使用事件监听,request.on(data)事件进行读取数据,读取回调函数的参数,request.on(end)事件进行结束,读取Buffer.concat(数据)