美文网首页
NodeJS 常用模块介绍

NodeJS 常用模块介绍

作者: 鹤仔z | 来源:发表于2020-01-06 22:14 被阅读0次

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
      

持续更新...

相关文章

  • vue.js单文件组件入门笔记

    nodeJs nodeJs安装 nodeJs模块 npm介绍 cnpm npm常用指令介绍 npm in...

  • NodeJs常用模块介绍

    HTML/XML 解析 cheerio代码地址:https://github.com/cheeriojs/chee...

  • NodeJS 常用模块介绍

    http 模块 作用Nodejs提供了http模块,用来构建服务器 引入方法const http = requir...

  • nodejs常用模块介绍

    常用URL内置方法 url.parse();url.format()url.resolve() querystri...

  • node模块化2

    1. 课程介绍 Ø NodeJS介绍(了解) Ø NodeJS准备工作(掌握) Ø NodeJS模块(掌握) Ø ...

  • node.js 模块化 day1(2019.5.27)

    1.课程介绍 NodeJS介绍(了解) NodeJS准备工作(掌握) NodeJS模块(掌握) NPM(掌握) 2...

  • NodeJs 的 path 模块

    前言:NodeJs 的 path 模块的作用就是用来处理文件路径的。简单介绍下几个常用的 API。 一、path....

  • nodeJS常用模块

    模块一:assert 模块二:path 模块三:fs 模块四:http 模块五:url和queryString

  • node模块化

    一、 Node.js模块 1. 课程介绍 ◆ NodeJS介绍(了解) ◆ NodeJS准备工作(掌握) ◆ No...

  • NodeJs模块加载流程分析(require)

    一、 开篇干货介绍 1. NodeJs中的模块 NodeJS采用CommonJS规范实现了模块系统,这种规范的核心...

网友评论

      本文标题:NodeJS 常用模块介绍

      本文链接:https://www.haomeiwen.com/subject/xejlactx.html