2

我们的应用程序是一个大型的 Javascript 应用程序,使用 Javascript MVC 框架。我们通过 SVN:external 在所有站点中使用 MVC 应用程序文件夹,每个站点也有自己的文件。设置文件特定于站点。

我们要求系统能够为每个站点提供不同的功能。核心功能应该保持不变。我们需要扩展核心代码,同时为当前和新开发人员提供可维护的解决方案。

目前我们想到的方案有:

a:在核心中嵌入功能条件并通过设置文件打开/关闭功能

b:覆盖/继承现有控制器

c:在核心内实现一个具有无限钩子的模块化系统(插件),并通过 settings.json 配置加载/启用哪些插件

选项 a 存在难以长期维护的问题,并且相当 hacky。

选项 b 已经实现,但很难维护(好像我们有一个新功能,如果每个站点的文件被覆盖,我们必须编辑它

选项 c 是我们最近考虑尝试和解耦修复的解决方案(通过使用共享(插件)控制器并编辑特定于站点的设置文件。

最好知道是否有人对我们已经想到的任何选项有任何经验,以及是否有人知道另一个更合适的选项。

4

1 回答 1

0

倾向于选项 C。

大规模应用程序将在很大程度上受益于遵循模块化模式。您可以保持代码松散解耦,以便将来更好地维护,同时也允许许多开发人员一次处理单个部分。并通过站点特定的设置文件加载您的核心模块和插件。

我建议您查看 Addy Osmani 关于大规模应用主题的文章:

Mediator、Facade、Pub/Sub 模式与模块化组件配合得非常好,再加上像RequireJS这样的模块加载器,你就为大规模应用打下了良好的基础。我在工作中使用过它,发现它是保持一切井井有条且易于维护的绝佳方式。

于 2013-03-27T00:41:35.943 回答