商品模块    /product

列表、                 删除、                        修改

/product/list        /product/delete           /product/add

用户模块    /user

列表、                 删除、                        修改

/user/list       /user/delete           /user/add

3、路由器

用来管理路由,通常将一个功能模块下的路由放到一个路由器下    例如:所有用户模块下的路由放入到用户路由器

创建路由器并导出

const   express  =   require(‘express’);//引入express

const    r  =  express.Router();//创建路由器对象

//添加路由

module.exports = r;     //导出路由器对象

在WEB服务器下引入并挂载

app.use(‘/user’,userRouter)

4、中间件

用于拦截对路由的请求,也可以作出响应,允许往后继续执行(下一个中间件或者路由);本质是一个函数,一旦拦截到会自动调用这个函数。

分为应用级中间件、路由级中间件、内置中间件、第三方中间件、错误处理中间件

(1)应用级中间件,也称为自定义中间件

app.use(要拦截的URL,回调函数)

例如:app.use('/list', fn)

function fn(req,res,next){

next() //往后继续执行,可能是下一个中间件,或者是路由

}

练习,创建添加到购物车的路由(get   /shopping)传递商品的价格price,添加中间件拦截该路由,对价格打8折,最后在路由器中响应‘商品的最终价格:xxx’ ?price = xxx

(2)路由级中间件

路由器的使用

app.use(要拦截的URL, 路由器)

(3)内置中间件

托管静态资源(html,css,js,图像...)

如果浏览器端要请求静态资源,不需要通过路由响应文件,而是自动去寻找文件。

app.use( express.static('要托管的目录') );

练习:再次托管静态资源到files目录,如果public和files目录出现相同的文件名称,哪一个起作用

练习:编写文件05_three.js,创建WEB服务器,设置端口8080;托管静态资源到public目录,新建文件login.html,点击提交向服务器发请求(post  /login),创建路由,获取传递的数据,响应‘登录成功’

(4)第三方中间件

第三方中间件属于第三方模块,需要先去下载安装

npm  install  body-parser

//1.引入body-parser中间件

const bodyParser = require('body-parser');

//2.使用body-parser中间件,将post请求的数据解析为对象

app.use( bodyParser.urlencoded({

extended: false   //是否使用第三方的查询字符串模块qs,如果不使用就会使用核心模块下的querystring

}) );

//3.路由中获取post传递的数据

req.body

5、mysql模块

属于第三方模块,Node.js下操作mysql数据库的模块

下载安装

npm  install  mysql

连接

mysql  -uroot

mysql.exe  -h127.0.0.1  -P3306  -uroot  -p

mysql  -uroot<拖拽脚本    回车

insert  into  emp  values(...);

delete  from  emp  where  eid=1;

update  emp  set  sex=1,...  where  eid=2;

select  *  from emp where ...

课后任务

(1)复习今天内容,整理思维导图

(2)

整理express的用法(WEB服务器创建、路由、数据传递的方法、中间件)

回顾之前mysql数据的使用

SQL命令,增删改查

5.26

1、mysql模块

(1)创建普通连接

createConnection()

(2)执行sql语句

query(sql命令,回调函数)

属于异步操作,通过回调函数获取结果          err:可能产生的错误         result:    成功的结果

(3)创建连接池

creatPool()

(4)占位符(?)

SQL注入:在让用户提供的值中出现了对数据库有攻击的命令

解决方法:对所有用户提供的值进行过滤

所有SQL命令中需要拼接的用户的值,先进行过滤,然后再去替换占位符

query(‘delete from  emp   where eid = ? ’,[18],(err,result)=>{

})

2、正则表达式

正则表达式完整视频
https://pan.baidu.com/s/1IgYS8oGBrRgZQropPUTnoA 提取码:nbx3
正则相关函数的用法总结
https://pan.baidu.com/s/1Rvqr-5UI7NxoxArdgxyRhg 提取码:08yj

3、RESTful接口(API)

接口:后端为前端提供的动态资源(数据,后端验证、...)

RESTful是一种接口设计风格()

动态资源就是一个URL形式

(1)URL

所有的资源都需要版本号,复数形式   例如:请求员工资源    http://127.0.0.1:8080/v1/emps                         多个资源

版本号  资源名称

版本2   的   用户资源

http://127.0.0.1:8080/v2/users    多个资源

http://127.0.0.1:8080/v2/users /3    单个资源,通过编号获取

编号

http://127.0.0.1:8080/v2/users /checkuname       检测用户名

对资源的特殊操作

app.get(‘/v2/users’,()=>{})    用法

(2)请求方法

对资源的操作方式

get      获取资源

delete     删除资源

post      新建资源

put        修改资源

练习:添加路由,删除某一个用户资源

app.delete(‘/v2/users:uid’,()=>{     })

(3)过滤数据

查询的结果有太多的记录,需要过滤想要的数据

例如:分页

http://127.0.0.1:8080/v2/users?pno= 1&count=10

页码          每页的数据量

例如:获取商品的价格区间

http://127.0.0.1:8080/v2/users?price1 = 10000&price2 = 20000

(4)返回结果

包含状态码、消息、数据(不一定都有)

登录的接口

{

“code”  :200;

“msg”   :     ' 登录成功’;

}

获取员工的数据

{

“code”:  200

“msg” :    '获取成功‘’;

“data” :  [....]

}

练习:创建WEB服务器 ,设置端口

添加路由(get  /v1/emps),响应 {“code:200,"msg":‘获取成功’}

课后任务:

完成删除员工的接口

请求方法 delete    /v1/emps/编号

响应结果   {code:200,msg:‘删除员工’}

5.27

练习:在app.js下创建WEB服务器并设置端口

练习:创建路由器目录router,目录下包含有用户路由器user.js,创建路由其对象,添加用户注册的路由(post  /reg),响应{code: 200, msg: '注册成功'}

练习:在WEB服务器app.js中引入用户路由器(./router/user.js),并挂载,添加前缀/v1/users

/reg

/v1/users/reg

练习:在连接池pool.js中,引入mysql模块,创建连接池对象,导出这个对象;

在user.js中引入连接池模块( ../pool.js ),打印查看是否得到导出的对象,执行SQL命令

练习:在user.js中编写用户登录的路由(post  /login),获取post请求的数据,验证各项是否为空,执行SQL命令,如果查询到了用户名和密码同时匹配的数据就是登录成功,否则登录失败。

练习:编写按照编号查找员工(get  /编号),获取传递的编号,执行SQL命令,查询编号对应的用户,如果没有查询到{code: 201,msg: '该用户不存在'},否则查询到{code: 200, msg: '查询成功', data: [ .. ] }

练习:编写按照编号删除员工(delete  /编号),获取传递的编号,执行SQL命令,删除编号对应的用户,如果删除失败{code: 201, msg: '删除失败'},否则删除成功{code: 200, msg: '删除成功'}

http://127.0.0.1:8080/v1/users/3

git下载地址

https://pc.qq.com/detail/13/detail_22693.html

码云注册账号

https://gitee.com/

GitHub注册账号

https://github.com

5.28

分页查询

已知条件:当前页码   每页的数据量

开始的查询值 = (当前的页码-1)*每页的数量

select * from xz_user  limit     开始查询的值 ,每页的数据量

1、VCS系统

版本控制系统  用于项目中存储、共享、合并、历史回退,代码追踪文件历史等功能

常用VCS软件

CVS   2000年以前

SVN   2010年以前

Git   2010年至今

2、GIt中的常用概念’

工作目录:是一个目录,用于保存项目中的文件

暂存区:

(1)Git软件第一次使用的时候 告诉git你是谁

git  config   --global   user.name  "自定义用户名”

git  config   --global   user.email  "用户邮箱”

(2)初始化仓库

git init

(3)查看当前git系统的状态

git status

(4)将当前工作目录中的指定文件添加到暂存区

git add 文件名称

git  add.      将当前工作目录中所有的新文件或者修改了的文件添加到工作区

(5)将暂存区中所有文件提交到git仓库

git   commit   -m   "提交内容说明"

(6)查看git仓库中的提交记录

git  log          只能看到当前版本及之前的提交记录

git  reflog      查看所有版本的提交记录、回退记录

练习:创建2.html,随便写内容,添加到暂存区,提交到git仓库

练习:修改1.html和2.html的内容,添加到暂存区,提交到git仓库

(7)忽略文件

有些文件或者目录不需要提交到git仓库,可以忽略

使用任意的编辑器新建文件.gitignore   把要忽略的文件名称写入这个文件中

(8)历史回退

git  reset    --hard   提交的id

练习:创建目录tedu ,在这个目录下打开git窗口,初始化git仓库来管理项目

练习:创建index.html,随便写内容,提交到git仓库

练习:创建目录img,添加两张图像,提交到仓库

练习:创建目录css ,添加1.css和2.css,随便写内容,提交到仓库

练习:修改index.html中的内容,删除1.css和 1张图像,提交到仓库

练习:不断回调到第一个版本,最后回退到最新版本

4、Git分支

分支是为了不影响主线的工作,便于模块化开发

分支就是拷贝主线的一个副本,最终还是要合并到主线

(1)创建新的分支

git    branch    分支名称

(2)查看所有的分支

git    branch

(3)切换分支

git    checkout   分支名称

(4)合并分支

git   merge   分支名称

(5)删除分支

git    branch   -d   分支名称   删除已经合并的分支

git    branch   -D   分支名称  强制删除分支

5、远程仓库

国内:码云

国际:GitHup,世界上最大的代码托管平台

先创建远程仓库,产生仓库地址

git   push    仓库地址     分支名称

将本地仓库的分支推送到远程仓库

输入错误,修改用户名密码需要删除之前的

控制面板 -> 凭据管理器 ->windows  凭据

删除用户名密码

Node.js(二)相关推荐

  1. Node.js(二)——pug模板引擎,nunjucks模板引擎,在koa中使用pug和nunjucks模板引擎

    目录 1.知识点及课堂目标 2.模板引擎 3.pug模板引擎使用 3.1安装pug 3.2pug常用语法 3.2.1通过缩进关系,代替以往html的层级包含关系. 3.2.2html 元素属性/sty ...

  2. Node.js(二)----安装Cnpm

    ---恢复内容开始--- 1.安装CNPM 因为天草的 Great Wall 导致下载速度龟速....所以安装Cnpm淘宝镜像 2.命令 2.1 如果版本合适 设置镜像地址 npm config se ...

  3. Node.js 笔记01

    一.Node.js 前言 1.node.js 之父 Ryan Dahl(瑞安达尔) ,技术好,颜值高! 数学系博士, 中途退学, 为了生活, 学习了Ruby On Rails接Web项目, 经过两年成 ...

  4. win10 更新Node JS和npm

    一.更新NodeJS 1. 先查看NodeJS的版本 到命令行中輸入指令:node -v 就能獲得當前Node JS的版本. 由於,我是在更新完成后才寫的這篇文章,所以,截的圖也是已經更新完成后的最新 ...

  5. 如何安装node.js

    Node.js安装教程 目录 Node.js安装教程 一.下载Node.js 二.检查是否安装完毕 三.修改全模块的路径和缓存 四.将npm源更改为国内淘宝源 五.安装基于淘宝源的cnpm 六.安装完 ...

  6. 【Node.js】初识Node.js

    系列文章目录 文章目录 系列文章目录 一.什么是 Node.js 二.下载和安装 Node.js 1.普通方式 2.使用 nvm 安装 三.Node.js 和 JavaScript 的区别 1.ECM ...

  7. WIN11安装node.js

    一.安装包下载 Download | Node.js 二.安装 自定义安装路径.安装选项按照默认即可. 三.检查 打开cmd,输入node -v和npm --v查看版本. 四.配置 自定义npm安装的 ...

  8. JavaScript 的进阶学习 (Node.js)_01

    Node的学习 Node.js 是一个基于 Google 所开发的浏览器 Chrome V8 引擎的 JavaScript 运行环境. 属于 服务端的 JavaScript . 2019.03.01 ...

  9. 【微信小程序】小程序开发—node.js下载,npm配置以及组件使用

    目录 一.下载Node.js 二.微信开发者工具中安装Node.js 三.用Node.js中的npm安装vant组件 一.下载Node.js 1.官方下载地址:node.js官方下载地址 直接下载第一 ...

  10. 【使用 node 版本切换工具 nvm 切换 node.js 版本】

    使用 node 版本切换工具 nvm 切换 node.js 版本 文章目录 使用 node 版本切换工具 nvm 切换 node.js 版本 前言 一.nvm是什么? 二.使用步骤 1.卸载原有 no ...

最新文章

  1. pythonsklearn乳腺癌数据集_使用sklearn的样本数据集
  2. LVS(9)——为NAT单独增加路由器
  3. java一系列数组的表示方法_Java入门系列-10-数组
  4. tensorflow独热编码方法_吴恩达课后作业学习2-week3-tensorflow learning-1-基本概念
  5. RabbitMQ 的延时队列和镜像队列原理与实战
  6. [Groovy] How to check if element in groovy array/hash/collection/list?
  7. jQuery如何去判断页面是否有父页面?
  8. java 指定格式的date_指定格式的日期字符串转化成java.util.Date类型日期对象
  9. 组态王与Modbus协议的地址对应规则
  10. Win10(11)下Qt6.2编译Qtxlsx库
  11. 转 Html转pdf的工具——wkhtmltopdf
  12. 【性能测试基础】性能专有名词解析及性能瓶颈分析技巧
  13. python上的包嗅探
  14. 理财入门书-小狗钱钱 -读书笔记
  15. CentOS 7 下的软件安装方法及策略
  16. Windows上架设Turn服务器
  17. cfDNA的5-羟甲基胞嘧啶谱高度预测弥漫大B细胞淋巴瘤患者的R-CHOP治疗反应
  18. 一文吃透MySQL面试八股文
  19. 【NOIP2017】Day4
  20. A和G cup的差距究竟有多大?| 今日趣图

热门文章

  1. matlab 嵌套循环
  2. android 全选功能,Android Recyclerview实现多选,单选,全选,反选,批量删除的功能
  3. win11快速启动有必要关闭吗?如何关闭?
  4. 软考中级 真题 2016年下半年 系统集成项目管理工程师 基础知识 上午试卷
  5. html中怎么写虚线框的宽高,html如何设置虚线边框
  6. mysql 编程算法_十大编程算法助程序员走上高手之路
  7. 大数据之数据质量检查
  8. 《计算机操作系统》(第四版)汤子瀛等编著——思维导图详细版本
  9. 软著申请所需资料整理(软件著作权)
  10. Dwarves (有向图判环)