polypush135
Thinking about writing a custom adapter for Svelte serverside rendering (SSR) via Phoenix HTML Views
So I’ve been digging into svelte the last few days and I have to say I’m really hooked.
I’m not going to spend this time telling you why you should given it an honest try.
That said its still lacking something that I feel will just put it over the top as being my favorite stack.
I’m envisioning what a custom Svelte adapter would look like for doing SSR with svelte but via Phoenix Heex. I know there is already GitHub - woutdp/live_svelte: Svelte inside Phoenix LiveView with seamless end-to-end reactivity · GitHub
But I want to go more abstract than that and not use really any fronted on Phoenix (ie no liveview) and just use Phoenix as a way to possible aid in doing SSR for svenlte like looking up records as a part of the initial request and inital html payload.
At the moment this is just a nebulas idea and I am looking for any input.
Thoughts? Considerations?
FYI: I’m starting with this as my first steps. Writing adapters • SvelteKit Docs
Some initial thoughts:
-
Request Handling: A web request is received by the Phoenix server. Phoenix’s routing determines the correct controller and action to handle the request.
-
Invoking JavaScript Runtime: Within the controller action, the Phoenix server needs to interact with a JavaScript runtime to render the Svelte components. This can be achieved through:
- External Node.js process: Phoenix can make a call to a Node.js process that handles the rendering of Svelte components.
- Embedded JavaScript interpreter: Using tools like ExecJS in Ruby, though an Elixir equivalent would be needed.
-
Rendering Svelte Components: The JavaScript runtime receives the data and renders the Svelte components server-side. This step involves:
- Converting Elixir data structures to a format understandable by JavaScript.
- Running the Svelte compiler to generate HTML and CSS.
-
Returning Rendered Content: The rendered HTML and CSS from Svelte are returned to the Phoenix server.
-
Phoenix View Integration:
- The returned HTML can be integrated into Phoenix templates (eex or leex). Phoenix Views can then be used to inject this HTML into the overall page template.
- Alternatively, the Phoenix response can be constructed to directly send back the rendered HTML and CSS, bypassing traditional templates.
-
Sending Response to Client: Finally, the Phoenix server sends the response back to the client, which includes the server-rendered HTML of the Svelte components.
Popular in Discussions
Other popular topics
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #deployment
- #library
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #channels
- #elixirconf
- #exunit
- #discussion
- #code-sync
- #javascript
- #podcasts
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #elixir-ls
- #phoenix_html
- #iex
- #blog-post
- #graphql
- #genstage
- #ai
- #websockets
- #supervisor
- #advent-of-code
- #elixirconf-us
- #distillery
- #processes
- #forms
- #api
- #metaprogramming
- #security
- #performance









