Yes it works. To summarize what to do to use LV 0.18-HTMLEngine as a template engine:
# mix.exs / deps
[
{:jason, "~> 1.4.0"},
{:phoenix_live_view, "~> 0.18"}
]
# config.exs
import Config
# only to make Phoenix happy
config :phoenix, :json_library, Jason
# sample.ex
defmodule Sample do
require EEx
source = "sample.html.heex"
EEx.function_from_file(
:def,
:sample,
source,
[:assigns],
engine: Phoenix.LiveView.HTMLEngine,
caller: __ENV__,
source: source
)
def render(assigns) do
sample(assigns) |> Phoenix.HTML.Safe.to_iodata() |> to_string()
end
def render_to_file(path, assigns) do
# writing to a file does not need to_string
sample(assigns)
|> Phoenix.HTML.Safe.to_iodata()
|> then(fn data -> File.write!(path, data) end)
end
end
# my_component.ex
defmodule MyComponent do
use Phoenix.Component
def greet(assigns) do
~H"""
<p>Hello, <%= assigns.name %></p>
"""
end
end
# sample.html.heex
<MyComponent.greet name={@name} />
# iex(1)> Sample.render(%{name: "World"})
# "<p>Hello, World</p>"






















