Elixir\'s documentation states that
In addition to the Elixir file extension .ex, Elixir also supports .exs files for scripting. Elixir treats both
Elixir will compile the whole .ex file. .exs Files are compiled as well but are meant to be executed when invoked. So, most use cases of .exs files are to execute code immediately when called. Think of using .exs files for testing, migrating data and running scripts. Think of .ex files as being used for your application's main business logic.
Consider this example
.ex sample
sum.ex
defmodule Sum do
add(a, b) do
a + b
end
end
$ iex sum.ex
iex> Sum.add(1,2)
3
.exs sample
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"