Phoenix中的预编译模板

时间:2016-06-12 05:21:29

标签: elixir phoenix-framework

菲尼克斯文档说"凤凰模板预先编译的事实使得它们非常快。"

我有一些问题,预编译模板实际上意味着什么,以及与Rails应用程序相比,这将在生产中产生多大的重要差异。

1 个答案:

答案 0 :(得分:4)

  

预编译模板实际意味着什么

此处预编译意味着web/templates中的所有模板实际上都已编译为相应renderView函数的正常函数子句。

如果您在PostView中有web/templates/posts/index.html.eex和模板,其内容为:

<pre><%= inspect(@posts) %></pre>

然后将该文件与向PostView添加以下函数几乎完全相同:

def render("index.html", assigns) do
  "<pre>" <> inspect(assigns[:posts]) <> "</pre>"
end

*几乎是因为Phoenix在注入字符串之前处理自动HTML转义(以防止XSS),返回iolists而不是连接二进制文件(用于性能)等等。

Here's在Phoenix中实现这个编译逻辑。 (在页面上搜索&#34; before_compile&#34;和&#34; defp compile&#34;)

  

与Rails应用程序相比,它在生产中会产生多大的显着差异

我确信Rails也必须有一个模板缓存机制,至少对于生产而言,也可能用于开发。我对Rails&#39;的速度/实现并不熟悉。模板以对此发表评论。