美文网首页
Node.js_常用的模块(四)

Node.js_常用的模块(四)

作者: learninginto | 来源:发表于2020-02-26 00:31 被阅读0次

Node.js_常用的模块(四)

主要介绍几个模块:url / querystring / path / process / crypto

一、url字符串

  • url.parse()

    将一个url转换成一个urlObject

    const url = require("url");
    
    const path = "https://www.baidu.com/s?wd=%20node;
    const urlObject = url.parse(path,true);
    
    console.log(url.resolve("/a/b/c","d"));//  /a/b/d
    console.log(url.resolve("/a/b/c","/d"));//    /d  
    
  • url.format()

    将一个urlOjbect转换成一个url字符串

  • url.resolve()

    转换绝对路径和相对路径

二、querystring查询字符串

  • parse()

    参数1:字符串

    参数2:分隔符

    参数3:赋值符

    const qs = require("querystring");
    
    var str = "name*lxc#age*18";
    var obj = qs.parse(str,"#","*"); 
    console.log(qs.stringify(obj,"@","!"))
    
  • stringify()

    将对象转换为字符串。

    参数1:对象

    参数2:分隔符

    参数3:赋值符

  • escape()转义

  • unescape()反转义

三、path路径

  • path.join()

    路径拼接

    console.log(path.join("/1","2","3")); //  1\2\3
    console.log(path.join(__dirname,"./index.js"));   //  E:\demo\index.js
    
  • path.resovle()

    将参数转换为绝对路径

    console.log(path.resolve("/a","/b")); //  E:\b
    console.log(path.resolve("/a","b"));  //  E:\a\b
    console.log(path.resolve(__dirname,"./index.js"));    //  E:\demo\index.js
    

四、process

  • process.env

    列出所有的环境变量

  • process.argv

    启动 Node.js 进程时传入的命令行参数

    var arr = process.argv;
    
    if (arr.indexOf("-v") !== -1) {
        console.log("1.11.1");
    } else {
        console.log("help....")
    }
    

五、crypto加密

crypto模块提供了加密功能,包括对 OpenSSL 的哈希、HMAC、加密、解密、签名、以及验证功能的一整套封装。

  1. 引入crypto模块

    const crypto = require("crypto")
    
  2. 创建加密方式(以sha256为例)

    const hash = crypto.createHash("sha256");
    
  3. 加密需要加密的数据

    hash.update(password);
    
  4. 获取到要加密的数据

    console.log(hash.digest('hex'));
    

    因为只用一次,通常直接放到插入语句中,以用户注册为例:

    
    const userModel = require("../model/user");
    const crypto = require('crypto');
    
    const register = async (req, res) => {
        const { username, password } = req.body;
    
        let data = await userModel.userFindOne({ username });
        if (!data) {
            //1、加密 创建加密方式
            const hash = crypto.createHash('sha256');
            //2、加密 需要加密的数据
            hash.update(password);
            //3、获取到加密的数据
            //console.log(hash.digest('hex'))
            let data = await userModel.userSave({ username, password: hash.digest('hex') });
            // console.log(data)
            res.json({
                code: 200,
                errMsg: "",
                data: {
                    info: "注册成功",
                    code: 1
                }
            })
    
        } else {
            res.json({
                code: 200,
                errMsg: "",
                data: {
                    info: "用户名重复",
                    code: 0
                }
            })
        }
    }
    
    module.exports = {
        register
    }
    

相关文章

网友评论

      本文标题:Node.js_常用的模块(四)

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