nodejsDay2

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(路径) 解析路径为对象

时间: 2024-12-15 01:37:04

nodejsDay2的相关文章