本文是我对中间件的收集整理及我的理解的记录。仅表明我的水平、我的理解。若有问题,师请雅正。html
维基百科:前端
中间件(英语:Middleware),是提供系统软件和应用软件之间链接的软件,以便于软件各部件之间的沟通,特别是应用软件对于系统软件的集中的逻辑,在现代信息技术应用框架如Web服务、面向服务的体系结构等中应用比较普遍。如数据库、Apache的Tomcat,IBM公司的WebSphere,BEA公司的WebLogic应用服务器,东方通公司的Tong系列中间件,以及Kingdee公司的等都属于中间件。node
好吧,做为一个前端渣渣,看不懂。再看看百度百科吧,下面是一些相关中间件:web
OK,到这里,仍是一脸懵逼。。。别灰心,由于术业有专攻,中间件是一个比较宽泛的概念,咱们缩小一下范围,了解一下web相关的中间件,简单点:数据库
说了这么多,好像并无什么实质性的内容,都是一些抽象的概念,来点实际的,了解一下Node中间件。 近几年来,在企业开发中愈来愈推崇微服务架构,而它在不经意间却致使前端同窗和后端同窗之间关于 API 接口颗粒度的争吵,愈来愈多见:express
归结为一个问题:『服务端设计的接口到底是面向 UI 仍是只是通用服务?』后端
2015 年,Sam Newman 对此提出了 Pattern: Backends For Frontends,简称 BFF,国内也俗称为粘合层。安全
能够看出,这一层一直都存在,只不过是由后端同窗维护而已。 但咱们知道,前端贴近用户侧,需求的变化太快了,后端同窗来维护会很累。 在 BFF 理念中,最重要的一点是:服务自治,谁使用谁开发,即它应该由前端同窗去维护。服务器
无它,就是须要这样的一个中间层,但后端同窗不太想管了(也管不过来),因此大部分前端同窗选择了一个更顺手的 Node.js ,仅此而已。网络
不,你须要根据你的业务场景,还有团队的技术架构,来具体状况具体分析。切记, BFF 不限制具体技术选型。 BFF 不可避免的会带来:研发成本必定程度上的增长,对开发者的能力要求增长。
Express和Koa是目前最主流的基于node的web开发框架,他们的开发者是同一班人马。貌似如今Koa更加流行,可是仍然有大量的项目在使用Express,因此这里咱们说说Express中间件的原理。如下所说中间件皆为Express中间件。
中间件的本质就是一个函数,在收到请求和返回相应的过程当中作一些咱们想作的事情。Express文档中对它的做用是这么描述的:
执行任何代码。 修改请求和响应对象。 终结请求-响应循环。 调用堆栈中的下一个中间件。
Express文档中把他们分为了五类,可是他们的原理相同,只是用法不一样:
应用级中间件 路由级中间件 错误处理中间件 内置中间件 第三方中间件
很是简单。
var express = require('express')
var app = express();
app.use('/user', function (req, res, next) {
//TODO
next();
});
app.listen(8080)
复制代码
总结: 面向前端的Node中间件并不能提升咱们的应用性能,而是规范咱们的开发流程,提升咱们的工做效率,遇到问题可以更快的解决,至因而否使用,就要因地制宜了。