伞式应用程序的好处是什么?

ipi*_*nak 1 elixir

我正在考虑在 Elixir 中构建一个项目。所以,我正在研究伞形应用程序,但我看不到使用它们的任何好处。

是否有与构建速度或代码清晰度或其他方面相关的任何好处?

sko*_*and 5

使用伞状结构的一个优点是应用程序被构建为独立的应用程序。这有助于在应用程序之间提供更清晰的界限并分离应用程序关注点。例如,伞中的一个应用程序应该只调用另一个伞形应用程序的公共 api。但是,这不是强制执行的,仍然可以调用私有 api。

保护伞中的各个应用程序都有自己的配置文件、测试和单独的mix.exs文件,这些文件可以作为一个大应用程序进行编译、运行和测试,因为它们都在保护伞中。但是,在应用程序目录 (in apps/app_name) 中工作时,单个应用程序仍然可以独立运行和测试。

在我看来,这也可能有缺点。伞的一个缺点是您需要管理1 + app_count不同的配置和混合文件。此外,您的源文件将嵌套得更深,例如 inapps/app_name/lib/app_name/...而不仅仅是lib/app_name,这使得导航源代码变得更加困难。

在许多情况下,我发现我正在从事的项目不需要伞形应用程序,因为伞形应用程序无论如何都不会独立运行。通常,我更喜欢在lib/文件夹中拥有具有不同命名空间的项目,同时仍将它们视为具有不同职责的应用程序。

elixir-lang.org 上的“依赖项和伞式项目”文档