在大型骨干项目中使用子应用程序是否切实可行

时间:2014-02-10 15:04:59

标签: javascript backbone.js web marionette

我正在开展一个大型项目,其中包括逻辑上看起来很多小型应用程序,目前的计划是拥有一个控制器应用程序来管理子应用程序和一些全局事件总线,通过它们可以通信。子应用程序将呈现为iFrame,它必须通过上述事件总线与父应用程序通信。

从广义上讲,这是一种明智的做法,是否有人对这种规模的应用有任何材料?

2 个答案:

答案 0 :(得分:1)

是的,这是一种明智的做法。不仅如此,它基本上是大型应用程序唯一理智的方法:分解它们,以免它们在复杂性下崩溃。

Marionette已经有一个应用程序级别的事件总线(以及用于子应用程序的独立事件总线,以及创建自己的事件的可能性),因此您不必担心这一点。

至于使用子应用的示例,您可以查看我的Marionette book附带的源代码以获取灵感:https://github.com/davidsulc/marionette-gentle-introduction

答案 1 :(得分:0)

嗯,一般来说,在大型项目上工作时,我们或多或少都在制作子应用程序。如果我发现在不同的地方使用的功能,如果它太大/逻辑上与其他东西分开 - 将它提取到分离的实体中是个好主意。

这些实体名为 - modules.

他们经常通过一些全球事件总线,一些消息服务进行通信。 我想你知道利润来自于使用这些技术:

  • 少重复代码,
  • 更好的代码结构(层分离,单个模块的完整性,重用代码的某些部分的可能性)等......

我不认为这个问题是关于某个特定的JS框架,但是当我们讨论Backbone时,我建议您只看一下这个演示文稿 - https://www.youtube.com/watch?v=0o2whtCJw8I

所以在这里,即使没有关于你的项目的更多信息,我认为你必须将你的大项目细分为子模块。不是问题。

我的问题是 - 为什么要在iFrames中制作这些子应用程序。我认为唯一合理的理由可能是 - 您必须提供在不同站点上共享子应用程序小部件的功能。 否则它只会在任何方面给你增加系统的复杂性:

  • 子应用程序的样式化
  • 子应用的预生产缩小(因为你不想只将所有内容都包含在每个iframe中,对吧?);
  • 子应用程序的通信等。