还是想问一下routersmap的问题
来源:7-5 开发后台商品增删改查页面及功能

mylovef
2017-08-04
首先感谢老师在http://coding.imooc.com/learn/qa/119.html问题下的回答,但我还是推导不出来confs和controller,
这里的target应该是作用的类的实例吧,key是类定义的方法,那么routersMap似乎是一个{{target:routes文件夹下得到的实例,
method: 'get', path: path},路由的中间件函数} 这样一个对象的集合
这样怎么就能通过for..in..拿到conf和controller呢?
如果方便的话帮忙写一下详细的推导过程,谢谢
1回答
-
其实你把 Map 打印出来,就见端倪了,比如我本地有一个项目中的 routersMap 是这样的:
Map { { target: pagesController { [Symbol(prefix)]: 'api/v0' }, method: 'get', path: '/login' } => [ [Function], [Function: index] ], { target: pagesController { [Symbol(prefix)]: 'api/v0' }, method: 'get', path: '/query' } => [ [Function], [Function], [Function: query] ], { target: pagesController { [Symbol(prefix)]: 'api/v0' }, method: 'get', path: '/reports' } => [ [Function], [Function: getReports] ], { target: pagesController { [Symbol(prefix)]: 'api/v0' }, method: 'post', path: '/reports' } => [ [Function], [Function: saveReports] ], { target: GraphqlController { [Symbol(prefix)]: '' }, method: 'all', path: '/graphql' } => [Function: allGraphql], { target: pagesController { [Symbol(prefix)]: 'pages' }, method: 'get', path: '/index' } => [Function: index] }
里面的 key value 键值对可以以箭头函数 => 来隔离开看:
key 就是 {target: xx, method: xx, path: xx},把一个对象作为 key, value 就是一个 function 数组。
对于 for (let [ conf, controller ] of routersMap) {
conf 对应到的就是
{ target: pagesController { [Symbol(prefix)]: 'api/v0' },
method: 'get',
path: '/login' }而 controller 对应到的是:
[ [Function], [Function: index] ]
对于 for xx of oo 的用法,可以再来了解下这个:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...of
112017-08-06
相似问题