查看源代码 EEx.SmartEngine (EEx v1.16.2)

EEx 使用的默认引擎。

它包括分配(如 @foo)以及未来可能的其他便利功能。

示例

iex> EEx.eval_string("<%= @foo %>", assigns: [foo: 1])
"1"

在上面的示例中,我们可以使用 @foo 访问绑定 assigns 下的值 foo。这很有用,因为模板在编译后可以接收不同的分配,并且不需要为每个变量集重新编译。

分配也可以在编译为函数时使用

# sample.eex
<%= @a + @b %>

# sample.ex
defmodule Sample do
  require EEx
  EEx.function_from_file(:def, :sample, "sample.eex", [:assigns])
end

# iex
Sample.sample(a: 1, b: 2)
#=> "3"