一、Express

1.express路由

(1)路由

路由就是映射关系。在Express中,路由是指客户端的请求与服务器处理函数之间的映射关系

(2)路由匹配的过程

(3)模块化路由

为了方便对路由进行模块化管理,Express不建议将路由直接挂载到app上,而是推荐路由抽离为单独的模块。因为直接挂载到app上,会导致后期代码量太大。

①创建路由模块

②注册路由模块

(4)为路由模块添加前缀

意思就是,加上访问前缀,在访问的时候,必须加上此前缀才可以访问。在没加的时候,不用加此前缀可以访问。

2.Express中间件

2.1

(1)中间件:特指业务流程的中间处理环节

(2)Express中间件的调用流程

中间件的作用:对请求进行预处理

一个请求到达Express的服务器之后,可以连续调用多个中间件

(3)中间件的格式

(6)next函数的作用

是实现多个中间件连续调用的关键,他表示把流转关系转交给下一个中间件或路由

2.2

(1)定义中间件函数

const express=require('express')const app = express()//1定义一个最简单的中间件函数
const mw=function(req,res,next){next()//把流转关系,转交给下一个中间件或路由
}app.listen(80,function(){console.log('http://127.0.0.1');
})

(2)全局生效的中间件

就是客户端发起的任何请求,到达服务器之后,都会触发的中间件,叫做全局生效的中间件。

方法:通过调用app.use(中间件函数),即可定义一个全局生效的中间件, 例:

//1定义一个最简单的中间件函数
const mw=function(req,res,next){next()//把流转关系,转交给下一个中间件或路由
}//注册为全局生效的中间件
app.use(mw)

简化形式:

app.use((req,res,next)=>{  next()})

(3)中间件的作用

(4)定义多个全局中间件

使用app.use()定义多个全局中间件,客户端请求到达服务器之后,会按照定义的先后顺序依次进行调用。

例:就会先出现第一个,再出现第二个

const express=require('express')
const app=express()
//定义第一个全局中间件
app.use((req,res,next)=>{console.log('调用了第一个全局中间件');next()
})
//定义第二个全局中间件
app.use((req,res,next)=>{console.log('调用了第二个全局中间件');next()
})
app.get('/user',(req,res)=>{res.send('User page.')
})

(5)局部生效的中间件

不使用app.use()定义的中间件,叫做局部生效的中间件

const mw1=((req,res,next)=>{console.log('调用了局部生效的中间件');
})
app.get('/',mw1,(req,res)=>{res.send('Home page.')
})
app.get('/user',(req,res)=>{res.send('User page.')
})
//此时mw1这个中间件只在第一个路由当中生效,而不会影响下一个,也就是说,第二个不会出现调用了局部那句话

(6)定义多个局部中间件

执行顺序是从左到右,可以写很多个

(7)注意事项

 2.3、中间件的分类

(1)应用级别的中间件

应用级别的中间件:  通过app.use()或者app.get()或者app.post(),绑定到app实例上的中间件。只要绑定到了app上都是。

(2)路由级别的中间件

绑定到express.Router()实例上的中间件。用法和应用级别的中间件没有任何区别。

区别:应用级别的是绑定到app上,路由级别是绑定到router上

(3)错误级别的中间件

注意!!!一定要把错误级别的中间件放到所有路由之后,不然发生错误往后找的时候,是没办法找到的,就会报错

const express=require('express')app.get('/',(req,res)=>{throw new Error('服务器内部发生了错误')//人为制造错误res.send('Home page.')//当发生错误之后,就不会执行后面的send,会立即找到错误级别的中间件,如果没有错误级别的中间件,那么就没有客户端响应
})
//加了这个,就会给客户端响应这个里面的Error+err.message
app.use((err,req,res,next)=>{console.log('发生了错误'+err.message);//在服务器打印错误信息res.send('Error:'+err.message)
})
app.listen(80,function(){console.log('server running at http://127.0.0.1');
})

(4)Express内置的中间件

可以用req.body这个属性,来接收客户端发送过来的请求体数据。默认情况下,如果不配置表单数据的中间件,则req.body默认等于undefined。所以想要接收,必须先进行配置。

(5)第三方的中间件

 2.4自定义中间件

(1)监听req的data事件

(2)监听req的end事件

比如,汉字会转成%96%es这样看似奇怪的样子,我们需要把他解析成对象格式

(3)使用querystring模块解析请求数据

(4)将解析出来的数据对象挂载为req.body

(5)将自定义中间件封装为模块

3.使用Express写接口

先创建基本的服务器

创建API路由模块

编写GET接口

编写POST接口

 在线的jQuery:staticfile.org

4.2CORS跨域资源共享

(1)接口的跨域问题

就比如,接口是由http协议向外提供的,然而网页是通过files向外提供,就存在了跨域问题

(2)使用cors中间件解决跨域问题

(3)什么是CORS

(4)CORS响应头部——Access-Control-Allow-Origin

(5)CORS响应头部——Access-Cotrol-Allow-Headers

(6)CORS响应头部——Access-Cotrol-Allow-Methods

(7)CORS请求分类

客户端在请求CORS接口时,根据请求方式和请求头的不同,可以将CORS的请求分为两大类:

①简单请求

②预检请求

简单来说,就是和简单请求对立的请求

③区别:

例如:这个就是多出来的OPTION预检请求

(8)JSONP接口

实现步骤:

(9)在网页当中使用jQuery发起JSONP请求

二、数据库与身份认证

1.数据库(database)

1.1

是用来组织、存储和管理数据的仓库

数据库管理系统:对数据库中的数据进行新增、查询、更新、删除等操作

1.2常见的数据库及分类

 1.3传统数据库的数据组织结构

数据组织结构:就是数据以说明样的结构进行存储

(1)Excel的数据组织结构

由工作薄(整个Excel)、工作表(相当于在Excel里面的单个文件)、数据行、列四大部分组成

(2)传统数据库的数据组织结构

由数据库(database)、数据表(table)、数据行(row)、字段(field)四大部分组成

(3)实际开发中库、表、行、字段的关系

2.安装并且配置MySQL

MySQL在Windows环境下的安装

 2.1使用MySQL Workbench管理数据库

(1)连接数据库

点击:

(2)了解主界面的组成部分

注意使用时,数据库列表要切换到Schemas

(3)创建数据库

数据库名称千万不要包含中文和空格!!!!

(4)创建数据表

点击ColumnName创建,点击已创建的之后,可以在下方看到,Comments,为了方便我们可以在里面写注释帮助我们理解。

status,defult写入0,就是0表示状态正常,1表示被禁用

(5)向表中写入数据

 2.2使用SQL管理数据库

(1)SQL  

SQL能做什么:

 2.3SQL的SELECT语句

(1)语法

就是黄颜色部分,注意其他的部分是敏感的

 (2)SELECT*

点击左上角第一个 新建,点击小闪电运行。

 (2)SELECT列名称

2.4SQL的INSERT INTO语句

(1)语法

例如:

  2.5SQL的UPDATE语句

语法:

示例:

当更新某一行的若干列时:

 2.6SQL的DELETE语句

语法:

例:

2.7SQL的WHERE子句

2.8SQL的AND和OR运算符

2.9SQL的ORDER BY语句

(1)

例:

降序就是把asc换成desc

(2)多重排序

 2.10SQL的COUNT(*)函数

(1)语法

例:

(2)使用AS为列设置别名

3.在Express中操作MySQL

(1)步骤:安装mysql——通过mysql模块连接到mysql数据库——通过mysql模块执行SQL语句

(2)安装mysql 模块

(3)配置mysql模块

(4)测试mysql模块能否正常工作

 4.2使用mysql模块操作mysql数据库

(1)查询数据

(2)插入数据

插入数据的便捷方式:

(3)更新数据

更新数据的便捷方式:

(4)删除数据

(5)标记删除

8.4—8.5学习汇报与总结

1.学习体会与感受

完成了学习任务。主要的问题是,我还没有解决我的npm只要一执行一堆error(看着一堆err陷入沉思),所以一些都是没有成功执行的,解决完我的error之后,代码需要运行一遍,看看有没有问题。

2.8.6-8.8学习计划

Node.js学习就只剩最后项目搭建示例讲解,学习完成之后,开始学习VUE。

【前端——Node.js】:Express、数据库与身份认证相关推荐

  1. Node.js 学习之数据库与身份认证

    数据库与身份认证 文章目录 数据库与身份认证 1.SQL 的相关学习 1. SQL 的概念 2. SQL 语句学习 a. 查询数据(select).插入数据(insert into).更新数据(upd ...

  2. 数据库与身份认证(数据库的基本概念,安装并配置 MySQL,MySQL 的基本使用,在项目中操作 MySQL,前后端的身份认证)

    theme: channing-cyan 数据库与身份认证 1. 数据库的基本概念 1.1 什么是数据库 数据库(database)是用来组织.存储和管理数据的仓库. 当今世界是一个充满着数据的互联网 ...

  3. 数据库与身份认证——黑马课程笔记

    数据库与身份认证 1.数据库的基本概念 2.安装并配置MySQL 3.MySQL的基本使用 3.1使用MySQL workbench管理数据库 1.连接数据库 2.了解主界面的组成部分 3.创建数据库 ...

  4. Node.js 使用 JWT 进行用户认证

    代码地址如下: http://www.demodashi.com/demo/13847.html 运行环境 该项目基于 node(v7.8.0版本以上) 和 mongodb 数据库,因此电脑上需要安装 ...

  5. 10 数据库与身份认证

    10. 数据库与身份认证 1. 在项目中操作数据库的步骤 安装操作MYSQL数据库的第三方模块(mysql) 通过mysql 模块连接到MYSQL数据库 通过mysql模块执行SQL语句 2. 代码实 ...

  6. 从零开始搭建Node.js, Express, Ejs, Mongodb服务器

    http://www.toolmao.com/nodejs-express-ejs-mongodb-server 本文改自非鱼的<[翻译]前端开发人员入门指南,从零开始搭建Node.js, Ex ...

  7. TWaver HTML5 + Node.js + express + socket.io + redis(五)

    接上一回TWaver HTML5 + Node.js + express + socket.io + redis(四), 这一篇您将了解到 1. 如何保存更改后的拓扑数据 (包括新增的, 修改的, 删 ...

  8. Node.js Express+Mongodb 项目实战

    Node.js Express+Mongodb 项目实战 这是一个简单的商品管理系统的小项目,包含的功能还算挺全的,项目涵盖了登录.注册,图片上传以及对商品进行增.删.查.改等操作,对于新手来说是个很 ...

  9. 使用Node.js express 开发上传文件/图片api接口

    我是傲夫靠斯,欢迎关注我的公众号[前端工程师的自我修养],每天更新. 今天我们来搞一个Node.js Express的上传文件功能,我使用了busboy这个库. Busboy是一个基于事件的文件流解析 ...

最新文章

  1. 套接字编程--TCP
  2. 给JFinal添加 Sqlite 数据库支持
  3. sql server 替换有反斜杠的字符串_SQL注入思维导图
  4. 3、面向对象-继承-多态
  5. Divide and conquer:Drying(POJ 3104)
  6. mysql cluster 外键_Mysql外键约束
  7. # 20155337 《Android程序设计》实验四实验报告
  8. 保存数组类型数据_「Java」基础12:什么叫数组?
  9. 计算机网络之JSONP跨域
  10. vc++HOOK详细讲解
  11. 前端 js 基于react ts的excel文件模板下载 文件导入、导出
  12. PTA (特立独行的幸福)
  13. Aras Innovator: 如何在Form中放入图片
  14. 牛皮凉席发霉如何处理?
  15. GPRS远程开关 1 综述
  16. 刷脸支付帮商户降低人力成本引流圈客
  17. 师兄写的一个JAVA播放器的源代码(转)
  18. linux是实时系统还是分时操作系统
  19. springboot(一):构建最简单的springboot项目
  20. oracle 联通 offer,29岁社招拿到中国联通offer,该不该去?

热门文章

  1. sap对字符串的操作
  2. 适合练习听力的英文电影推荐
  3. 使用dockpanel动态添加picturebox并绑定图片
  4. 安卓逆向——刷机Pixel2 ROOT
  5. Java String的intern方法
  6. 队列的顺序、链式表示与实现
  7. Build Setting 之 Code Signing 详解
  8. Android软件开发面试题,安卓面试题库
  9. LeetCode_376: 摆动序列
  10. Semantic-UI-React (称 stardust) 对比 Antd