É ESSE TAL DE PHOENIX LIVEVIEW? Segundo a documentação do próprio: LiveView provides rich, real-time user experiences with server-rendered HTML. LiveView provê uma experiência rica, em tempo real com HTML renderizado no servidor.
HTML no servidor; 2. Entrega esse HTML para o cliente; 3. Cliente abre uma conexão WebSocket com o servidor; 4. Cliente emite eventos ao interagir com a tela; 5. Eventos são capturados pelo servidor (via WebSocket); 6. Servidor muda o estado do socket e renderiza um novo HTML; 7. Lib Phoenix JS faz o diff desse conteúdo e aplica a diferença na interface; 8. Volta ao passo 4.
server rendering e outra quando a conexão via websocket é estabelecida. def mount(params, session, socket) do # generate new socket state {:ok, socket} end
def mount(params, session, socket) do # generate new socket state {:ok, socket} end def render(assigns) do # should return a liveview template end def handle_event(event, values, socket) do # generate new socket state {:noreply, socket} end
ECOSSISTEMA DO ELIXIR ECOSSISTEMA DO ELIXIR Phoenix LiveView junto com o ecossistema Phoenix + Elixir nos propõe uma produtividade muito grande. Embora o nível de dinamismo não chegue ao de um SPA ele serve muito bem para tarefas do dia dia e pode até ser usado junto com bibliotecas como React, Angular, Vue etc…