ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

NodeJs(day03)

2021-08-07 15:00:12  阅读:186  来源: 互联网

标签:文件 fs 请求 NodeJs day03 callBack path data


复习 + 练习

  • 练习:
    获取URL中查询字符串的数据
    https://www.tmooc.cn:80/course.html?cid=17&cname=web

  • 模块

    以路径开头不以路径开头
    文件模块reqiure("./circle.js")require(“url”)
    自定义模块核心模块
    目录模块require("./02_2")require(“mysql”)
    会找目录下 package.json到当前目录下
    找min 属性对用的文件,找不node_modules中
    到引入 index.js寻找 mysql目录;

    npm install mysql

    querystring 查询字符串
    https://www.jd.com/search?kw=电脑

    将查询字符串转为对象 parse
    把对象格式化为查询字符串 stringify

    url
    parse/format

  • 全局函数
    setTimeout/clearTimeout
    setInterval/clearInterval
    setImmediate/clearImmediate
    process.nextTick

fs 模块

  • 同步(Sync)异步
    同步: 等待前面的代码执行完,之后才能执行后面的代码; 会阻止后面代码的执行, 通过返回值获取结果.

    异步: 不会阻止后面的代码执行, 后面的操作可以现执行, 不必等待前面的操作结束, 通过回调函数来获取结果.

  1. 读取文件状态
    fs.stat(path, callBack) / statSync(path)
- callBack
  err: 错误信息
  stats: 文件状态信息
  1. 创建目录
    fs.mkdir(path, callBack) / mkdirSync(path)
- callBack
  err: 错误信息
  1. 移除目录
    fs.rmdir(path, callBack) / rmdirSync(path)
- callBack
  err: 错误信息

//使用异步移除 目录 mydir
//使用同步移除 目录 mydir2
  1. 读取目录
    fs.readdir(path, callBack) / readdirSync(path)
- callBack
  · err 错误信息
  · fileList 读取的结果,格式为数组
  1. 创建文件 / 写入文件
    fs.writeFile(path, data, callBack) / writeFile(path, data)

    • data 要写入的数据
    • callBack:
      err: 错误信息
      如果文件不存在, 会创建文件并写入数据
      如果文件已经存在, 则会清空文件再次写入
  2. 追加写入文件
    fs.appendFile(path, data, callBack) /
    appendFileSync(path, data)

如果文件不存在会创建文件写入数据;
文件已经存在在文件的末尾写入数据;

- 练习: 创建一个数据每个元素是一个课程名称, 遍历数据,
  获取元素, 将数据使用 同步方法 写入文件 data.md
  1. 读取文件
    fs.readFile(path, callBack) / readFileSync(path)

    • callBack
      err
      data 读取的数据, 格式为 buffer
  2. 删除文件
    fs.unlink(path, callBack) /unlinkSync(path)

  3. 判断文件是否存在
    fs.existsSync(path)

- 练习: 判断 data.txt 文件是否存在,如果存在,则删除
  1. 文件流
- let readStream = fs.createReadStream(文件路径) 创建一个可读流

- readStream.on("data", function(chunk) { })
当有数据流入, 自动触发事件;
通过回调函数来获取,chunk 就是获取的数据流

- readStream.on("end", function() { })
当读取结束, 自动触发事件

- pipe 管道, 可以将数据从可读流中导向可写流

http 协议

  • 浏览器和 web 服务器之间的通信协议
  1. 通用头信息
    Request URL: 请求的URL, 对用的是浏览器地址栏; 向服务器获取哪些内容
    Request Method: 请求方法, 获取内容的方式 GET/POST
    Status Code: 响应的状态码
    1**: 正在响应, 还没有结束
    2**: 成功响应
    3**: 响应的重定向, 会跳转到另一个 URL
    4**: 客户端请求错误
    5**: 服务器端错误
Remote Address: 请求的 IP 地址及端口号
  1. 响应的头信息
    Connection: 连接方式, keep-alive 持久连接
    Content-Encoding: 内容压缩形式, gzip
    Content-Type: 响应的文件类型
    Location: 跳转的URL, 常配合状态码为 3** 时使用

  2. 请求头信息
    Accept: 浏览器接受的文件类型有哪些
    Accept-Encoding: 接受的压缩形式有哪些
    User-Agent: 客户端使用的浏览器的详细信息

  3. 请求主体
    可有可无, 浏览器向服务器发送请求的数据

Http 模块

模拟浏览器向 Web 服务器发请求, 还可以创建 Web 服务器

  1. 模拟浏览器
    http.get(url, callBack) 发送请求

    • url: 请求的URL
    • callBack: 回调函数, 获取服务器端的响应
      response: 服的对象务端响应
      response.statusCode 获取响应的状态码
      response.on(“data”, function(chunk) {})
      事件: 监听服务器端是否有数据传输过来
      chunk: 传输的数据, 格式为 Buffer
  2. 创建 web 服务器

  let app = http.createServer(); //创建 web 服务器
  app.listen(8080); //设置监听的端口
  //监听浏览器的请求
  app.on("request", function(req, res) {
    //req: 请求的对象
      req.url //请求的 url, 获取端口号后边的部分
      req.method //请求的方法
      req.headers //请求的头信息
    //res: 响应的对象
      res.write() //响应的内容
      res.writeHead( 状态码, 头部信息对象 )
      res.end() //结束并发送响应到浏览器
  });
``

## 课后任务
1. 整理思维导图
2. 练习
  2.1 创建 web 服务器, 监听端口 8080, 接收浏览器的请求, 根据请求做出不同的响应
    /login    响应内容    this is login page
    /reg      响应内容    this is reg page
    /study    跳转       http://www.163.com

  http://127.0.0.1:8080

标签:文件,fs,请求,NodeJs,day03,callBack,path,data
来源: https://blog.csdn.net/weixin_51341201/article/details/119486546

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有