为什么需要在项目的应用程序中列出库依赖项?

Bra*_*don 2 elixir erlang-otp

库依赖项(仅提供函数)被列为应用程序的目的是什么?

例如,left_pad项目建议在仅提供简单功能时将其作为应用程序包含在内.

def application do
  [applications: [:left_pad]]
end
Run Code Online (Sandbox Code Playgroud)

Elixir软件包是否应始终作为应用程序提供?新的库开发人员如何使其依赖项可用作应用程序?这提供了哪些其他功能?

Gre*_*reg 5

看看这个问题:用erlang.mk指定app启动顺序

基本上,您的应用程序所依赖的所有应用程序都保证在您的应用程序启动之前启动.

但是,如果应用程序中的某个函数调用尚未加载的模块中的另一个函数,并且该模块位于从其返回的其中一个路径中get_path/0,则VM将自动加载该模块.

但是,在使用发布处理程序进行发布时(请参阅此问题以获取更多信息以及Erlang的官方文档),只有特定的应用程序才会进入发布版本 - 您明确指定的应用程序reltool.config和依赖于它们的应用程序.如果您的应用程序使用库应用程序并且您既未在应用程序文件中也未在发布配置文件中列出它,则它将不会部署到生产系统,并且您的应用程序将无法从该应用程序调用该函数.图书馆申请.

是的,正如michalmuskala所指出的,依赖列表也是发布处理程序在计算使用发布处理程序升级版本时重新加载模块的顺序时要考虑的因素.

总而言之,它在开发环境中并不重要,但它是一个很好的实践,如果您在将内容部署到生产环境时正在进行适当的Erlang发布,则需要这样做.