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

标签 javascript javascriptmvc large-scale

<分区>

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

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

目前我们想到的方案是:

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

b: 覆盖/继承现有的 Controller

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

方案a存在难以长期维护的问题,而且比较hacky。

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

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

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

最佳答案

倾向于选项C。

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

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

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

关于javascript - 大型共享代码库,扩展功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15649970/

相关文章:

javascript - 如何使用基于 3 个独立输入的 Javascript 检查用户的年龄

JavaScript 转a href 的麻烦

pyspark - 在大型 PySpark 数据帧的每一行中应用一个函数?

javascript - Controller 之间的 Angular 服务

javascript - javascript 和 html 出现问题

javascript - 缓存服务器响应(AngularJS,延迟)

php - EJS 有多大用处?

javascript - 有没有没有外部依赖的 JavaScript MVC 框架?

c++ - 如何用Ceres解决大规模非线性优化问题?

MySQL 一张表与多张表的性能对比