View Source Temple (Temple v0.9.0)
Temple syntax is available inside the temple, and is compiled into efficient Elixir code at compile time using the configured EEx.Engine.
You should checkout the guides for a more in depth explanation.
usage
Usage
defmodule MyApp.HomePage do
import Temple
def render() do
assigns = %{title: "My Site | Sign Up", logged_in: false}
temple do
"<!DOCTYPE html>"
html do
head do
meta charset: "utf-8"
meta http_equiv: "X-UA-Compatible", content: "IE=edge"
meta name: "viewport", content: "width=device-width, initial-scale=1.0"
link rel: "stylesheet", href: "/css/app.css"
title do: @title
end
body do
header class: "header" do
ul do
li do
a href: "/", do: "Home"
end
li do
if @logged_in do
a href: "/logout", do: "Logout"
else
a href: "/login", do: "Login"
end
end
end
end
main do
"Hi! Welcome to my website."
end
end
end
end
end
end
configuration
Configuration
engine
Engine
By default Temple wil use the EEx.SmartEngine, but you can configure it to use any other engine. Examples could be Phoenix.HTML.Engine or Phoenix.LiveView.Engine.
config :temple, engine: Phoenix.HTML.Engine
aliases
Aliases
You can add an alias for an element if there is a namespace collision with a function. If you are using Phoenix.HTML, there will be namespace collisions with the <link> and <label> elements.
config :temple, :aliases,
label: :label_tag,
link: :link_tag,
select: :select_tag
temple do
label_tag do
"Email"
end
link_tag href: "/css/site.css"
endThis will result in:
<label>
Email
</label>
<link href="/css/site.css">