Какова цель «основного модуля» при создании нового проекта Mix? - PullRequest
2 голосов
/ 08 июля 2019

Насколько я понимаю (и я могу ошибаться, поскольку я новичок в Elixir), можно создать проект Mix для одного приложения с несколькими файлами .ex, в каждом из которых будет несколько модулей.И они могут использоваться друг с другом через псевдоним, импорт и т. Д.

Если это так, какова цель «основного модуля» при создании, либо неявно (имя проекта в верхнем регистре), либо явно (какin, mix new ... --module <modulename>)?

PS: Я понимаю, что для сценариев требуется указать основной модуль в mix.exs, но это не то, что я имею в виду в своем вопросе (или я?).

Ответы [ 2 ]

2 голосов
/ 08 июля 2019

Система Elixir может состоять из множества приложений, которые могут быть вашими собственными приложениями или сторонними приложениями, включая libs.Думайте о приложении как о компоненте, как о «ящике» связанного кода, на самом деле многие библиотеки являются приложениями.

А основной модуль - это место, где вы размещаете все общедоступные функции, которые будут использоваться другими приложениями,другими словами, это публичный API для вашего приложения.Взгляните на некоторых библиотек, таких как Jason, и вы увидите этот шаблон, например: https://github.com/michalmuskala/jason/blob/master/lib/jason.ex

Но если вы создаете приложение на основе Phoenix без распределенных приложений, у вас, вероятно, не будет никакого кодав основном модуле, хотя я рекомендую вам прочитать https://hexdocs.pm/phoenix/contexts.html, который связан с этой темой и даст вам более глубокое понимание.

2 голосов
/ 08 июля 2019

Насколько я понимаю, просто иметь протестированный пример модуля в вашем новом проекте.Однако часто имеет смысл сделать этот «основной модуль» границей API, через которую другой код Elixir взаимодействует с приложением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...