url模块
-------------------------------------
req.url 表示用户的请求地址 所有的路由设计都是通过req.url来完成的 .我们关心的是如何处理这个url,而不是拿到这个url
# 如何把url里面的信息转换为一个对象,通过对象可以方便以后操作? 正则表达式
url 模块 处理请求路径
url.parse(参数一,参数二,参数三) 将一个url的字符串解析并返回一个url的对象
# 参数一 url(字符串)
# 参数二 布尔值 默认为false ,为true时,返回的对象中,query的属性为一个对象 可省略
# 参数三 布尔值 解析主机处理 一般情况下使用不到
返回的对象说明:
protocol: 请求协议
host: URL主机名已全部转换成小写, 包括端口信息
auth:URL中身份验证信息部分
hostname:主机的主机名部分, 已转换成小写
port: 主机的端口号部分
pathname: URL的路径部分,位于主机名之后请求查询之前
search: URL 的“查询字符串”部分,包括开头的问号。
path: pathname 和 search 连在一起。
query: 查询字符串中的参数部分(问号后面部分字符串),或者使用 querystring.parse() 解析后返回的对象。
hash: URL 的 “#” 后面部分(包括 # 符号)
url.format(参数为对象)
# format函数的作用与parse相反,将一个,返回一个url路径地址(字符串)
在返回的结果看不到如http,https等协议,返回的结果为 ://
url.resolve(from,to) 函数的参数是两个路径,第一个路径是开始的路径或者说当前路径,第二个则是想要去往的路径,返回值是一个组装好的url
# 注意只能重定向路径名,不能重定向域名
# 没有多大用,一般用字符串拼接就可以完成
-----------------------------------------
querystring 模块
# querystring 模块提供序列化与反序列化,转义与反转义两组功能
1. querystring.stringify()
将一个对象序列化为一个查询的字符串,使用&和=分别为字符串中的分割符合赋值符
# 如果转换的对象中有中文会对中文进行unicode编码
# stringify 中的第2个参数是用来修改 & 分隔符为其他符号
# stringify 中的第三个参数修改默认的 & 分隔符为其他符号
2. querystring.parse()
将一个查询的字符串反序列化为对象,与querystring.stringlfy()的作用相反
# 第2个参数是用来指明分隔符是用了哪个字符,根据分隔符来进行反序列化
# 第三个参数是用来指明赋值分隔符是哪个字符
3.querystring.escape()
将字符编码
4.querystring.unescape()
将字符解码
04.js 案例讲解如何拿到路径部分想要的数据
-------------------------
05.js 模拟form表单发送请求给nodejs服务器,nodejs处理接受到的数据
06.js
做一个学生和老师的管理系统
当用户访问 /student/0123456789 10位数 这个路径地址时候查询此学生的学生信息
当用户访问 /teacher/123456 6位数 时候查询老师的相关信息
请他路径情况,提示信息输入错误,如果是位数不对,提示位数不对
07.js 把一个项目完整的读取出来
一般一个项目里面包含有html css javascript 图片三种类型的文件
对应的mime类型分别为
html text/html
css text/css
javascript text/javascript
image image/jpg image/png
http://www.w3school.com.cn/media/media_mimeref.asp 文件mime类型
--------------------------------------
fs模块详解
1. 异步 讲解
让学生访问电脑,看异步函数的结果
-------------------------------
目录的操作(增删改查)
2.创建目录
fs.mkdir(path,[mode],callback(err));
3. 删除目录(注意只能删除空目录)
fs.rmdir(path,callback(err));
4. 读取目录
fs.readdir(path,callback(err,files));
# files 返回的是数组,内容为文件名或者文件夹名
5. 修改目录或者文件名
fs.rename(path1,path2,callback(err))
------------------------------
文件的操作(增删改查)
6. 文件读取
fs.readFile(file [,options],callback);
# file 文件名
# options
encoding 默认为空,一般设置为utf8
flag 标识符 默认为r r代表以读取模式打开文件
7. 写入文件
fs.writeFile(file,data [,options],callback)
# 如果文件不存在会先创建文件
# 默认采用utf-8 编码
8. 追加文件
fs.appendFile(file,data [,options],callback)
9. 删除文件
fs.unlink(file,callback);
10. 监听文件发生改变
fs.watchFile(filename,callback(newStatus,oldStatus));
# 一旦文件发生变动就会自动触发回调函数
可以采用这个监听文件的原理来完成自动重新运行服务器
安装插件supervisor 原理就是监听文件发生了变化,一旦文件发生了变化就会重新启动node程序
# 异步操作是非常难以控制的 可以采用promise对象进行解决
10. 查看文件或者文件夹的状态 可以获取文件大小,创建时间等信息
fs.stat(file,callback(err,status))
----------------------------------------
path 模块详解
path.normalize(路径名) 格式化路径
path.join(路径一,路径二,路径三....) 路径的拼接
path.resolve(路径一,路径二,路径三,....) 绝对路径
# eg : path.resolve("aa/bb","cc/dd","../aa");
# 相当于在cmd光标目录下执行以下操作
cd aa/bb
cd cc/dd
cd ../aa
pwd
path.dirname(文件路径); 获取文件或者文件夹所在的目录
path.basename(路径名) 获取文件的文件名 第二个参数可以忽略掉文件后缀名
path.extname(文件名) 获取文件的后缀名
path.parse(路径) 解析路径为对象