1.what中间件
就是请求
req
和响应res
之间的一个应用浏览器向服务器发送一个请求后,服务器直接通过
request
定位属性的方式得到通过request
携带过去的数据,就是用户输入的数据和浏览器本身的数据信息这中间就一定有一个函数将这些数据分类做了处理,最后让request对象调用使用,这个处理函数就是我们所所得中间插件。
比如生活中的买家和汽车厂家,中间需要一个4s来搭桥,这个4s就类似于中间件
比如生活中的商家和消费者,中间需要一个平台(牟东,某宝)来搭桥,这个平台就类似于中间件
比如生活中的租客和房主,中间需要一个中介来搭桥,这个中介就类似于中间件
语法:
app.use("路由",function(req,res,next){});
express的路由匹配顺序是从上往下依次匹配
2.每个请求加事件戳
其实这里类似 日志的一个思想雏形
服务端需要记录接收到的每次请求具体信息 (比如参数,请求方式等)
还需要记录每次请求的时间,
因为生成环境出的问题,需要排查,有些也不容易复现,所以查看日志非常重要
这个中间件 匹配所有路由,所有的请求都会进来,也就能获取所有的请求信息
响应信息也可以获取,写到日志文件里面 形成清晰的日志,便于以后查看
这个正则比较简陋, 能理解意思就行
核心代码
app.use(/\/.*/, function (req, res, next) { //这里可以 获取请求的参数 ,返回的参数 //写到日志文件里面 形成日志 console.log(new Date().toLocaleString()); // next是一个函数,调用next相当于告诉express,继续向下执行代码 next(); });
3.路由
app.use("/admin",function(req,res,next){ console.log("这是中间件请求的admin路由"); next(); }); app.get("/admin",function(req,res){ console.log("这是get请求的admin路由"); res.end(); });
admin
get和use都会匹配
admin/level1
只有use
会匹配
4.总结
中间件语法与路由语法的区别:
1. 中间件语法里的回调函数里多一个next参数
2. 中间件的语法里可以不写第一个路由参数, 如果不写, 表示通配路由;
路由语法如果不写第一个参数,什么都匹配不上
3. 中间件语法的第一个参数对路由值的匹配是开头模糊匹配,
路由语法的第一个参数对路由值的匹配是精确匹配.
5.后续
更复杂的内容 放到token在祥讲
6.静态资源
可以设置多个静态资源目录
因为开发过程可能 图片资源单独放一个目录
音视频单独放一个资源目录
Express 在静态目录查找文件,因此,存放静态文件的目录名不会出现在 URL 中。
通过如下代码就可以将 public 目录下的图片、CSS 文件、JavaScript 文件对外开放访问了
// public作为静态资源根目录 //里面可以放图片 css js等资源 app.use(express.static("public")) app.use(express.static("public2"))
上面如果不行 可以加上路径
app.use(express.static(__dirname+"/public")) app.use(express.static(__dirname+"/public2"))
更多信息查看下方链接
地址栏换成你的端口 和静态资源目录下的文件名就哦了
Express 在静态目录查找文件,因此,存放静态文件的目录名不会出现在 URL 中。
- 现在,你就可以访问 public 目录中的所有文件
http://localhost:3000/images/kitten.jpg
http://localhost:3000/css/style.css
http://localhost:3000/js/app.js
http://localhost:3000/images/bg.png
http://localhost:3000/hello.html2.注意 不要带上静态资源目录的名字比如
public
这个在地址栏不要写 ,否则访问不到3.可以把自己之前写的项目放到这个服务器目录下
然后再地址栏输入 通过浏览器访问
访问
7 创建虚拟路径
1.静态资源路径写法1
app.use('/static', express.static(__dirname+'/public')
2.静态资源路径写法2
const path = require('path') app.use(express.static(path.join(__dirname, 'public')))
现在,你就可以通过带有 /static 前缀地址来访问 public 目录中的文件
8.扩展话痨
这个目录就是服务器目录,比如
php
的www
目录早期,或者说为了省事,测试的时候前端会把代码压缩给服务端,服务端同事解压后也会放入到他本地的服务器目录,然后给前端人员一个地址,前端在这个地址上测试,迭代,直到没有问题,在由后端人员发布到
生产环境
大体流程是这样的,但是具体测试,谁把代码放到服务器不一定
现代互联网公司 会通过一些构建工具,例如我之前经常使用的是
Jekins
里面主要是通过脚本配置来发布测试代码和线上代码
大体内容如下
- 从
gitlab
或者公司指定的仓库拉取代码- 将拉取的代码通过一些指令远程拷贝到服务器指定目录
这其中第一步 例如
gitlab
上会有很多分支,测试环境的分支,开发环境的分支,线上环境的tag分支等拉取代码肯定需要配置相应的
gitlab
对应权限的账号不同环境不同的分支 都是配置,配置一次,以后自动化,点击对应的功能按钮就好
远程拷贝等一些常规指令,需要大体能看懂,之前还自学,外加向运维同学请教, 学了不少,可惜现在忘完了,看到指令的话还能认识,
这里边可能还牵扯到一些 名字
割接
,跳板机
割接
比如网络扩容,设备更新,就是网络改造中的对接操作
跳板机
因为有些服务器就只是服务器,存放资料的,硬盘,没有屏幕,而且肯定也都在大机房,或者海底,山里,往上面拷贝东西,肯定也不会让你直接访问的,需要通过中介,层层跳转过去操作,那些中介电脑就是跳板机