一个关于Egg继承的问题
发布于 5 年前 作者 paoloo1995 3546 次浏览 来自 问答

官方推荐的框架扩展方式,是export出一个函数。例如,要扩展一个BaseService就在框架中export一个service函数就好了,剩下的事情交给egg

但是我想了下,似乎export一个继承了egg.Service基类的BaseService类,然后工程里直接继承BaseService也行?Controller、Application、Agent等都同理

这种方式我想了下应该没问题,大致翻了下egg代码,写了个demo试试也没问题。但是为什么没看到有人这么用呢?

这种方式的话,不需要每次继承重写eggPath,我觉得似乎更方便一些?

4 回复

Egg 代码复用有很多层的,一般通过插件就可以了,可以看下 Egg 渐进式开发那篇文档

上层框架一般是团队里针对某个业务场景做的封装。

@atian25 是的,就是说这种业务封装的情况。对于业务封装,直接继承似乎也没什么问题?有什么场景是必须用egg推荐的那种扩展框架的方式的吗?

@atian25 我的理解egg推荐的方式本质是mixin,从能力上说似乎和继承差不多?所以有些好奇为什么推荐的框架扩展方式不是继承呢?

@paoloo1995

mixins 是多个的,继承可没办法自由组合。

上层业务框架的场景,譬如蚂蚁金服的业务,必须用到 N 个 egg 插件,然后还有一些默认值啥的,就可以把这些框架封装为一个框架,给开发者直接使用,这样框架维护者可以很方便的升级框架和管控。

你把框架理解为是适用于某类场景的插件+默认配置的集合体。

社区里面有 beidou 和 midway (这个不是标准的 egg 上层框架)这几个上层框架。

回到顶部