据我了解(由于我是Elixir的新手,所以我可能是错的),可以选择创建一个包含多个.ex文件的单应用程序Mix项目,每个文件中都包含多个模块。它们可以通过别名,导入等相互使用。
如果是这种情况,在创建过程中“主模块”的目的是隐式(大写的项目名称)还是显式(如mix new ... --module <modulename>
)?
PS:我了解脚本要求在mix.exs
中指定一个主模块,但这不是我在问题中所指的(或者是?)。
答案 0 :(得分:2)
据我了解,您只是在新项目中有一个经过测试的示例模块。但是,很多时候,使这个“主模块”成为API边界是有意义的,其他Elixir代码通过该API边界与应用程序进行交互。
答案 1 :(得分:2)
Elixir系统可能由许多应用程序组成,这些应用程序可以是您自己的应用程序或第三方应用程序,包括lib。将应用程序视为组件,相关代码的“盒子”,实际上,许多库都是应用程序。
主模块是放置所有将由其他应用程序使用的公共功能的地方,换句话说,这就是您的应用程序的公共API。看看像Jason这样的库,您会看到这种模式,例如:https://github.com/michalmuskala/jason/blob/master/lib/jason.ex
但是,如果您要构建基于Phoenix的应用程序而没有分布式应用程序,则尽管我建议您阅读与该主题相关的https://hexdocs.pm/phoenix/contexts.html,但主模块中可能没有任何代码。给您更深刻的了解。