Hi everyone!
I just found this post (Reusable Templates in Phoenix) by @danielberkompas. I also write server side components in Phoenix and would like to know how you write your templates!
My code looks like this:
web/templates/user_account/edit.eex
<%= top_bar do %>
<%= top_bar_title gettext("Edit user account") %>
<%= top_bar_submit gettext("Update"), form: "user_account_form" %>
<%= top_bar_link gettext("Back"), to: user_account_path(@conn, :index) %>
<% end %>
<%= render "form.html", changeset: @changeset,
action: user_account_path(@conn, :update, @user_account) %>
web/templates/user_account/form.eex
<%= form_for @changeset, @action, [id: "user_account_form"], fn f -> %>
<%= box do %>
<%= box_heading gettext("Security") %>
<%= box_password_input f, :password, gettext("Password") %>
<%= box_password_input f, :password_confirmation, gettext("Password confirmation") %>
<%= hidden_input f, :employee_id %>
<% end %>
<% end %>
web/templates/components.ex
defmodule App.Components do
use App.Web, :view
defmacro __using__(_) do
quote do
import App.Components, except: [render: 2, template_not_found: 2]
end
end
def top_bar(do: content) do
~E"""
<div class="top-bar w-clearfix">
<%= content %>
</div>
"""
end
def top_bar_title(title) do
~E"""
<div class="top-bar-heading"><%= title %></div>
"""
end
def top_bar_subtitle(subtitle) do
~E"""
<div class="top-bar-subheading">(<%= subtitle %>)</div>
"""
end
def top_bar_link(title, attributes \\ []) do
link(title, [class: "button top-bar-button"] ++ attributes)
end
def top_bar_submit(title, attributes \\ []) do
submit(title, [class: "button top-bar-button"] ++ attributes)
end
# ...
end
Can you tell me if using ~E
is faster or slower than function call like content_tag/2
?