大型共享代码库,扩展功能

时间:2013-03-27 00:32:35

标签: javascript javascriptmvc large-scale

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

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

目前我们想到的选项是:

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

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

c:在核心内部实现一个带有无限挂钩的模块化系统(插件),并通过settings.json

配置加载/启用哪些插件

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

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

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

如果有人对我们已经想到的任何选项有任何经验,并且如果有人知道另一种更适合的选项,那将会有什么好处。

1 个答案:

答案 0 :(得分:0)

倾向于选择C.

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

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

Mediator,Facade,Pub / Sub pattersn与模块化组件配合得非常好,并且与模块加载器相结合,如RequireJS,那么您就拥有了大规模应用的良好基础。我在工作中使用过它,发现它是保持一切井井有条,易于维护的绝佳方式。

相关问题