<分区>
我们的应用程序是一个大型 Javascript 应用程序,使用 Javascript MVC 框架。我们通过 SVN:external 在所有网站上使用 MVC 应用程序文件夹,每个网站也有自己的文件。设置文件特定于站点。
我们要求系统能够为每个站点提供不同的功能。核心功能应该保持不变。我们需要扩展核心代码,同时为当前和新开发人员保留可维护的解决方案。
目前我们想到的方案是:
a:在核心中嵌入功能条件,并通过设置文件打开/关闭功能
b: 覆盖/继承现有的 Controller
c:在核心中实现一个具有无限 Hook 的模块化系统(插件),并通过 settings.json 配置加载/启用哪些插件
方案a存在难以长期维护的问题,而且比较hacky。
选项b已经实现,但是很难维护(好像我们有一个新功能,如果它被覆盖我们必须编辑每个站点的文件
选项 c 是我们最近想到的一种解决方案,用于尝试解耦修复(通过使用共享(插件) Controller 和编辑特定于站点的设置文件。
最好知道是否有人对我们已经想到的任何选项有任何经验,以及是否有人知道另一个更合适的选项。