您的位置:首页 > 汽车 > 时评 > 上海网站推广网络公司_企业信息公示管理系统官网_关键词优化seo外包_买域名要多少钱一个

上海网站推广网络公司_企业信息公示管理系统官网_关键词优化seo外包_买域名要多少钱一个

2024/12/26 0:08:25 来源:https://blog.csdn.net/m0_63685551/article/details/144218899  浏览:    关键词:上海网站推广网络公司_企业信息公示管理系统官网_关键词优化seo外包_买域名要多少钱一个
上海网站推广网络公司_企业信息公示管理系统官网_关键词优化seo外包_买域名要多少钱一个

中间件介绍

  1. 什么是中间件
    中间件其本质就是一个回调函数,可以像路由一样访问请求对象(request)响应对象(response)
  2. 中间件的作用是什么
    通过函数封装公共操作,简化代码
  3. 中间件类型
    - 全局中间件
    - 路由中间件

全局中间件的实现

例子:简单实现一个log日志,记录每次访问url地址及时间

	const express = require('express')const path = require('path')const fs = require('fs')const app = express()// 声明中间件函数function middlewarw(req,res,next) {let {url} = req// 加这一步是因为默认会先访问favicon.ico文件,为了显示跳过对 favicon.ico 的处理if (url === '/favicon.ico') {return next();}// 获取时间const now = new Date();// 简便用了toISOString()方法,复杂的处理可以使用dayjsconst timestamp = now.toISOString().replace('T', ' ').slice(0, 19);// 通过fs模块将记录写入文件fs.appendFileSync(path.resolve(__dirname+'/record.log'),`${url} ${timestamp}\r\n`)// next是为了上面执行完成后 继续执行后续的方法next()}// 声明完成中间件要通过下面方式调用app.use(middlewarw)app.get('/index',(req,res)=>{res.send('首页')})app.get('/admin',(req,res)=>{res.send('管理系统首页')})// 错误处理app.all('*',(req,res)=>{res.send('<h1>404</h1>')})// 监听端口app.listen('3000',()=>{console.log('启动成功');  })

上面的逻辑就实现了一个全局中间件,这样即便有再多的访问路径,也都会被记录到log文件中。
运行程序会看到当前目录下会生成一个log文件,打开文件查看内容,就会看到我们想要的结果
在这里插入图片描述
在这里插入图片描述

路由中间件

实现一个简单的路由中间件(示例),与全局路由不同的是中间件函数要放到路由中执行

const express = require('express')const app = express()// 中间件函数
const routeMiddlewarw = (req,res,next)=> {// 假设访携带code值1则有访问权限if(req.query.code === '1'){// 继续执行后续next()}else{res.send('没问访问权限')}
}// 中间件函数 放到第二个参数执行
app.get('/index',routeMiddlewarw,(req,res)=>{res.send('首页')
})app.get('/admin',routeMiddlewarw,(req,res)=>{res.send('管理系统首页')
})app.all('*',(req,res)=>{res.send('<h1>404</h1>')
})app.listen('3000',()=>{console.log('启动成功'); 
})

实际运行前后对比
在这里插入图片描述在这里插入图片描述

静态资源中间件

创建静态目录
在这里插入图片描述
在html中引用css
在这里插入图片描述


const express = require('express')
const app = express()// 设置静态资源中间件
app.use(express.static(__dirname + '/publick'))// 路由
app.get('/',(req,res)=>{res.send('首页')
})app.all('*',(req,res)=>{res.send('<h1>404</h1>')
})app.listen('3000',()=>{console.log('启动成功'); 
})

启动之后访问3000端口
在这里插入图片描述
也可以尝试这样访问
在这里插入图片描述
注意事项

  1. index.html文件,是默认打开的资源文件,比如http:localhost:3000,这样直接就访问到了index.html
  2. 静态资源和路由规则,谁先匹配就优先响应谁也可以理解为谁先执行谁先响应。例如:在这里插入图片描述
    这样就会优先访问到首页这个页面。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com