http 模块
  1. 作用

    Nodejs提供了http模块,用来构建服务器

  2. 引入方法

    const http = require("http");

  3. 功能API

    • http.Server 类

      用于创建HTTP服务器,使用时需要先实例化;

    • http.ClientRequest 类

      该对象在 http.request() 内部被创建并返回。它表示着一个正在处理的请求;

    • http.IncomingMessage 类

      IncomingMessage对象由 http.Server 或 http.ClientRequest 创建,并作为第一个参数分别传递给 ‘request’ 和 ‘response’ 事件。 它可以用来访问响应状态、消息头、以及数据。它实现了可读流接口;

    • http.ServerResponse 类

      ServerResponse对象由http.Server创建,并作为第二个参数传递给 ‘request’ 事件。它实现了可写流接口;

    • http.createServer( [callback] )方法

      返回一个http.Server对象,callback会被自动添加到 ‘request’ 事件中;

    • http.request( options[, callback] )方法

      作为http客户端,向服务器发送请求,可选参数callback会被自动添加到 'response’事件中;

    • http.get( options[, callback] )方法

      http.request()方法的简化版,主要区别是http.get()自动将请求方法设为了"GET",同时不需要手动调用req.end();

  4. 创建服务器

    1. 获取http.Server对象:

      var server = new http.Server();

    2. 创建服务器,并监听3000端口:

      server.on("request",callback).listen(3000)

    简化版:

    利用createServer()方法。

    http.createServer(callback).listen(3000)

  5. callback

    在创建服务器中,输入的回调函数很有讲究,callback的参数:req、res

    • req:请求对象

      callback = function(req,res{
                           
      	// http协议版本,值可能为1.1或1.0
      	console.log(req.httpVersion);
      
      	// 请求的方法。"GET"或者"POST"
      	console.log(req.method);
      
      	// http响应状态码
      	console.log(req.statusCode);
      
      	// http响应状态消息
      	console.log(req.statusMessage);
      
      	// 请求头或响应头的对象
      	console.log(req.headers);
      
      	// 发送http请求的客户端的url
      	console.log(req.url);
      })
      
    • res:响应对象

      1. res.writeHead()

        res.writeHead(statusCode[, statusMessage][, headers])

        向请求的客户端发送响应头

        • 向请求的客户端发送响应头,该函数在一个请求中最多调用一次,如果不调用,则会自动生成一个响应头。
        • statusCode是一个三位数的http状态码,如“200”表示请求成功、“404”表示请求的资源不存在。
        • statusMessage是一个字符串,用来描述状态。
        • headers是一个对象,即响应头。
      2. res.write()

        res.write(chunk[, encoding][, callback])

        • 向请求的客户端发送响应体。

        • 在end()方法被调用前可以多次调用。

        • chunk是一个buffer或者字符串,如果chunk是字符串,则在第二个参数需要指定编码方式,默认为utf-8。

      3. res.end()

        res.end([chunk][, encoding][, callback])

        • 该方法会通知服务器,所有响应头和响应主体都已被发送。

        • 每次响应都必须调用end()方法来结束。

    ServerResponse对象包含的事件、方法以及属性参考手册:

    http://nodejs.cn/api/http.html#http_class_http_serverresponse

    http.Server类的事件参考手册:

    http://nodejs.cn/api/http.html#http_class_http_server

path 模块
  1. 作用

    路径的拼接

  2. 引入方法

    const path = require("path");

  3. 功能API

    join => 路径拼接

    resolve => 将参数转换为绝对路径

  4. 使用

    console.log(path.join(__dirname,"index.js"));
    console.log(path.resolve(__dirname,"index.js"))
    
events 模块
  1. 作用

    events对象作为一个事件侦听抛发机制

  2. 引入方法

    events是一个类,不能直接实例化,所以要先创建一个新类来继承它,然后再实例化使用

    const EventEmitter = require("events");
    class MyEventEmitter extends EventEmitter{};
    const myEventEmitter = new MyEventEmitter();
    
  3. 功能API

    on => 事件侦听

    once => 侦听只执行一次的函数

    emit => 事件抛发

    removeListener => 移除一个事件

    removeAllListeners => 移除所有事件

  4. 使用

    function fn1(val) {
        console.log(111, val)
    }
    
    function fn2(val) {
        console.log(222, val)
    }
    
    function fn3(val) {
        console.log(333, val)
    }
    
    myEventEmitter.on("Event0",fn1)
    myEventEmitter.on("Event0",fn2)
    myEventEmitter.on("Event0",fn3)
    myEventEmitter.removeListener("Event0",fn2);
    // myEventEmitter.removeAllListeners("Event0");
    
    myEventEmitter.emit("Event0","hello")
    
fs 模块
  1. 介绍

    fs对象用来操作本地文件

    语法与Linux相似

  2. 引入方法

    const fs = require("fs");

  3. 功能API与使用方法

    • fs.mkdir => 创建文件夹

      fs.mkdir(path.resolve(__dirname,"./demo"),(err)=>{});
      
    • fs.rmdir => 删除文件夹

      fs.rmdir(path.resolve(__dirname,"./demo"),(err)=>{});
      
    • fs.stat => 判断文件类型

      fs.stat("./index.js",(err,data)=>{
          console.log(data.isDirectory());
          console.log(data.isFile());
      })
      
    • fs.writeFile => 创建文件并写入文件

      fs.writeFile(path.resolve(__dirname,"./demo/index.txt"),"abc",(err)=>{})
      
    • fs.unlink => 删除文件

      fs.unlink(path.resolve(__dirname,"./demo/list.txt"),()=>{})
      
    • fs.readFile => 读取文件

      fs.readFile(path.resolve(__dirname,"./demo/index.txt"),(err,data)=>{
          console.log(data+"");
      })
      
    • fs.rename => 重命名文件或文件夹

      fs.rename(path.resolve(__dirname,"./demo/index.txt"),path.resolve(__dirname,"./demo/list.txt"),(err)=>{})
      
    • fs.readdir => 列出文件夹中的所有文件

      fs.readdir(path.resolve(__dirname,"../../新建文件夹"),(err,list)=>{
          console.log(list)
      })
      
querystring 模块
  1. 介绍

    querystring 可以将类似 a=1&b=2&c=3 格式的字符串转换为可以操作的对象

  2. 引入方法

    const qs = require("querystring");

  3. 功能API与使用方法

    • qs.parse => 将字符串转换为对象

      var str = "name=alley&age=20";
      var obj =  qs.parse(str);
      console.log(obj); // {name:alley,age:20}
      

      parse()中的参数:

      ​ 参数1:字符串

      ​ 参数2:分隔符

      ​ 参数3:赋值符

      非常规符号的字符串的转化需要用到第二个和第三个参数:

      var str = "name*alley#age*20";
      var obj =  qs.parse(str,"#","*");
      console.log(qs.stringify(obj,"@","!"))
      
    • qs.stringify 将对象转换为字符串

      var obj =  {name:alley,age:20};
      console.log(qs.stringify(obj) //"name=alley&age=20"
      

      stringify() 中的参数:

      ​ 参数1:对象

      ​ 参数2:分隔符

      ​ 参数3:赋值符

      非规则符号的处理与parse()方法相同

    • qs.escape() 转义 (与encodeURIComponent的转义结果一模一样)

      var str = "name=alley&age=20"
      var key = qs.escape(str);
      console.log(key) // name%3Dalley%26age%3D20
      
    • qs.unescape() 反转义 (同decodeURIComponent)

      var str = 'name%3Dalley%26sex%3D20'
      var key = qs.unescape(str);
      console.log(key) // name=alley&sex=20
      
url 模块
  1. 介绍

    url处理url 完美

  2. 引入方法

    const url = require("url");

  3. 功能API与使用方法

    • url.parse() => 将一个url转换为一个url对象

      const path = "https://www.baidu.com/s?wd=%20node%20request%20post%E8%AF%B7%E6%B1%82&rsv_spt=1&rsv_iqid=0xb9778e3c000b4a9e&issp=1&f=8&rsv_bp=1&rsv_idx=2&ie=utf-8&rqlang=cn&tn=baiduhome_pg&rsv_enter=1&rsv_dl=tb&oq=request%2520post%25E8%25AF%25B7%25E6%25B1%2582&inputT=1575&rsv_t=3da2Tn%2F7uIuHWTsROFo6yvwMvultNv5wmOTlrQiVQ6KLFbNtnrLXkdd9HWuhNlyq7zNM&rsv_pq=feaadbf200091d61&rsv_sug3=35&rsv_sug2=0&rsv_sug4=2259";
      const urlObject = url.parse(path,true);
      console.log(urlObject); // 得到了一个包含各种属性的Url对象
      
    • url.format() => 将一个urlObject转换成一个url字符串(反向url.parse)

      console.log(url.format(urlObject)); // 讲上文转换的对象变成了url字符串
      
    • url.resolve() => 转换绝对路径和相对路径

      console.log(url.resolve("/a/b/c","d")); // /a/b/d
      console.log(url.resolve("/a/b/c","/d")); // /d
      

持续更新…

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐