Ulaşım
- Adres: 2342 Sk, İpekyol, İpek Ap 49A, 63250 Haliliye/Şanlıurfa
- Telefon:
0505 532 36 38 - eMail: info@alestaweb.com
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 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.
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.
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:
# 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
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.
Elixir Phoenix LiveView projesini sıfırdan kurmak, Phoenix CLI sayesinde dakikalar içinde tamamlanabilir.
# 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
# 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
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
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.
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
scope "/", AlestawebLiveWeb do
pipe_through :browser
live "/", PageLive, :index
live "/counter", CounterLive, :index
live "/dashboard", DashboardLive, :index
end
İ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.
Elixir Phoenix LiveView 1.1'de form işleme, Ecto changeset ile entegre olarak güçlü ve temiz bir yapı sunar.
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
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ı.
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.
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
Son Haberler
Platform Engineering 2026: Internal Developer Platform (IDP) Nedir? Backstage, Golden Path ve Kubernetes Rehberi
05.05.2026
Linux CVE-2026-31431 Copy Fail Root Yetki Yukseltme: CISA KEV Listesi, 9 Yillik Acik ve Cozum Rehberi (2026)
05.05.2026
Come Programlama Dili 2026: C'nin Guvenli Alternatifi mi? Baslangic Rehberi ve Kod Ornekleri
05.05.2026
GPT-5.5 API Python Rehberi: OpenAI'nin En Guclu Modeli ile Sifirdan Yapay Zeka Gelistirme (2026)
05.05.2026
cPanel CVE-2026-41940 Kritik Authentication Bypass: 1.5 Milyon Sunucuyu Tehdit Eden Guvenlik Acigi ve Cozumu (2026)
05.05.2026