请教模块化开发和扩展包开发,应该用哪个?

以前一直用模块化开发来着,看到Laravel文档里有扩展包开发,可以用Composer安装,感觉比模块化方便,不禁眼前一亮。

我希望的使用场景是这样的:

  • 先做一个核心系统
  • 然后功能1、功能2、功能3……全部解耦,可按需开发和部署。

但我看了半天文档,还是有些问题没弄清楚,特来请教大家:

  1. 扩展包开发可以使用Laravel里的全部功能么,比如Eloquent ORM(手册里并未提到)等?
  2. 在希望的使用场景中,模块化开发和扩展包开发哪个更科学?

感谢各位答疑解惑!

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
fatrbaby
最佳答案

个人的理解:和业务强关联,直接交互数据存储的,就开发成模块。基础设施,如邮件发送、短信发送这些可以脱离业务的,可以做到扩展包里面。

4年前 评论
讨论数量: 6
fatrbaby

个人的理解:和业务强关联,直接交互数据存储的,就开发成模块。基础设施,如邮件发送、短信发送这些可以脱离业务的,可以做到扩展包里面。

4年前 评论
sanders

我觉得主要看要实现的目标,我们的项目当前的目标就是要做到不同的客户部署不同的功能,所以我们采用了扩展包方案:

  1. 核心项目可以独立部署运行,也可以安装不同的扩展包来运行;
  2. 扩展包主要依赖核心业务逻辑,各个客户定制的部分同样采用扩展包方案进行开发;
  3. 部署某个项目实例,若核心项目若要引用扩展包中的逻辑,需要预制管道,并通过管道配置来引用扩展包中的逻辑;
  4. 扩展包之间若需要相互引用,则在功能发起的位置预制管道,并通过项目实例中的配置来进行引用;

实际实践过程中,管道的使用其实挺麻烦的,需要对管道的定义建立完善的文档,这也是我们在快速开发中所缺乏的。

4年前 评论

@fatrbaby 有道理,应该是这么设计才合理,只不过是模块部署比较麻烦。感谢!

4年前 评论

@shijie1991 谢谢,我也研究看看。

4年前 评论

@sanders 感谢分享宝贵的开发经验,扩展包之间若存在依赖关系,做起来确实复杂。

4年前 评论
sanders 4年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!