express是基于node.js的一个框架,保留了一些nodejs原生的api并且新增了一些api
app=express()
app称应用,app.user()调用的是npm的express插件,也可以给非指定method的自定义中间件使用,
app.get/post只能处理get请求,并且只能用自定义中间件,不能用npm中间件
app.get与router.get都是一个样,只是router是为了不让代码挤在一个js文件而弄出的。所以api一模一样
任何应用级方法,路由级方法,比如user,get都支持n多个中间件连写。
猜测:所以指定同一路由的user函数等,都会执行,只到遇到res流
至于require的npm插件,调用app.user(),就可以把这个中间件参数扩展到req对象里,任何后面的中间件req里都可以获取值
只是纳闷,为什么是req?
req在node.js中,写的权限应该是浏览器,读的权限应该是服务器(猜测),为什么express可以给服务器与写req对象的权限?(有了一个猜想)
猜想:express的npm包,不应该理解成扩展,恰恰相反,应该是还原,还原http协议里本来就有的,不过被node.js环境req对象舍弃了。因为一开启user,加载multer,就可以读到二进制文件,而浏览器没有改动,显然,是本来就该有的功能被打开了,而且相应的res流也打开了相应的属性,至于要不要传到浏览器,由express,还是用户决定?
显然,只要阅读http协议相关书籍或者浏览器相关底层封装,就能知道我这个猜想对不对。
不管对不对。目前来说,还算严谨