Views/Templates without Phoenix

I’m sure this has been asked a thousand times but I’m having trouble finding anything.

We currently have a project that doesn’t use Phoenix but does need template/view support. I haven’t found any standalone libraries that provide this functionality but figured I may just not be using the right keywords. I’ve looked through Phoenix’s implementation of templates and views and it seems relatively straight forward. If nothing exists and this is something the community is interested in I could implement something and open source it myself.

Thanks in advance!

1 Like

@anthonator hi!

With the tradeoff of being “that guy”, similar to you, maybe you have been asked a thousand times, but I don’t know about all those times… :slight_smile: but: is there any way you can move the current project inside a new phoenix app? I understand this may not feasible.

But, as you just saw, it is awesome to be able to search for decent results, to be on the same page as others that, in this case, all use Phoenix.

Sorry to be that guy, hope you are having an awesome day @anthonator :heart:

Thanks for the feedback.

Our app has no need for Phoenix. It doesn’t require any sort of HTTP/web support.

I’m wondering what part of Phoenix do you actually need over plain EEx?

1 Like

No worries, interesting use case. So no web support, just templating?

As @LostKobrakai said, EEx comes with Elixir itself. If that gives you what you want

https://hexdocs.pm/eex/EEx.html

1 Like

True, I can use EEx by itself but I find it’s usage cumbersome compared to the templating support that Phoenix provides. Perhaps I haven’t found a pattern that I like using plain EEx.

you might want to look at ErlDTL which gives you django templates that compile down to a module.

Thanks for the suggestion. I’d prefer to stay in Elixir land so any non-EEx templating is a non-starter.

I do not know if I’m getting it right, but a little wrapper around EEx’s compile_file would be enough, no?

Here’s what I’ve come up with for now.

defmodule MyApp.Views.PasswordReset do
  require EEx
  
  @root "lib/myapp/templates/password_reset"

  EEx.function_from_file(:def, :request, Path.join(@root, "request.html.eex"), [:assigns])
end
1 Like

That’s basically all phoenix does. ^.^