Shu-How Zの小窝

Loading...

2024新 Node.js零基础到项目实战 Express+MySQL+Sequelize实作API

2024新 Node.js零基础到项目实战 Express+MySQL+Sequelize实作API

https://www.bilibili.com/video/BV1HE42157zV 1

https://clwy.cn/courses/fullstack-node

第1回 课程介绍

自我介绍
刘东
在教育部门、美企、国内互联网公司从事开发工作,历任研发工程师、CTO、COO等职务2013年创办长乐未央公司,任职CEO全栈程序开发经验总计 17年从事编程教学工作 11 年所教学生遍布各大互联网企业,如小米、华为、阿里巴巴、字节跳动、烽火、斗鱼等我个人从事编程开发工作

技术不怎么样 知道东西比较多的老手而已

Learning-by-doing
实实在在

Node.js 做接口的优势?
并发能力特别强
开发简单
无需学习新的语言

第2回 使用 nvm 安装 Node.js
第3回 编辑器与创建 Express 项目

npm i -g express-generator@4

clwy-api

https://gitee.com/w3cplus/clwy-api

npm i-g express-generator@4 cli
安装 express-generator
express--no-view 项目名
创建 Node.js 项目

直接 按express 也行 但是没有模板

第4回 项目结构与代码解析

第5回 使用 Docker 运行 MySQL

第6回 创建数据库与数据表
第7回 常用 SQL 语句之:增加、修改、删除篇
第8回 常用 SQL 语句之:查询篇
第9回 使用 Sequelize ORM

第10回 模型、迁移与种子

步骤命令说明
第一步
sequelize model:generate attributes.
建模型和迁移文件
--name Article第二步
人工处理
根据需求调整迁移文件
第三步
sequelize db:migrate运行迁移,生成数据表
第四步
sequelize seed:generate新建种子文件
--name article第五步
人工处理
将种子文件修改为自己想填充的数据第六步
sequeliza dbseed远行种子文件
第二步我们根据需求去调整迁移文件seed xxx

调用模型 要try 正确响应

没有查到 响应

第11回 接口 1:查询文章列表
第12回 接口 2:查询文章详情

第13回 使用Apifox调试Node.js

第14回 接口 3:创建文章

最好软删除

第15回 接口 4:删除文章
第16回 接口 5:更新文章
第17回 接口 6:模糊搜索

elike'%标题 10%' sql

orm op like

第 18 回 接口 7:数据分页

SELECT * FROM Articles LIMIT 10, 10;

offset

offset = (currentPage - 1) * pageSize

第19回 问题 1:白名单过滤表单数据

问题1:白名单过滤表单数据第19回
1.为什么要防范用户?
2.如何过滤用户提交的数据?

sql注入 xss crsf

参数白名单

第20回 问题 2:验证表单数据

表单验证 模型验证

富文本

第21回 终极版:增删改查(封装响应,优化代码)

终极版:增删改查(封装响应,优化代码)
第21回
1.何为 DRY 原则?不用重复自己 封装
2.如何自定义异常?
3,如何将重复的代码封装成函数?

Express-Validator表达式校验

第22回 暂停!中场大复习

npm i-g sequelize-cli
安装 sequelize 命令行工具

种子 模型 创建

第23回 实战数据库设计

实战数据库设计
第23回
1.企业里项目开发的流程?
2.如何根据需求设计数据库?
3.关联的数据表4.数据库的索引

1.编写需求文档
2.原型与 UI 设计
3,确定数据库的表、字段以及接口地址和数据
4,同时进行:前端mock开发、后端开发接口
5,接口开发完成后,将mock地址,换为接口地址
6.测试、上线部署

第24回 MySQL Workbench 的使用

natcat 也行

第25回 一口气建好所有表

数据库 逻辑 事务 回滚 批量

sq 生成....工具生成....

第26回 后台:分分钟搞定分类接口
第27回 后台:超简单的系统设置接口
第28回 后台:用户管理接口

有了之前的经验,大家也发现了开发规律,后台的接口,每次都是按照以下步骤来开发的
种子填充数据
修改模型(增加验证、增加关联)复制其他路由文件,进行查找替换
修改白名单和搜索
app.js 中添加路由
Apifox 测试

第29回 后台:使用 bcryptjs 加密数据

如何用 bcryptjs包,对数据进行加密?

第30回 后台:课程接口(关联模型)

后台:课程接口(关联模型)
第30 回
1.课程管理接口的开发
2.关联模型的使用3.如何防止出现孤儿记录?

orm 排除字段

方案一:可以在数据库里,设置外键约束

因为使用外键约束后,数据库会产生额外的性能开销

在高并发、数据量大的情况,可能造成性能瓶颈

方案二;常规做法就是在代码层面来处理了

二、删除分类的同时,删除所有关联课程

4三、只有没有关联课程的分类,才能被删除

一对多 notsql外键 代码用外键

第31回 后台:章节接口(关联模型)
第32回 后台:Echarts 数据统计接口

SELECT DATE_FORMAT(createdAt, '%Y-%m') AS month, COUNT(*) AS value FROM Users GROUP BY month ORDER BY month` ASC;
2024-04

分组查询

第33回 后台:jwt 实现管理员登录

第一步:用户发送邮箱、账号、密码。
第二步:基础验证。
第三步:接收login,而不接收email和username.
第四步:通过login查询数据库,判断用户存在。
第五步:验证密码是否正确。第六步:验证是不是管理员。
第七步:使用jwt的包,生成token

密钥 私要 保存....不公开

sql 缓存 日子等

第34回 后台:使用中间件,认证接口
第35回 前台 1:首页、分类、课程接口
第36回 前台 2:章节、文章、系统信息、搜索接口
第37回 前台 3:用户注册、登录、认证接口
第38回 前台 4:与用户相关的接口
第39回 前台 5:点赞接口(多对多关联)

第40回 CORS 处理跨域

CORS处理跨域
第40回
1.为什么会发生跨域错误?
2.跨域的最常见的三种解决方式
3.使用 CORS 处理跨域

第41回 大功告成,课程答疑

迁移的作用
-只需提供代码,无需提供数据库。
团队开发需要-部署需要
I

第42回 部署篇:上线前的准备工作

部署篇:上线前的准备工作第42回
1.如何修改项目的端口?
2,如何处理需要保密的环境变量?
3.添加项目的说明文件
4.提交到 Git 仓库

第43回 部署篇:服务器与域名

部署篇:服务器与域名第43回
1.服务器是什么?
2.去哪里购买服务器?
3.服务器需要什么配置才够用?
4,服务器的操作系统5.Linux的常见发行版
6.域名的选择与购买
7.备案流程

2.1.个人用
如果自己玩,只是想做个博客,发发自己的文章之类的,那服务器不需要太高的配置。这里有一个推荐的最低配置,供大家参考。
CPU:1 核
内存:2G带宽:2M 以上

2.2.企业项目用
企业项目一般会运行更复杂的应用,访问量也会更大一些,服务器也可以买更好一些的。这里也有一个推荐的最低配置。
CPU:2 核
内存:4G带宽:3M~5M 以上
阿里云现在也有一些活动,这些99、199 一年的服务器,其实都能非常好的满一活常规需求。

3.1.Windows 系统授权费用昂贵。
不稳定,访问量大容易卡死,重启后问题解决。远程需要使用远程桌面,网络不好时,非常卡。
学习成本低。

3.2.Linux 系统大部分都免费。
稳定,数年都不需要重启。
远程使用 ssh,网络资源耗费低。
学习成本高。

4.1.RPM 系
Red Hat Enterprise Linux:国内一般叫它红帽,需收费。
CentOS:Red Hat 的再编译版本,里面不包含闭源代码软件,免费。软件包比较老旧,官方现在已停止维护了。
4.2.DEB 系
Debian:它的发音虽然听起来有点奇怪,但这可是一个好东西,长乐未央站点就是部署在它上面的。特点是,稳定,耗资源少,安装软件方便。一些常见的Docker镜像,也都是基于它构建的。
Ubuntu:它是有官方中文名的,叫做乌班图,它是 Debian 的衍生版本,最常见的有以下这些
务器版本也非常稳定,软帮包很新,更新农快。

国外/香港 不用备案

6·域名
购买了服务器后,还需要购买域名。域名也分很多种,每种域名都是有不同意义的国际域名:.com(公司)、.net(网络)
国别域名:.cn(中国)省钱(每年 10 元左右):.top、.xyz

第44回 部署篇:使用 SSH 远程连接服务器

第45回 部署篇:使用宝塔面板,安装 Nginx、MySQL 和 Node.js

界面安装 命令行用....

github.com/clwy-cn/clwy-api/settings/keys

第46回 部署篇:上传项目代码 & 配置数据库
第47回 部署篇:使用 PM2 部署项目

部署篇:使用PM2部署项目第47回
1.怎样解析域名?
2.使用PM2运行Node.js项目
3.如何配置 SSL 证书?
4.Apifox 增加正式环境配置
5.部署后,如何更新项目?
6,当系统重启后,如何自动启动项目?
7,在一台服务器上,如何部署多个项目?

第48回 进阶:课程介绍

第49回 进阶:使用 http-errors 处理状态码

进阶篇:使用http-errors处理状态码第49回
1.各种各样的错误状态码,到底应该如何处理?

第50回 进阶:使用 Multer 上传图片到阿里云 OSS

进阶篇:使用Multer上传图片到阿里云oss第50回
1.文件应该上传到哪里?
2.阿里云 OSS 是什么?
3,服务端代理上传与客户端直传4,使用Multer上传图片到阿里云OSS

需要使用 multer 和 multer-aliyun-oss

第51回 进阶:附件管理接口
第52回 进阶:直传阿里云OSS

第53回 进阶:自动备份数据库到阿里云 OSS

宝塔 设置自动备份数据库 安装oss插件 上传

定时任务

GoBackup工具备份 用docker

第54回 进阶:一对多关联的 Bug
第55回 进阶:使用 Promise.all 并行查询
第56回 进阶:软删除和多选操作

sql 加字段 orm排除...

第 57 回 进阶:使用 Redis 缓存

Redis Insight 管理redis

缓存 sql 直接用 判断是否缓存了 有 就sql

第一次 才查

数据要转换...

第58回 进阶:Redis 缓存策略(上)

进阶篇:Redis 缓存策略(上)第58 回
1.在哪些地方应该使用缓存?
2.对于不同形式的数据,应该如何使用不同的缓存策略?

然后在新增、修改、删除的 不需要缓存

设置换成时间

第59回 进阶:Redis 缓存策略(下)

进阶篇:Redis缓存策略(下)
第59回
1,课程、章节和用户接口的缓存优化
2.如何一下清空所有的缓存?

第60回 进阶:图形验证码

进阶篇:图形验证码
第60回
1.为什么要使用验证码?
2.验证码的类型有哪些?
3,如何在Node项目中,加上验证码?

容易被 OCR 程序或者 AI 识别

都额外掺杂了扭曲、线条和噪点

svg captcha

第61回 进阶:发送邮件

进阶篇:发送邮件
第61回
1.发送邮件的使用场景2,如何在Node项目中发送邮件?

Nodemailer

第62回 进阶:RabbitMQ 消息队列(上)

生产者
队列
消费者

写会email 给mq 等对方邮箱

消息队列+++自动触发接收

第63回 进阶:RabbitMQ 消息队列(下)

进阶篇:RabbitMQ消息队列(下)
第63回
1.最简单的异步发送邮件方法
2.为何要使用RabbitMQ?
3,如何在Node项目中集成RabbitMQ?

解耦
增加并发
错误处理]

mq使用场景

文件处理、数据分析与报告生成 订单处理秒杀等地方

例如发送邮件、发送短信、应用类通知、

第64回 使用 Winston 记录日志

进阶篇:使用Winston记录日志第64回
1.为何要记录日志?
2.如何在Node项目集成日志
3.开发后台的日志管理接口

winston-mysql 各个版本 各个日志

第65回 进阶:收费的大会员

检测free 权限...

第66回 进阶:订单管理

自己查询自己的订单

posted @ 2024-12-12 11:04  KooTeam  阅读(157)  评论(0)    收藏  举报