Elixirs Documentation indique que
En plus de l'extension de fichier Elixir .ex, Elixir prend également en charge les fichiers .exs pour les scripts. Elixir traite les deux fichiers exactement de la même manière, la seule différence est dans l'intention. Les fichiers .ex sont destinés à être compilés tandis que les fichiers .exs sont utilisés pour les scripts, sans avoir besoin de compilation.
Mais je ne sais toujours pas quand utiliser quel type de fichier. Quels sont les inconvénients et à quoi servent les fichiers .ex et .exs?
.ex
est pour le code compilé, .exs
est pour le code interprété.
Les tests ExUnit, par exemple, sont dans .exs
fichiers afin que vous n'ayez pas à recompiler chaque fois que vous modifiez vos tests. Si vous écrivez des scripts ou des tests, utilisez .exs
des dossiers. Sinon, utilisez simplement .ex
fichiers et compilez votre code.
En ce qui concerne les avantages/inconvénients, l'interprétation prendra plus de temps à exécuter (comme l'élixir doit analyser, tokenize, etc.), mais ne nécessite pas de compilation pour s'exécuter. C'est à peu près tout - si la flexibilité de l'exécution des scripts est plus importante que le temps d'exécution optimisé, utilisez .exs
. La plupart du temps, vous utiliserez .ex
.
Elixir compilera l'intégralité du fichier .ex. Les fichiers .exs sont également compilés mais sont destinés à être exécutés lorsqu'ils sont appelés. Ainsi, la plupart des cas d'utilisation des fichiers .exs consistent à exécuter du code immédiatement lors de l'appel. Pensez à utiliser des fichiers .exs pour tester, migrer des données et exécuter des scripts. Considérez les fichiers .ex comme étant utilisés pour la logique métier principale de votre application.
Considérez cet exemple
. ex exemple
sum.ex
defmodule Sum do
add(a, b) do
a + b
end
end
$ iex sum.ex
iex> Sum.add(1,2)
3
exemple .ex
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"
Je le vérifie dans Elixir version 1.9.1 et les deux extensions .ex
, .exs
sera compilé avec elixirc
. Un autre mot, nous obtenons le bytecode (.beam
fichier) dans les deux cas.