还是想问一下routersmap的问题

来源:7-5 开发后台商品增删改查页面及功能

mylovef

2017-08-04

首先感谢老师在http://coding.imooc.com/learn/qa/119.html问题下的回答,但我还是推导不出来confs和controller,http://szimg.mukewang.com/5983f1bc0001684208260256.jpg

这里的target应该是作用的类的实例吧,key是类定义的方法,那么routersMap似乎是一个{{target:routes文件夹下得到的实例,

method: 'get', path: path},路由的中间件函数} 这样一个对象的集合

这样怎么就能通过for..in..拿到conf和controller呢?

如果方便的话帮忙写一下详细的推导过程,谢谢


写回答

1回答

Scott

2017-08-06

其实你把 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


1
1
mylovef
非常感谢!
2017-08-06
共1条回复

开发微信全家桶项目Vue/Node/MongoDB高级技术栈全覆盖

Nuxt/Vue SSR + Koa2 跨栈开发微信公众号+小程序

989 学习 · 401 问题

查看课程