使用 Egg.js 做一个工程,因为功能较多,然后为了遵循模型、控制器放在 ./model
./controller
的约定,每个文件夹下面都有很多文件。
当然我知道可以使用文件夹嵌套层级,如下所示:
- model
- test
- hello.js
// 使用是这样的
app.model.Test.Hello
// 期望是这样的
app.model.Hello
能不能实现期望中这样
或者有没有其他比较好的拆分方案?
文件命名我懂,但是不在此话题吐槽范围 ️😂
那你的 app/model/test/hello.js
和 app/model/other/hello.js
冲突怎么办
@atian25 肯定是不会存在这种的,模型名是唯一的,但是不同的模型希望按照业务放到不同的文件夹下
所以,这不是通用需求,你无法约束开发者会不会放置同名。
除非对应的插件的 loader 支持,可以看下对应的插件的源码。
或者你可以在启动期用 glob 获取下 model 列表,然后对 ctx.model 加一个 Proxy,做下别名。
根据业务类别给controller下的文件建立各自的类别目录不就行了 比如 controller=>fruits[apple,banana],service也可以这样,model就无所谓了,没必要分类
@phper-chen 楼主的意思是想分目录放置,但挂载后是扁平化的
@atian25 好,我试下在 app.beforeStart
生命周期中根据对象类型做一个位移处理,全部挪到第一层。
你这个量级真不多~
@wiviwiv 不是位移,而是 Proxy 代理