2016-06-12 14 views
1

フェニックスのドキュメントによると、"フェニックスのテンプレートがプリコンパイルされているため、非常に高速になります。"Pre-Compiled Templates in Phoenix

私はいくつかの質問があります。これは、事前にコンパイルされたテンプレートが実際に意味するものと、Railsアプリケーションのようなものと比べてどれだけ大きな違いが生まれているかです。

答えて

4

事前コンパイルテンプレートが実際に

はここで事前にコンパイル何を意味するのは、web/templates内のすべてのテンプレートは実際に対応するViewrender機能の正常な機能の条項にコンパイルされていることを意味します。

あなたは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フェニックスでのこのコンパイルロジックの実装。 (ページの「defpコンパイル」「before_compile」を検索して。)

を、これは私はRailsのアプリケーション

のようなものに比べて、生産になりますどのように有意差の多くRailsには、少なくとも本番用で、おそらくは開発用のテンプレートキャッシング機構も必要です。私は、Railsのテンプレートのスピード/実装にはこれに触れてあまり知られていません。