我正在考虑在Elixir中建立一个项目。因此,我正在研究伞式应用程序,但看不到使用它们的任何好处。
是否有任何与构建速度或代码清晰性有关的好处?
使用伞形结构的一个优点是应用程序被构造为独立的应用程序。这可以帮助在应用程序之间提供更清晰的界限,并分离应用程序关注点。例如,伞中的应用程序应仅调用另一个伞应用程序的公共api。但是,这不是强制性的,仍然可以调用私有api。
伞形应用程序具有自己的配置文件,测试和单独的mix.exs
文件,由于伞形,它们可以作为一个大应用程序进行编译,运行和测试。但是,在应用程序目录中(在apps/app_name
中)工作时,仍然可以独立运行和测试单个应用程序。
我认为这也可能有弊端。伞的一个缺点是您需要管理1 + app_count
个不同的配置和混合文件。此外,您的源文件将嵌套得更深,例如在apps/app_name/lib/app_name/...
中显示,而不仅仅是lib/app_name
,这使得导航源代码更加困难。
[在许多情况下,我发现伞式应用程序对于我正在从事的项目不是必需的,因为伞式应用程序永远都不会独立运行。伞的替代方法是在lib/
文件夹中有一个具有不同名称空间的项目,同时仍将其视为具有单独职责的应用程序。