• node.js中的一些常用模块(url,querystring,events,fscheerio,http)


    1、url:

    const url = require("url");
    
    let path = "https://www.baidu.com/s?wd=node&rsv_spt=1&rsv_iqid=0xbaa44b6c0003b789&issp=1&f=3&rsv_bp=0&rsv_idx=2&ie=utf-8&tn=baiduhome_pg&rsv_enter=1&rsv_sug3=8&rsv_sug1=12&rsv_sug7=101&rsv_sug2=0&prefixsug=node&rsp=1&inputT=137915&rsv_sug4=142473";
    
    /*
        ①url.parse:
            参数1:url
            参数2:布尔值
            将一个url转换成一个对象
            如果参数2 是一个true的情况下会将query(字符串)解析成一个对象
    
        ②url.format:(参数是url.parse的返回值)
            将一个urlObject转换成一个字符串url
      例如:
        let urlObject = url.parse(path,true);
        let pathUrl = url.format(urlObject)
    
        ③url.resolve();(参数一是当前路径)
        生成一个相对路径或者绝对路径
        第二个参数如果加/则 跳转到绝对路径
        第二个参数不加/ 跳转相对路径
    */
    

    2、querystring

    const qs = require("querystring");
    const url = require("url");
    
    //let str = "%7B%22pageindex%22%3A1%2C%22isc2clist%22%3A2%2C%22hometabid%22%3A%226039dcc26ae7401191239559335de9ff%22%7D";
    
    //console.log(qs.unescape(str));
    
    /*
    
        ①qs.escape  转义
        ②qs.unescape   反转义
      例如:
        let key = "a=b=c=d";   
        let path = "http://www.baidu.com/s?a=1&b=2&"+qs.escape(key)+"=123&ds=111";
        console.log(url.parse(path,true))
    
        ③qs.parse()将字符串转为对象
            参数1:字符串
            参数2:分隔符
            参数3:赋值符
    
                默认的分隔符:&  
                赋值符号:=
    
           例如:
                let str = "name+张三$age+20$sex+男";
                console.log(qs.parse(str,"$","+"));
    
        ④qs.stringify()将对象转为字符串
            参数1:字符串
            参数2:分隔符
            参数3:赋值符
    
                默认的分隔符 &
                赋值符号  =
          例如:
        let obj = {
            name:"张三",
            age:22,
            sex:"男"
        }
        console.log(qs.stringify(obj,"@","#"))
    */

    3、events

    const EventEmitter = require("events");
    
    class MyEvent extends EventEmitter{};//ES6的继承
    
    let myEvent = new MyEvent();
    
    function fn1(val){
        console.log("111",val)
    }
    
    function fn2(val){
        console.log("222",val)
    }
    
    
    function fn3(val){
        console.log("333",val)
    }
    
    //事件的绑定
    myEvent.on("handle",fn1);
    myEvent.on("handle",fn2);
    myEvent.on("handle",fn3);
    
    //移除
    //myEvent.removeListener("handle",fn2)
    //myEvent.removeAllListeners("handle")
    
    //触发事件
    myEvent.emit("handle","这是给你传递到的参数");
    myEvent.emit("handle","这是给你传递到的参数");
    
    /*
    ①事件绑定
        on(eventName,cb)
        eventName:事件名称
        cb:回调
    
    ②事件触发
        emit(eventName,params)
        参数1:事件名称 触发的时候必须与on中的事件名称一致
        参数2:需要传递的参数
    
    ③事件移除
        一定要在事件触发之前移除*
    
        removeListener(eventName,cb)
        参数1:事件名称
        参数2:需要移除的事件
    
    
    ④setMaxListeners:设置最大可绑定的函数数量
        参数是(n)
    
    ⑤移除所有事件
    removeAllListeners(eventName)
    
    ⑥事件只触发一次
        once
    

    4、fs

    const fs = require("fs");
    
    /*
       ① fs.stat()  校验文件类型
            参数1:文件的路径
            参数2:回调
                参数1:err
                参数2:文件集合
                    isFile()  校验文件是不是一个文件
                    isDirectory  校验文件是不是一个文件夹
    
    
    
            fs.stat("./index.js",(err,stats)=>{
                    if(!err){
                        console.log(stats.isDirectory())
                    }
            })
    
        ②fs.readFile()
             返回值是一个buffer文件 如果需要转换成字符串只需要加一个空的字符串
    
            参数1:文件的路径
            参数2:回调
                参数1:err
                参数2:data  读取到的数据
    
            fs.readFile("./index.txt",(err,data)=>{
                console.log(data+'');
            })
    
    
    
        ③fs.writeFile()
            fs.writeFile("./index.txt","1234",(err)=>{})
            参数1:文件的路径
            参数2:文件的内容
            参数3:回调
                参数err
    
    
        ④appendFile()
            fs.appendFile("./index.txt","哈哈哈",(err)=>{})
            参数1:文件的路径
            参数2:追加的内容
            参数3:回调
                参数err
    
    
        ⑤fs.readdir();列出文件夹的目录
           fs.readdir("../fs",(err,data)=>{
                console.log(data)
            })
    
            参数1:文件的路径
            参数2:回调
                参数1 err
                参数2 文件的目录信息 是一个数组
    
        ⑥fs.rename(); 更改文件或者文件夹的名称
            fs.rename("./index.txt","list.txt",(err)=>{})
            参数1:文件的路径
            参数2:文件更改的名称
            参数3 回调
    
    */

    5、http.js

    const http = require("http");
    const cheerio = require("cheerio");
    let url = "http://www.mobiletrain.org/?pinzhuanbdtg=biaoti";
    const fs = require("fs");
    /*
        url:请求的地址
        cb:回调  res
        cheerio:可以让我们操作数据的时候根jquery一样进行操作
        cheerio不是JQ
    
    */
    
    http.get(url,(res)=>{
        let str = "";
    
        //请求到的数据是一块一块进行接收的   在接收的时候会触发一个data事件
        res.on("data",(data)=>{
            str+=data;
        })
    
    
        //当接收完毕的时候会触发end这个事件
        res.on("end",()=>{
            //将请求过来的数据进行封装到$
            let $ = cheerio.load(str);
    
    
            //类似与JQ的数据操作
            let lis = $(".banner_up_left").find("a");
            let obj = {}
            
    
            fs.readFile("./data.json",(err,data)=>{
                
                var data = JSON.parse(data+'');
                for(var i=0;i<lis.length;i++){
                    obj.title = lis.eq(i).find("span").text();
                    data.data.push(obj);
                    obj = {};
                }
    
               fs.writeFile("./data.json",JSON.stringify(data),(err)=>{})
            })
    
            
            // fs.readFile("./data.json",(err,data)=>{
            //     let d =JSON.parse(data+"").data;
            //     for(var i=0;i<lis.length;i++){
            //         obj.title = lis.eq(i).find("span").text();
            //         d.push(obj);
            //         obj = {};
            //      }
    
            //     let json = {
            //         "data":d
            //     }
    
            //     fs.writeFile("./data.json",JSON.stringify(json),(err)=>{})
            // })
           // console.log(d)
        })
    })

    6、server.js(服务器,一个文件夹也算一个服务器)

    const http = require("http");
    const fs = require("fs");
    http.createServer((req,res)=>{
       if(req.url !="/favicon.ico"){
    
          if(req.url == "/"){
            fs.readFile("./index.html",(err,data)=>{
                if(!err){
                    res.writeHead(200,{"Content-type":"text/html;charset=utf8"})
                    res.end(data);
                }
            })
    
    
          }else if(req.url == "/list"){
    
            fs.readFile("./list.html",(err,data)=>{
                if(!err){
                    res.writeHead(200,{"Content-type":"text/html;charset=utf8"})
                    res.end(data);
                }
            })
          }else if(req.url == "/goods"){
              fs.readFile("../http/data.json",(err,data)=>{
                if(!err){
                    res.writeHead(200,{"Content-type":"application/json;charset=utf8"})
                    res.end(data);
                }
             })
          } 
       }
       
    }).listen(9000)
    
    
  • 相关阅读:
    linux 系统tar文件压缩打包命令
    linux如何查看所有的用户和组信息?
    go语言之行--golang操作redis、mysql大全
    Redis集群的5种使用方式,各自优缺点分析
    docker-compose搭建redis哨兵集群
    windows版 navicat_15.0.18 安装
    redis aof数据持久化
    redis rdb数据持久化
    03.redis 事务
    02 redis 三种特殊的数据类型
  • 原文地址:https://www.cnblogs.com/cqdd/p/10481116.html
Copyright © 2020-2023  润新知