关于装饰器的疑问

来源:9-4 [第 2 次迭代] 结合 Decorator 对 koa-router 进行抽象封装支持路由空间分离

开天辟地

2018-02-12

老师,您好,看了这章有点小疑问,百思不得其解,controller那个装饰器,为啥symbolPrefix属性要放在原型上,为什么要添加在原型上,而切从头到尾都没看到movieController的实例化,只有Route类的实例化,难道Route实例化后,movieController也会跟着实例化么,为啥就可以用了

写回答

2回答

Scott

2018-02-12

symbolPrefix 只是一个路径的前缀,可以看做是以它为分隔的路径命名空间,它的作用,就是为了拼接出来 koa-router 所需要第一个匹配路由方法的路径: routerPath = prefixPath + conf.path


不需要实例化,能让 koa-router 认识这个 routerPath 就行了,这个 movieController 所在的文件被 require 进来的时候,也就是 target 的原型上就配置了作为命名空间的路径,而在接下来的执行中,movieController 里面的每一个方法,被作为路由中间件执行的时候,都会去拼接完整的路径地址。



0
3
开天辟地
回复
Scott
大概明白了,存在在原型上的属性,不需要实例化就可以访问,老师真是一言点醒梦中人呀,豁然开朗
2018-02-13
共3条回复

godghdai

2018-02-12

controller装饰器传入的target为Constructor,

controller里面方法的装饰器传入的target为Constructor.prototype,

只有放在Constructor.prototype上的属性,在方法的装饰器上才能访问


0
0

Koa2框架从0开始构建预告片网站

Koa2+MongoDB+Parcel+Puppeteer+AntDesign快速搭建预告片网站

751 学习 · 362 问题

查看课程