1.路由器
用来管理路由,将同一个功能模块下的所有的路由统一管理,最终路由器被WEB服务器使用
路由器 const express=require('express'); //引入express const r=express.Router();//创建路由器对象 //添加路由 module.exports=r; //导出路由器对象 |
WEB服务器引入并使用路由器 const userRouter=require('./user.js'); app.use('/user',userRouter); |
练习:编写app.js文件,创建WEB服务器,添加用户列表的路由(get /list),响应‘这是用户列表’;添加商品列表的路由(get /list),响应‘这是商品列表’
练习:完成用户路由器user.js,添加用户列表路由(get /list),导出路由器,最后在app.js下引入路由器并使用,添加前缀/user
const express=require('express');
//引入用户路由器
console.log(userRouter);
//创建WEB服务器
const app=express();
//设置端口
app.listen(8080);
//商品列表(get /list)
app.get('/product/list',(req,res)=>{
res.send('这是商品列表');
});
//用户列表(get /list)
app.get('/user/list',(req,res)=>{
res.send('这是用户列表');
});
2.中间件
用于拦截对服务器的请求
分为应用级中间件、路由级中间件、内置中间件、第三方中间件、错误处理中间件
(1)应用级中间件
就是一个函数,一旦拦截到以后会自动调用这个函数
app.use( 要拦截的URL, 函数 )
练习:添加到购物车的路由(get /shopping),传递商品的价格price,添加中间件,实现对商品价格打九折,最后响应‘商品的价格:xxxx’
const express = require("express");
const app = express();
app.listen(8080);
/*function fn(req,res,str){
console.log(req.query);
req.query.price*=0.9;
str();
}
app.use('/shopping',fn);
app.get('/shopping',(req,res)=>{
res.send('商品的价格:'+req.query.price)
})*/
http://127.0.0.1:8080/shopping?price=1000
(2)路由级中间件
就是路由器的使用
(3)内置中间件
托管静态资源中间件
如果浏览器端请求静态资源(html,css,js,图像...),不需要通过路由去响应,而是自动的到某个目录下寻找。
app.use( express.static('要托管的目录') )
练习:编写04_three.js文件,创建WEB服务器,托管静态资源到public目录,包含文件login.html,点击提交向服务器请求(post /mylogin),获取传递的数据,响应‘登录成功’
//html代码
<form method="post" action="/mylogin">
用户<input type="text" name="user"><br>
密码<input type="text" name="password"><br>
<input type="submit">
</form>
//JS代码
const express=require('express');
//1.引入body-parser中间件模块
const bodyParser=require('body-parser');
//引入查询字符串模块
//const querystring=require('querystring');
//创建WEB服务器
const app=express();
//设置端口
app.listen(8080);
//托管静态资源到public目录
app.use( express.static('./public') );
//2.使用body-parser中间件,将所有post请求的数据解析为对象
//body-parser中间件也是内置的中间件,也可以使用express
app.use( express.urlencoded({
extended:false //是否使用第三方的qs模块解析为对象
}) );
//添加路由(post /mylogin)
app.post('/mylogin',(req,res)=>{
//3.获取post传递的数据
console.log(req.body);
res.send('登录成功');
});
(4)第三方中间件
都是以第三方模块的形式存在,需要先下载安装
body-parser中间件
下载安装 npm install body-parser
//1.引入body-parser |
//2.使用body-parser将所有post请求的数据解析为对象 app.use( express.urlencoded({ extended:false //是否使用第三方的qs模块解析为对象 }) ); |
//3.在路由中获取post请求的数据 req.body |
其它第三方中间件:https://www.expressjs.com.cn/resources/middleware.html
文件上传中间件:http://www.codece.com/archives/173
3.mysql模块
是Node.js下专门用于操作mysql数据库的模块
下载安装
npm install mysql
连接数据库
mysql.exe -h127.0.0.1 -P3306 -uroot -p
mysql -uroot
mysql -uroot<拖拽SQL脚本文件