var app = express();
var router = express.Router();
看文档发现router可以做的事好像app都可以做,请教一下两者的区别?app.route()
返回的是不是Router的实例?
router 就是一个 mini 的 app。router 可以更细的划分 controller
var http = require(‘http’); var server = http.createServer(); var app = server;
app = express(); 就是做了上面的事情,另外还做了一些别的事情, 比如app.stack = {}; app.stack.a = function (req, res, next) {…}; app.stack.b = function (req, res, next) {…}; … app.use = function (arg) {… 操作this.stack…} 大致这么个意思.
这也是我特别不喜欢也不用express的原因, 我觉得他的设计者在api的水平并不是很高明。 作者完全采用包装server, 然后在上边通过运行时的差异化继承(你可以google一下这个概念)来扩展server对象。 会存在潜在的node版本升级和express函数名冲突的情况。
@perfectworks 感觉它也只介绍了 express.router 的用法,router 能做的 express 也能做,并没说它们的区别在哪里
拜读了一楼推荐的文章,加上自己的理解,觉得app的作用是做一些全局的处理(比如作用全局的中间件的引入等等),而router是开发人员做业务处理的利器(比如你可以通过router去use你自己写的针对某个特定路由的中间件),这样的好处在一楼推荐的文章中写的很清楚,个人觉得他们两个之间有什么不同并不是特别重要,只要搞明白什么时候该用谁就OK了。(我是菜鸟,不喜勿喷,谢谢你。。。)