我自己nodejs练手时常用的一些库基础用法

devtools/2024/11/15 0:51:57/

我自己在使用nodejs以及前端实战练习时常用的一些库的基本使用

1.bcrypt

//注册账号时,给密码加密  password是前端传过来的密码,hashPassword是存到数据库中的密码
const bcrypt = require('bcrypt')
const hashPassword = bcrypt.hash(password,10)
//登录时,通过对比来确认
bcrypt.compare(password,hashPassword)

2.express

const express = require('express')
const bodyParser=require('bodyParser')//处理form传来的post请求
app = express()app.use(express.json())
app.use(express.urlencoded({ extended: true }))//get请求参数处理
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({ extended: true }))app.all('*', function (req, res, next) {//跨域访问配置,简单版本res.header('Access-Control-Allow-Origin', '*');res.header('Access-Control-Allow-Headers', 'Content-Type');res.header('Access-Control-Allow-Methods', '*');next();
});
app.get("/user",(request,response)=>{...
})
app.listen(1855,(err)=>{...
})//补充:Router 后端的路由
const {Router} = require('express')
const router = Router()
router.get('/signup',(request,response)=>{})
//需要在app中use
app.use('/user',router)

3.pg postgresql官方nodejs库

const pg = require('pg')
const client = new pg.client(dbConfig)
client.connect((err)=>{})
client.query(sqlText,values,(err,result)=>{})const {Pool} = require('pg')
//连接池,在查询的时候会自动帮我们创建连接,可以在配置中修改配置连接池管理的连接数量
const pool = new Pool(dbConfig)
pool.query(sqlText,values,(err,result)=>{})

4.config 配置文件读取,需要在require('config')的那个文件的目录下创建一个config文件夹

配置文件在./config/default.json

const config = require('config')
const dbConfig = config.get('dbConfig')

5.pm2 用于托管后端服务器

pm2 start app.js
pm2 stop app
pm2 delet app

6.jwt鉴权

//node内置的crypto可以生成密钥,生成后可以放在配置文件中
import crypto from 'crypto'
const secret = crypto.randomBytes(64).toString('hex');
/
import jwt from 'jsonwebtoken';
import config from 'config';
//获取配置文件中的密钥
const secret = config.get('currentSecret');
//生成token
jwt.sign({id: user.id,email: user.email,...}, secret, { expiresIn: '1h' });
//验证token
const token = req.headers['authorization'];
jwt.verify(token, secret, (err, decoded) => {...})

http://www.ppmy.cn/devtools/134042.html

相关文章

349. 两个数组的交集

目录 题目解法 题目 给定两个数组 nums1 和 nums2 &#xff0c;返回 它们的 交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。 解法 class Solution { public:vector<int> intersection(vector<int>& nums1, vector<int>…

高级java每日一道面试题-2024年11月01日-Redis篇-Redis支持的数据类型有哪些?

如果有遗漏,评论区告诉我进行补充 面试官: Redis支持的数据类型有哪些? 我回答: 在 Java 高级面试中&#xff0c;Redis 的数据类型是一个常见的考点。Redis 是一个高性能的键值存储系统&#xff0c;支持多种数据类型&#xff0c;每种数据类型都有其特定的用途和操作方法。以…

渗透利器-kali工具 (第三章-5) sqlmap之sql注入一、二

一&#xff1a;常见的注入方式 1.sqlmap用于Access数据库注入 2.sqlmap用于Cookie注入  --cookie 3.sqlmap用于Post注入  --froms 、--data、抓包 4.sqlmap用于mysql注入 绕过waf脚本测试&#xff1a;--tamper "space2morehash.py" 常见sqlmap使用方法&#xff1…

计算机网络基础(3)_应用层自定义协议与序列化

个人主页&#xff1a;C忠实粉丝 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 C忠实粉丝 原创 计算机网络基础(3)_应用层自定义协议与序列化 收录于专栏【计算机网络】 本专栏旨在分享学习计算机网络的一点学习笔记&#xff0c;欢迎大家在评论区交流讨论&a…

LeetCode297.二叉树的序列化和反序列化

题目要求 序列化是将一个数据结构或者对象转换为连续的比特位的操作&#xff0c;进而可以将转换后的数据存储在一个文件或者内存中&#xff0c;同时也可以通过网络传输到另一个计算机环境&#xff0c;采取相反方式重构得到原数据。 请设计一个算法来实现二叉树的序列化与反序…

第8章 利用CSS制作导航菜单.

8.1 水平顶部导航栏 我们在浏览网页的时候可以看见许多位于顶部的导航栏&#xff0c;供我们点击跳转。 8.1.1 简单水平导航栏的设计与实现 8.1.1.1导航栏的创建 我们此时可以发现它的样子和我们平时使用的导航栏不一样&#xff0c;因为这只是第一步&#xff0c;我们接下来再…

机器学习——简单线性回归、逻辑回归

简单线性回归 线性回归用于预测一个连续的数值输出&#xff08;因变量&#xff09;&#xff0c;其模型假设输入特征&#xff08;自变量&#xff09;和输出之间存在线性关系。基本的线性回归模型如下&#xff1a; 损失函数 线性回归通常通过最小二乘法来估计回归系数。最小二乘法…

专题十八_动态规划_斐波那契数列模型_路径问题_算法专题详细总结

目录 动态规划 动态规范五步走&#xff1a; 1. 第 N 个泰波那契数&#xff08;easy&#xff09; 解析&#xff1a; 1.状态表达式&#xff1a; 2.状态转移方程&#xff1a; 3.初始化&#xff1a; 4.填表顺序&#xff1a; 5.返回值 编写代码&#xff1a; 总结&#xff…