Live View from Phoenix

Beyond Rails

– Elixir and Phoenix Framework

First try of Live View from Phoenix


Language History

First released Published

  • Ruby - 1995, same year of java
  • Rails - 2004

  • Elixir - 2011

  • Phoenix - 2014

  • Erlang - 1986


Why Elixir

  • Lightweight concurrency based on Erlang VM (over 30 years)
  • Thread safe (by no thread at all)
  • Simple, just function
  • Balance of productivity and performance
  • Pattern matching
  • Immutability

Create Phoenix project

show all mix command

mix help

install hex - a package manager

mix local.hex

install phx_new package

mix archive.install hex phx_new

create a phoenix project

mix phx.new hxdemo

Live view

  • Learned from Frontend
  • Use backend as a state store
  • but don’t need API.
  • You don’t have to write a single line of Javascript.

What you need to do

basically 3 methods is used

  • mount
  • render
  • handle_event

mount methods

def mount(_params, _session, socket) do
  {:ok, assign(socket, counter: 0)}
end

render methods

def render(assigns) do
  ~L"""
  Counter <% @counter %>
  <button phx-click="inc">+</button>
  """
end

render methods

def handle_event("inc", _params, socket) do
  {:noreply, assign(socket, count: socket.assigns.count + 1)}
end

Internal

  • Use websocket (use long pull as fallback)
  • Frontend phoenix liveview javascript
  • One connection with one GenServer at backend

the End