Javascript

NodeJs(day03)

本文主要是介绍NodeJs(day03),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

复习 + 练习

  • 练习:
    获取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
这篇关于NodeJs(day03)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!