Elixir Phoenix LiveView 1.1 Rehberi: Gerçek Zamanlı Web Uygulamaları (2026)

Ana SayfaHaberler › Elixir Phoenix LiveView 1.1 Rehberi: Gerçek Zamanlı ...

Elixir Phoenix LiveView 1.1 Rehberi: Gerçek Zamanlı Web Uygulamaları (2026)

10.03.2026 3 görüntülenme

Elixir Phoenix LiveView, JavaScript yazmadan gerçek zamanlı web uygulamaları geliştirmenin en şaşırtıcı yolunu sunuyor. Phoenix LiveView real-time yaklaşımı, sunucu taraflı rendering ile anlık UI güncellemelerini bir araya getirerek React ve Node.js alternatifi olarak güçlü bir seçenek haline geldi. Alesta Web ekibi olarak Elixir Phoenix LiveView 1.1'i derinlemesine inceledik ve bu kapsamlı başlangıç rehberini hazırladık. Erlang VM'nin gücünü keşfetmeye hazır mısınız?

Elixir ve Phoenix Nedir? (What is Elixir Phoenix?)

Elixir Phoenix LiveView, iki güçlü teknolojinin birleşimidir. Elixir, Erlang Sanal Makinesi (BEAM VM) üzerinde çalışan, Ruby benzeri söz dizimine sahip fonksiyonel bir programlama dilidir. Phoenix ise Elixir üzerine inşa edilmiş üretken ve yüksek performanslı web framework'üdür.

Phoenix LiveView real-time bileşeni, 2019'da duyurulduğunda web geliştirme dünyasında büyük yankı uyandırdı. Soru basitti: Her UI etkileşimi için JavaScript yazmak zorunda mıyız? Cevap: Hayır! Alesta Web ekibi Elixir Phoenix LiveView'u incelediğinde şunu gördü: WebSocket tabanlı bir bağlantı üzerinden sunucu, yalnızca değişen HTML parçalarını istemciye gönderiyor ve tarayıcı bu diff'i uyguluyor.

  • Elixir: Fonksiyonel dil, immutable data, pattern matching, concurrency first
  • Phoenix: MVC web framework, channels, LiveView, real-time dahil
  • LiveView: JavaScript yazmadan Phoenix LiveView real-time UI
  • BEAM VM: Erlang'ın efsanevi dağıtık, hata toleranslı sanal makinesi
  • v1.1 yenilikleri: Daha iyi streams API, gelişmiş form handling, async assigns
? Bilgi / Info:

WhatsApp 2 milyar kullanıcıya Erlang/BEAM ile hizmet veriyor. Discord başlangıçta Python + Erlang kullandı, sonra Elixir'e geçti. Elixir Phoenix LiveView bu devasa ölçeklenebilirlik mirasından yararlanır. Alesta Web'de yüksek eşzamanlılık gerektiren projeler için Elixir'i değerlendiriyoruz.

LiveView Nasıl Çalışır? (How LiveView Works)

Elixir Phoenix LiveView'un mimarisini anlamak, neden bu kadar güçlü olduğunu kavramak için kritiktir. Phoenix LiveView real-time yaklaşımı üç aşamada çalışır.

LiveView lifecycle diyagramı

# LiveView Lifecycle:
# 1. mount/3  → İlk yükleme (stateful process başlar)
# 2. render/1 → HTML template render edilir
# 3. handle_event/3 → Kullanıcı etkileşimi
# 4. handle_info/2 → PubSub mesajları
# 5. handle_params/3 → URL parametre değişimi

# Tipik LiveView akışı:
# Browser → HTTP GET → Server renders initial HTML (SEO friendly!)
# Browser → WebSocket upgrade → Persistent connection
# User clicks button → Event over WebSocket → Server updates state
# Server → renders diff → sends minimal HTML patch → Browser applies

# Neden verimli?
# - Yalnızca değişen HTML parçaları (diff) iletilir
# - Tüm state sunucuda (client sıfır state yönetimi)
# - Erlang lightweight process per connection (milyonlarca bağlantı)
# - JavaScript sıfır: sadece phoenix_live_view.js (~50KB) yeterli
? Bilgi / Info:

Elixir Phoenix LiveView her bağlantı için bir Erlang prosesi başlatır. Bu prosesler iş parçacığı değil, çok daha hafif yapılardır. Tek bir sunucu 2-3 milyon eş zamanlı LiveView bağlantısını handle edebilir. Alesta Web için bu, gerçek zamanlı bildirimler veya canlı veri akışları için ideal demektir.

Kurulum: mix phx.new (Installation)

Elixir Phoenix LiveView projesini sıfırdan kurmak, Phoenix CLI sayesinde dakikalar içinde tamamlanabilir.

Elixir ve Phoenix kurulumu

# 1. Elixir kur (macOS)
brew install elixir

# Linux (Ubuntu/Debian)
wget https://packages.erlang-solutions.com/erlang-solutions_2.0_all.deb
sudo dpkg -i erlang-solutions_2.0_all.deb
sudo apt update && sudo apt install esl-erlang elixir

# Windows: https://elixir-lang.org/install.html#windows

# Elixir versiyonunu kontrol et
elixir --version
# Elixir 1.18.x (compiled with Erlang/OTP 27)

# Hex paket yöneticisi
mix local.hex

# Phoenix installer
mix archive.install hex phx_new

# Phoenix versiyonunu kontrol et
mix phx.new --version
# Phoenix installer v1.7.x

Yeni Phoenix LiveView projesi oluşturma

# LiveView dahil yeni proje (varsayılan olarak gelir)
mix phx.new alestaweb_live

# Proje dizinine gir
cd alestaweb_live

# Bağımlılıkları yükle ve DB oluştur
mix deps.get
mix ecto.create
mix ecto.migrate

# Geliştirme sunucusunu başlat
mix phx.server
# Tarayıcıda: http://localhost:4000

# LiveView ile interaktif shell
iex -S mix phx.server

Proje dizin yapısı

alestaweb_live/
├── lib/
│   ├── alestaweb_live/           # Business logic (contexts)
│   │   ├── accounts.ex
│   │   └── blog.ex
│   └── alestaweb_live_web/       # Web katmanı
│       ├── live/                 # LiveView modülleri
│       │   ├── page_live.ex
│       │   └── counter_live.ex
│       ├── components/           # Reusable components
│       ├── router.ex
│       └── endpoint.ex
├── priv/
│   └── repo/migrations/
├── assets/                       # CSS, JS (minimal)
├── config/
└── mix.exs                       # Bağımlılıklar

İlk LiveView Bileşeni (First LiveView Component)

Elixir Phoenix LiveView ile ilk gerçek zamanlı bileşeni yazmak, Elixir'in ne kadar zarif bir dil olduğunu gösterir. Phoenix LiveView real-time sayaç örneğiyle başlayalım.

LiveView modülü (lib/alestaweb_live_web/live/counter_live.ex)

defmodule AlestawebLiveWeb.CounterLive do
  use AlestawebLiveWeb, :live_view

  # mount: İlk yüklemede çalışır
  def mount(_params, _session, socket) do
    {:ok, assign(socket,
      count: 0,
      site: "alestaweb.com",
      last_updated: DateTime.utc_now()
    )}
  end

  # render: HTML template
  def render(assigns) do
    ~H"""
    

Alesta Web Sayaç - Phoenix LiveView Real-Time

Site:

- +
Sıfırla

Son güncelleme:

""" end # handle_event: Kullanıcı etkileşimleri def handle_event("increment", _params, socket) do {:noreply, update(socket, :count, &(&1 + 1)) |> assign(:last_updated, DateTime.utc_now())} end def handle_event("decrement", _params, socket) do {:noreply, update(socket, :count, &(&1 - 1)) |> assign(:last_updated, DateTime.utc_now())} end def handle_event("reset", _params, socket) do {:noreply, assign(socket, count: 0, last_updated: DateTime.utc_now())} end end

Router'a ekleme (lib/alestaweb_live_web/router.ex)

scope "/", AlestawebLiveWeb do
  pipe_through :browser

  live "/", PageLive, :index
  live "/counter", CounterLive, :index
  live "/dashboard", DashboardLive, :index
end
✅ Başarılı:

İlk Elixir Phoenix LiveView bileşeniniz hazır! Hiç JavaScript yazmadan gerçek zamanlı sayaç çalışıyor. Alesta Web projelerinde bu yaklaşım UI mantığını büyük ölçüde basitleştirdi.

Form İşleme ve Validasyon (Form Handling)

Elixir Phoenix LiveView 1.1'de form işleme, Ecto changeset ile entegre olarak güçlü ve temiz bir yapı sunar.

LiveView form örneği

defmodule AlestawebLiveWeb.ContactLive do
  use AlestawebLiveWeb, :live_view
  alias AlestawebLive.Contact
  alias AlestawebLive.Contact.Message

  def mount(_params, _session, socket) do
    changeset = Contact.change_message(%Message{})
    {:ok, assign(socket, form: to_form(changeset), submitted: false)}
  end

  def render(assigns) do
    ~H"""
    

Alesta Web İletişim Formu

Gönder
Mesajınız alestaweb.com ekibine iletildi!
""" end def handle_event("validate", %{"message" => params}, socket) do changeset = Contact.change_message(%Message{}, params) |> Map.put(:action, :validate) {:noreply, assign(socket, form: to_form(changeset))} end def handle_event("submit", %{"message" => params}, socket) do case Contact.create_message(params) do {:ok, _message} -> {:noreply, assign(socket, submitted: true)} {:error, changeset} -> {:noreply, assign(socket, form: to_form(changeset))} end end end
? Bilgi / Info:

Elixir Phoenix LiveView'da phx-change="validate" ile her tuş basışında anlık validasyon yapılır. Tüm bu gerçek zamanlı geri bildirim JavaScript yazmadan sağlanır. Alesta Web form projelerinde bu yaklaşım geliştirme süresini %40 azalttı.

PubSub ile Real-Time Broadcast (PubSub)

Phoenix LiveView real-time uygulamalarının en güçlü özelliklerinden biri PubSub sistemidir. Birden fazla kullanıcıya anlık güncellemeler göndermek son derece kolaydır.

PubSub ile canlı bildirim sistemi

defmodule AlestawebLiveWeb.DashboardLive do
  use AlestawebLiveWeb, :live_view
  alias Phoenix.PubSub

  @topic "alestaweb:notifications"

  def mount(_params, _session, socket) do
    if connected?(socket) do
      # WebSocket bağlantısı kurulduktan sonra abone ol
      PubSub.subscribe(AlestawebLive.PubSub, @topic)
    end

    {:ok, assign(socket, notifications: [], user_count: 0)}
  end

  def render(assigns) do
    ~H"""
    

Alesta Web Canlı Dashboard

Aktif kullanıcı:

Canlı Bildirimler

Etiketler: Haberler