【问题标题】:Pre-Compiled Templates in PhoenixPhoenix 中的预编译模板
【发布时间】:2016-06-12 16:46:24
【问题描述】:

Phoenix 文档说 “Phoenix 模板经过预编译这一事实使其速度极快。”。

我有几个问题,与 Rails 应用程序之类的东西相比,预编译模板的实际含义是什么?这会对生产产生多大的影响。

【问题讨论】:

    标签: elixir phoenix-framework


    【解决方案1】:

    预编译模板的实际含义是什么

    这里的预编译是指web/templates中的所有模板实际上都编译成对应View中render函数的普通函数子句。

    如果您有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 中的实现。 (在页面中搜索“before_compile”和“defp compile”。)

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

    我确信 Rails 还必须有一个模板缓存机制,至少对于生产来说,而且可能对于开发来说也是如此。我对 Rails 模板的速度/实现不太熟悉,无法对此发表评论。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多