目录
一套解决方案,
Express - 基于 Node.js 平台的 web 应用开发框架 - Express 中文文档 | Express 中文网
属于第三方模块,需要下载安装
npm install express
- // 引入express模块
- const express = require("express");
- // console.log(express);
- // 创建web服务器
- const app = express();
- // 设置端口
- app.listen(3000, () => {
- console.log("服务器启动成功");
- });
监听特定的请求,组成,请求的URL,请求的方法,回调函数
- // 引入express模块
- const express = require("express");
- // 创建web服务器
- const app = express();
- // 设置端口
- app.listen(3000);
- //添加路由,
- //params传参需要在路由中设置参数名
- app.get("/search/:wd", (req, res) => {
- // 获取params传递的参数
- var obj = req.params;
- res.send("搜索成功"+obj.wd);
- console.log(obj);
- });
- 1.路由器
- //(1)引入express模块
- //(2)创建路由器对象
- const router = express.Router()
- //(3)往路由器对象添加路由
- //(4)暴露路由器对象
- module.exports = router
- //(1)引入路由器模块
- //(2)挂载引入的路由器
- app.use( URL前缀, 路由器 )
用来拦截对web服务器的请求,中间件分为应用级中间件,路由级中间件,内置中间件,第三方中间件,错误处理中间件
一个函数,一旦拦截到以后会自动调用这个函数
- // 引入express模块
- const express = require('express')
- const app = express()
- app.listen(3000)
- function fn(req, res, next) {
- console.log('拦截了对/list请求');
- var obj = req.query
- console.log(obj);
- if (obj.user !== 'root') {
- res.send('请提供管理员账号')
- } else {
- // 否则是管理员,允许继续执行
- next()
- }
- }
- // 添加中间件,拦截/list的请求
- app.use('/list', fn)
- app.use('/delete', fn)
- app.get('/list', (req, res) => {
- res.send('这是所有用户列表,只有管理员权限')
- })
- // 添加中间件,拦截删除用户路由,验证用户身份是否为管理员
- // 添加删除用户的路由(get /delete),响应删除成功
- app.get('/delete', (req, res) => {
- res.send('删除成功')
- })
- function discount(req, res, next) {
- console.log('拦截对/shopping的请求');
- // 获取get传递的参数
- console.log(req.query);
- // 打9折
- req.query.price *= 0.9
- // 往后执行
- next()
- }
- app.use('/shopping', discount)
- // 添加路由(get /shopping)
- app.get('/shopping', (req, res, next) => {
- var obj = req.query
- console.log(obj);
- res.send('商品的价格:' + obj.price)
- // 往后执行
- next()
- })
- // 后置中间件
- app.use((req, res) => {
- console.log('后置中间件');
- })
当拦截到URL以后,到指定的路由器下查找路由
app.use(拦截的URL,路由器)
express提供的中间件,就是内置中间件
将post传参转为对象
托管静态资源,客户端如果要请求静态资源,不需要通过路由去响应文件,服务器把静态资源放入到一个指定的目录下,让客户端自动去查找
app.use(express.static(‘托管的目录’))
- // 引入express模块
- const express = require('express')
- // 创建web服务器
- const app = express()
- // 引入用户登录路由器模块
- const ur = require("./05_user");
- // 设置端口
- app.listen(3000)
- // 托管静态资源
- app.use(express.static('public'))
- // 将post传递的参数转换为中间件
- app.use(express.urlencoded({
- extended: true
- }))
- // 编写用户路由器,创建路由器对象,将用户登录的路由添加到该路由器下,暴露路由器对象
- // 在web服务器下引入用户路由器,挂在路由器,并添加前缀/user
- // /user/mylogin
- // 挂载路由器
- // 路由添加前缀 /user/mylogin
- app.use("/user", ur);
- // 引入express模块
- const express = require("express");
- // 创建路由器对象
- const router = express.Router();
- // // 路由器添加路由
- // // 商品列表(get / list)
- // router.get("/mylogin", (req, res) => {
- // res.send("这是商品列表");
- // });
- // 添加路由,监听按钮提交的请求
- router.post('/mylogin', (req, res) => {
- // 获取post传递的参数
- var obj = req.body
- res.send(`登陆成功!欢迎:${obj.user}`)
- })
- // 将路由器对象暴露出去
- module.exports = router;