Egg.js 模型、控制器、Service 文件过多怎么拆分
发布于 6 年前 作者 wiviwiv 2830 次浏览 来自 问答

使用 Egg.js 做一个工程,因为功能较多,然后为了遵循模型、控制器放在 ./model ./controller 的约定,每个文件夹下面都有很多文件。 如图所示

当然我知道可以使用文件夹嵌套层级,如下所示:

- model
  - test
    - hello.js
	
// 使用是这样的
app.model.Test.Hello

// 期望是这样的
app.model.Hello

能不能实现期望中这样

或者有没有其他比较好的拆分方案?

9 回复

文件命名我懂,但是不在此话题吐槽范围 ️😂

那你的 app/model/test/hello.jsapp/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 代理

回到顶部