官方推荐的框架扩展方式,是export出一个函数。例如,要扩展一个BaseService就在框架中export一个service函数就好了,剩下的事情交给egg
但是我想了下,似乎export一个继承了egg.Service基类的BaseService类,然后工程里直接继承BaseService也行?Controller、Application、Agent等都同理
这种方式我想了下应该没问题,大致翻了下egg代码,写了个demo试试也没问题。但是为什么没看到有人这么用呢?
这种方式的话,不需要每次继承重写eggPath,我觉得似乎更方便一些?
Egg 代码复用有很多层的,一般通过插件就可以了,可以看下 Egg 渐进式开发那篇文档。
上层框架一般是团队里针对某个业务场景做的封装。
@atian25 是的,就是说这种业务封装的情况。对于业务封装,直接继承似乎也没什么问题?有什么场景是必须用egg推荐的那种扩展框架的方式的吗?
@atian25 我的理解egg推荐的方式本质是mixin,从能力上说似乎和继承差不多?所以有些好奇为什么推荐的框架扩展方式不是继承呢?
mixins 是多个的,继承可没办法自由组合。
上层业务框架的场景,譬如蚂蚁金服的业务,必须用到 N 个 egg 插件,然后还有一些默认值啥的,就可以把这些框架封装为一个框架,给开发者直接使用,这样框架维护者可以很方便的升级框架和管控。
你把框架理解为是适用于某类场景的插件+默认配置的集合体。
社区里面有 beidou 和 midway (这个不是标准的 egg 上层框架)这几个上层框架。