web-dev-qa-db-fra.com

Elixir: quand utiliser les fichiers .ex et quand .exs

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?

65
Ole Spaarmann

.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.

122
Cody Poll

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"
1
Benjamin Hodge

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.

0
Dmitry S.