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、加密、解密、签名、以及验证功能的一整套封装。
-
引入crypto模块
const crypto = require("crypto")
-
创建加密方式(以sha256为例)
const hash = crypto.createHash("sha256");
-
加密需要加密的数据
hash.update(password);
-
获取到要加密的数据
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 }
网友评论