8 puan yazan GN⁺ 2025-11-10 | 2 yorum | WhatsApp'ta paylaş
  • Dinamik ve reaktif web arayüzleri oluşturmak için HTML sözdizimini genişleten bildirimsel bir dildir ve mevcut HTML kullanıcıları için tanıdık bir geliştirme ortamı sunar
  • Streaming rendering sayesinde içerik sunucudan anında gönderilir ve istemci JavaScript bundle'ı yüklenmeden önce de ekran gösterilebilir
  • İnce taneli bundle'lama (fine-grained bundling) ile gereksiz kod aktarımı en aza indirilerek performans ve yükleme hızı artırılır
  • Hedefe yönelik derleme (targeted compilation) ile tarayıcı ve sunucu için ayrı ayrı verimli çıktı üretilir
  • TypeScript entegrasyonu desteği ve zengin editör özellikleriyle geliştirme verimliliği ve kod kalitesi artırılır

Marko'ya genel bakış

  • Marko, HTML'in yeniden tasarlanmış hali olan bildirimsel bir dildir ve dinamik, reaktif kullanıcı arayüzleri oluşturmayı hedefler
    • Geçerli HTML'in büyük bölümü Marko'da da aynen kullanılabilir
    • HTML sözdizimi genişletilerek modern uygulamalar bildirimsel şekilde yazılabilir
  • eBay.com gibi yüksek trafikli büyük ölçekli sitelerde gerçek servis operasyonlarında kullanılmaktadır
  • HTML, CSS ve JavaScript biliyorsanız ek bir öğrenme eğrisi olmadan hemen kullanılabilir

Başlıca özellikler

  • Streaming rendering özelliğiyle sunucu, hazır olan içeriği anında gönderir
    • İstemci tarafındaki JavaScript bundle'ı yüklenmeden önce de ilk ekran gösterilebilir
    • HTML, görseller ve varlıklar eşzamansız olarak yüklenir ve hızlı bir ilk ekran render'ı sağlar
  • İnce taneli bundle'lama (Fine-Grained Bundling) ile yalnızca gereken kod gönderilir
    • Kullanılmayan kod kaldırılır ve alt şablon düzeyinde gereksiz hydration atlanır
    • “Lean by default, Fast by design” felsefesiyle tasarlanmıştır
  • Hedefe yönelik derleme (Targeted Compilation) desteği sunar
    • Tarayıcı ve sunucu arasındaki farklar dikkate alınarak her ortam için optimize edilmiş çıktı üretilir
    • Daha hızlı yükleme, daha küçük bundle'lar ve tek bir birleşik dille sağlanır

Kod örnekleri ve sözdizimi

  • HTML ve JavaScript'i birleştiren sade bir sözdizimi sunar
    <let/count=0>  
    <button onClick() { count++ }>  
      Clicked ${count} times  
    </button>  
    
  • Aynı kod daha kısa bir sözdizimiyle de yazılabilir
    let/count=0  
    button onClick() { count++ }  
      -- Clicked ${count} times  
    
  • <for>, <if>, <await>, <const>, <define> gibi genişletilmiş etiket seti sunar
    • HTML'in temel etiketleriyle birlikte Marko'ya özgü etiketler karışık biçimde kullanılabilir

Performans ve ölçeklenebilirlik

  • Daha hızlı ilk render (Faster First Paint) desteğiyle kullanıcı deneyimini iyileştirir
  • Ölçeklenebilir: basit HTML şablonlarından karmaşık component yapılarına kadar esnek biçimde genişleyebilir
  • Küçük runtime ve optimize edilmiş derleyici sayesinde farklı ağ koşullarında da yüksek performans korunur

TypeScript ve geliştirme araçları entegrasyonu

  • Yerleşik TypeScript desteği ile güçlü tip çıkarımı sunar
    • Şablonlar ve component'ler arasında tip tutarlılığı korunur
    • Editörde otomatik tamamlama, tanıma gitme, sözdizimi vurgulama, biçimlendirme gibi özellikler desteklenir
  • Hataların erken tespiti ve kod kalitesinin artırılmasıyla kararlı bir geliştirme ortamı sunar

Sonuç

  • Marko, HTML dostu sözdizimi, yüksek performanslı rendering, gelişmiş bundle'lama, TypeScript entegrasyonunu bir araya getiren modern bir web geliştirme dilidir
  • Hem sunucuda hem istemcide verimli çalışır ve büyük ölçekli servis işletimine uygun ölçeklenebilirlik ve performans sunar

2 yorum

 
shakespeares 2025-11-10

Şimdilik galiba Svelte.

 
GN⁺ 2025-11-10
Hacker News görüşleri
  • İleride HTML’nin kendisinin JavaScript olmadan da tüm HTTP verb’lerini (put, delete vb.) desteklemesini, açılır menü, çoklu seçim, tarih ve saat gibi giriş kontrollerini yerleşik olarak sunmasını ve formların sayfanın tamamını yeniden yüklemeden gönderilebilmesini isterim
    htmx adını ilk duyduğumda böyle bir şey beklemiştim ama gerçekte daha çok intercooler seviyesindeydi
    Bunun gibi özellikler tarayıcı üreticilerinin geniş çaplı desteğini gerektiriyor

    • htmx’in bazı fikirlerini doğrudan HTML spesifikasyonuna entegre etmeye yönelik bir çalışma yürütülüyor
      İlgili içerik Triptych projesinde görülebilir
  • Kendi JavaScript framework’ümü yapmış biri olarak Marko’nun hak ettiği değeri görmediğini düşünüyorum
    Derleme zamanı optimizasyonları çok etkileyici ve ince taneli bundling açıklaması dokümanı da harika
    Nitekim Kanban panosu performans karşılaştırmasında da iyi sonuçlar göstermişti

    • RSC ve SSR modası, birilerinin terfi gerekçesi ya da yeni şirket kurma bahanesi gibi geldi
      React, Next.js ile birleşirken platformun özüne ihanet etti ve artık onu seçmek için neredeyse hiçbir sebep kalmadı
      React’in statik olarak hydrate edilip CDN üzerinde çalıştığı dönem çok daha iyiydi
    • Yeni projelerde sık sık SvelteKit kullanıyorum; özellikler, geliştirici deneyimi ve performans arasında iyi bir denge sunuyor
      Yine de Marko’ya da bakmam gerektiğini düşündürüyor
      Electron gibi masaüstü framework’leri tarafında da böyle derinlemesine analizler olsa keşke
  • React’i sevmemin nedeni basitçe “sadece JavaScript” olması
    <let> ya da <for> gibi sözdizimlerini görmek istemiyorum

    • Aslında JSX de saf JavaScript değil
      Sadece ona fazla alıştığımız için yeni bir framework’e bakarken bunu hatırlamak gerekiyor
    • Eskiden de iyi template sözdizimleri vardı, bugün de var
      {% for user in users %} ya da {#each users as user} gibi yapılar çok daha açık
      JSX de kusursuz değil — {users.map(...)} sözdizimi hâlâ gereksiz derecede uzun
    • Geçmişte Marko kullanmıştım; başlangıçta eBay iç projesi olarak çıkmış, 2015 civarında açık kaynağa dönmüştü
    • Bu kişiden kişiye değişir ama bu tür template tabanlı sözdizimlerini sevenler de var
      Vue ve Svelte’in popüler olmasının nedeni de bu
      Bu arada Vue, istersen yalnızca JSX ile de yazılabiliyor
    • React uzun zamandır artık “sadece JS” değil
      DSL giderek şişti ve useFormStatus ile useActionState gibi hook’lar arttıkça daha karmaşık hale geldi
      Buna karşılık Marko’nun sözdizimi sezgisel; fonksiyonlar fonksiyon gibi, değişkenler değişken gibi görünüyor ve bu yüzden anlaması kolay
  • HTML içine JS koyma yaklaşımı oldukça taze hissettiriyor
    Ryan Carniato bu projede yer aldıktan sonra daha sonra SolidJS’ye liderlik etti; neden yeniden HTML-in-JS tarzına döndüğünü merak ediyorum

    • Ryan, Solid üzerinde eBay/Marko’ya katılmadan önce de çalışıyordu
      İki proje birbirinin fikirlerini paylaşarak gelişti ve bugün de etkileşim hâlindeler
    • JSX’i seçmelerinin nedeni basit
      Pek çok geliştirici buna alışık ve editörlerle TypeScript desteği zaten oldukça iyi
    • “HTML içinde JS” deyince kulağa 1995 Netscape dönemine dönmüşüz gibi geliyor; şaka gibi
  • 20 yılı aşkın süredir frontend’in dönüp dolaşıp sonunda JSP dönemi paradigmasına geri dönmüş gibi hissettiriyor
    O zamanlar “demode” diye küçümseniyordu ama sonunda doğru olanın bu olduğu ortaya çıktı sanki

    • Teknoloji döngüseldir ama her seferinde ufak iyileştirmeler olur
      Bazı şeyler kaybolur ama sonraki neslin yaratıcılığı yeni şeyler üretir
    • JSF’yi de hatırlıyorum — sunucu tarafında durumu geri yükleyebiliyordu ve karmaşık form tabanlı web sitelerini hızlıca kurmayı sağlıyordu
      Yalnız büyük ölçekte ölçeklenebilirlik konusunda dikkatli olmak gerekiyordu
    • “Doğru paradigma” ifadesine katılmak zor
      Duruma göre başka yaklaşımlar daha uygun olabilir
    • SPA seçimini “eski teknolojilerden nefret edildiği için” diye açıklamak fazla basit
      O dönemde mobil uygulamalar ve API merkezli mimariler gerekliydi, SPA da bu ihtiyaca uyuyordu
      Şimdi yaşanan şey JSP’ye dönüş değil, iki taraf arasındaki denge noktasını bulma süreci
  • Marko zaten eBay’de kanıtlanmış bir teknoloji
    Yıllardır kullanıyorum ve hiç sorun yaşamadım
    Buna karşılık React tabanlı Facebook, Instagram ve Messenger’da UI hataları hiç eksik olmuyor
    Gerçek büyük ölçekli servislerdeki sonuçlara bakınca Marko’nun kararlılığı öne çıkıyor

  • Marko daha önce de HN’de birkaç kez gündeme gelmişti
    Ocak 2023, Ağustos 2017, Şubat 2015 tarihlerinde de ilgili başlıklar vardı

    • Bunun bu kadar eski bir proje olduğunu ancak şimdi fark ettim
  • JSX’e kıyasla çok daha gelişmiş bir sözdizimi gibi görünüyor
    Özellikle Pug tarzı kısa sözdizimini beğendim ama neden dokümantasyonun derinliklerine gizlemişler anlamadım
    Concise Syntax dokümanı

    • Ben de o kısa sözdizimi yüzünden Marko’ya bakmıştım
      Ama dokümandaki highlighting hataları ya da özelliklerin ayrılma biçimi hoşuma gitmedi
      Son zamanlarda daha çok Svelte kullanıyorum ama hâlâ daha zarif bir sözdizimi bekliyorum
    • Bana göre biraz YAML’ın hatalarını tekrarlıyor gibi
      Boşluk tabanlı sözdizimi fena değil ama -- gibi gösterimler ve parse etme zorluğu hayal kırıklığı yaratıyor
  • Marko ekibi, Marko 6’yı tanıtmak için doğrudan bir Hacker News klonu yapıp yayımladı
    GitHub örneğine bakın

  • Demo amaçlı yapılmış bir dil olmasına rağmen “HTML-based”, “building web apps” gibi gradyan metinlerin görünmemesi biraz komik