第 5 课:流

1. 阅读参考资料

2. 操作标准输入/输出流

要求:

  • 创建 09-stream 目录
  • 编写 01-std-io.js 脚本
  • 通过 data 事件消费标准输入流中的数据
  • 将标准输入流的字符转成大写,然后输出到标准输出流中
  • 在标准输入流中 push 一些字符串
  • 通过 pipe 方法将标准输入流接到标准输出流上,消费标准输入流中的数据
  • for 循环在标准输出流上输出 a-z 26 个字母
  • 用交互式的方式运行程序
  • 用流的方式运行程序(命令如下),观察程序运行的结果
  • cat 01-std-io.js | ./01-std-io.js
  • 思考两种程序运行方式的差异以及背后的原理

3. Web 静态文件服务

要求:

  • 编写 02-static-web-server.js 脚本
  • web 服务器根路径是当面脚本所在目录
  • web 服务监听 8080 端口
  • 正确响应浏览器发送的 URL 请求
  • 将 URL 地址中的文件内容,发送给浏览器
  • 当 URL 地址中的资源文件不存在时,提示用户文件不存在的错误信息

4. 基于流的 Web 静态文件服务

要求:

  • 编写 03-static-web-server-stream.js 脚本
  • 用流的方式实现任务 3 的所有功能
  • 编写 03-make-big-file.js 脚本
  • 运行 03-make-big-file.js 脚本生成 427M 的 big.file
  • 运行 02-static-web-server.js 脚本,用 curl 请求 big.file,观察服务器内存消耗
  • 运行 03-static-web-server-stream.js 脚本,用 curl 请求 big.file,观察服务器内存消耗
  • 理解流的优势

5. 可读推送流

要求:

  • 编写 04-readable-push.js 脚本
  • 实例化 Readable 流
  • 向流中 push 若干个字符串
  • 将 Readable 流管道连接到标准输出流
  • 运行程序,观察程序的运行效果

6. 可读拉取流

要求:

  • 编写 05-readable-pull.js 脚本
  • 实例化 Readable 流
  • 实现流的 _read 方法
  • _read 方法中循环 push [a-z] 26 个字母
  • 将流接入到标准输出流
  • 运行程序,观察程序的运行效果

7. 自定义可读流

要求:

  • 编写 06-my-readable.js 脚本
  • 定义 MyReadable 类继承 Readable 类
  • MyReadable 类的功能跟任务 6 类似
  • 实例化 MyReadable 类
  • 将 MyReadable 类的实例化对象接入到标准输出流上
  • 运行程序,观察程序的运行效果

8. 自定义可写流

要求:

  • 编写 07-green-stream.js 脚本
  • 定义 GreenStream 类继承 Writable 类
  • GreenStream 类将收到的数据输出到标准输出流中
  • 使用 chalk,将输出的文本信息格式化成亮绿色
  • 实例化 GreenStream 类,将标准输入流连接到自己定义的可写流对象上
  • 运行程序,观察程序的运行效果

9. 用转换流实现字母大写转换

要求:

  • 编写 08-transform.js 脚本
  • 实例化 Transform 流对象
  • Transform 流对象中实现字符串的大写转换
  • 将标准输入流管道接到转换流对象上再接到标准输出流上
  • 用两种方式运行程序,观察程序的运行效果

10. 自定义转换流实现文字变色

要求:

  • 编写 09-my-transform.js 脚本
  • 定义自己的转换流类继承 Transform 类
  • 自己的转换流类实现控制台文字加颜色,参考:任务 8
  • 实例化自己的转换流对象
  • 将标准输入流管道接到自己的转换流对象再接入到标准输出流上
  • 用两种方式运行程序,观察程序的运行效果

11. 自定义可读流(补充)

要求:

  • 编写 10-rgb.js 脚本
  • 定义 RGB 类继承 Readable 类
  • 可读流发出三个符号:R、G、B,代表三个颜色的灯
  • R red 的概率是 60%
  • G green 的概率是 15%
  • B blue 的概率是 25%
  • 实例化 RGB 类
  • 将 RGB 类的实例化对象接入到标准输出流上
  • RGB 实例化时传入参数 num,表示这个流总共会发出多少个符号
  • 运行程序,观察程序的运行效果

2018 -  by 王顶. All rights reserved.本站访客人数  人次

results matching ""

    No results matching ""