Эликсир: когда использовать .ex и когда .exs файлы
Документация Elixirs гласит, что
В дополнение к расширению файла Elixir.ex, Elixir также поддерживает .exs для сценариев. Эликсир рассматривает оба файла точно так же путь, единственное различие заключается в намерении..ex файлы должны быть скомпилированы, в то время как файлы .exs используются для сценариев, без необходимости сборник.
Но я все еще не уверен, когда использовать тип файла. Каковы нижние и конечные цели .ex и .exs?
Ответы
Ответ 1
.ex
предназначен для скомпилированного кода, .exs
предназначен для интерпретируемого кода.
Тесты ExUnit, например, находятся в файлах .exs
, поэтому вам не нужно перекомпилировать каждый раз, когда вы вносите изменения в свои тесты. Если вы пишете сценарии или тесты, используйте файлы .exs
. В противном случае просто используйте файлы .ex
и скомпилируйте свой код.
Что касается плюсов/минусов, интерпретация займет больше времени (поскольку эликсир должен анализировать, токенизировать и т.д.), но не требует компиляции для запуска. В значительной степени это - если гибкость запуска скриптов важнее оптимизированного времени выполнения, используйте .exs
. В большинстве случаев вы будете использовать .ex
.
Ответ 2
Elixir скомпилирует весь файл .ex. Файлы .exs также компилируются, но должны выполняться при вызове. Таким образом, большинство случаев использования файлов .exs заключается в немедленном выполнении кода при вызове. Подумайте об использовании файлов .exs для тестирования, переноса данных и запуска скриптов. Представьте, что файлы .ex используются в основной бизнес-логике вашего приложения.
Рассмотрим этот пример
пример .ex
sum.ex
defmodule Sum do
add(a, b) do
a + b
end
end
$ iex sum.ex
iex> Sum.add(1,2)
3
пример .exs
sum.exs
defmodule Sum do
def add(a,b) do
a + b
end
end
#within same file
IO.puts "The sum of 3 + 2 is: #{inspect Sum.add(3, 2}"
$ elixir sum.exs
->> "The sum of 3 + 2 is: 5"
Ответ 3
Я проверяю это в Elixir версии 1.9.1, и оба расширения .ex
, .exs
будут скомпилированы с elixirc
. Другими словами, мы получаем байт-код (файл .beam
) в обоих случаях.
Ответ 4
В Elixir существуют два типа файла: script (с расширением .exs) и файл кода (с расширением .ex). Разница в том, что файлы с расширением .ex предназначены для компиляции с помощью elixirc, в то время как .exs предназначены для непосредственного использования с elixir.
Источник: http://blog.distortedthinking.agency/articles/functions-functions-and-more-functions/