24 puan yazan GN⁺ 2024-03-03 | 1 yorum | WhatsApp'ta paylaş
  • FastUI, bildirime dayalı Python koduyla web uygulaması kullanıcı arayüzleri oluşturmanın yeni bir yolu
  • Kullanıcı arayüzünü tanımlayan Pydantic modelleri ve TypeScript arayüzleri kümesi
  • Python geliştiricileri, JavaScript veya npm kullanmadan React ile duyarlı web uygulamaları oluşturabilir
  • Frontend geliştiricileri, her seferinde kopyala-yapıştır yapmak zorunda kalmadan yeniden kullanılabilir bileşenler oluşturmaya odaklanabilir
  • Tüm kullanıcılar için backend'in tüm uygulamayı tanımladığı ve frontend'in yalnızca kullanıcı arayüzünü uyguladığı gerçek bir sorumluluk ayrımı mümkün
  • Çeşitli bileşenler varsayılan olarak sunulur: token tabanlı kimlik doğrulama, GitHub OAuth, Markdown, Text, Paragraph, Heading, Code, Button, Link, Navbar, Modal, ServerLoad, Image, Iframe, Video, Table, Pagination, ModelForm

Gerçek kullanım şekli

  • FastUI dört parçadan oluşur:
    • fastui PyPI paketi: UI bileşenleri için Pydantic modelleri ve yardımcı araçlar sunar. FastAPI ile iyi çalışır ancak FastAPI'ye bağımlı değildir ve diğer Python web framework'leriyle de kullanılabilir.
    • @pydantic/fastui npm paketi: Kendi bileşenlerinizi uygularken FastUI'nin altyapısını ve tiplerini yeniden kullanmanızı sağlayan bir React TypeScript paketidir.
    • @pydantic/fastui-bootstrap npm paketi: Tüm FastUI bileşenlerini Bootstrap kullanarak uygular/özelleştirir.
    • @pydantic/fastui-prebuilt npm paketi: npm paketi kurmaya veya herhangi bir şeyi kendiniz build etmeye gerek kalmadan FastUI React uygulamasının önceden derlenmiş bir sürümünü sunar. Python paketi, bu uygulamayı sunan basit bir HTML sayfası sağlar.

İlkeler (uzun versiyon)

  • FastUI, RESTful ilkelerin bir uygulamasıdır; ancak genel olarak anlaşılan biçimde değil, Roy Fielding'in doktora tezinde tanımlanan ilkelere dayanır.
  • RESTful ilkelere göre frontend'in oluşturduğu uygulama hakkında bilgi sahibi olması gerekmez; yalnızca arayüzü kurmak için gerekli tüm bileşenleri sağlaması yeterlidir.
  • Uygulamayı bu şekilde oluşturmanın birçok önemli avantajı vardır:
    • Yeni özellikler geliştirmek için kodu yalnızca tek bir yerde yazmak yeterlidir.
    • Frontend ve backend dağıtımlarını tamamen ayırabilirsiniz.
    • Açık kaynak bileşen setleri yeniden kullanılabilir; çünkü bu bileşenlerin kullanılacakları bağlamı bilmesine gerek yoktur.
    • Pydantic, TypeScript ve JSON şeması kullanarak iki tarafın da üzerinde uzlaşılmış bir şemayla iletişim kurduğunu garanti edebilirsiniz.
    Reklam

Python ve React'in ötesinde

  • Bu ilkeler yalnızca Python ve React uygulamalarıyla sınırlı değildir; aynı uzlaşılmış şema ve encoding kullanılarak iletişim kurulduğu sürece, şemayı uygulayan her türlü frontend ve backend'de kullanılabilir.

GN⁺ görüşü

  • FastUI, backend geliştiricilerinin frontend geliştirme olmadan uygulamaları genişletmesine olanak tanıyan verimli bir yöntem sunarak geliştirme sürecini sadeleştirme potansiyeline sahip.
  • Bu teknoloji, frontend ve backend arasındaki iş bölümünü netleştirerek her iki tarafın da uzmanlığını en üst düzeyde kullanabileceği bir ortam oluşturur.
  • FastUI şu anda hâlâ geliştirilmekte olan bir proje olduğundan, gerçek production ortamında kullanmadan önce kararlılığı ve işlevselliği dikkatle değerlendirilmelidir.
  • FastUI'yi benimserken mevcut frontend geliştirme akışıyla uyumluluk, bileşenlerin yeniden kullanılabilirliği ve genişletilebilirliği ile projenin uzun vadeli bakım yönleri dikkate alınmalıdır.
  • Bu teknolojiyi seçmenin sağlayabileceği avantajlar arasında geliştirme süresinin kısalması ve backend merkezli geliştirme akışı bulunurken, buna karşılık frontend esnekliği sınırlanabilir ve topluluk desteği ile kaynaklar görece yetersiz olabilir.

1 yorum

 
GN⁺ 2024-03-03
Hacker News görüşleri
  • Sunum katmanı ile kodun bağlanmasına dair görüş

    • Sunum katmanı ile kodun bağlanması: Sunum katmanı kodla fazla sıkı bağlı olmamalı. Python yerine bir şablon dili daha uygun; ayrıca şablonları farklı dillerde render edebilmek daha iyi olur.
  • FastUI ve Streamlit ile uygulama geliştirme deneyimi

    • FastUI ve Streamlit kullanımı: Streamlit ile prototipleme yapıldı ancak zaman zaman rahatsız edici bulundu. FastUI'nin hâlâ eksikleri var, ancak hafif uygulamalar için kullanıldığında Streamlit'e göre daha hızlı tepki verdiği görüldü.
  • Django ve HTMX hakkındaki görüşler

    • Django ve HTMX: Django ve HTMX kombinasyonu hem zarif hem de hızlı çalışıyor. Yalnızca frontend için render edilmiş kod gönderiliyor ve ölçek büyüdüğünde DB yönetimi yapılabiliyor.
  • Sunucu tarafı event işlemenin iç uygulamalardaki pratikliği

    • Sunucu tarafı event işleme: Bu kavram yeni değil; React tabanlı Solara veya Vue tabanlı NiceGUI gibi başka örnekler de var. İç uygulamalar için oldukça pratik, ancak tüm kontrollerde event'lerin sunucu tarafında işlenmesinden kaynaklanan bir miktar gecikmeyi kabul etmek gerekiyor.
  • Backend sunucusu gerektiren frontend framework'lerinin artışı

    • Frontend framework'lerinin karmaşıklığı: Birçok frontend framework, temel HTML'i render edebilmek için bir backend sunucusu çalıştırmak zorunda. Bu framework'lerin sunduğu özelliklerin bu karmaşıklığı gerçekten haklı çıkarıp çıkarmadığı sorgulanıyor.
  • FastUI ve NiceGUI deneyimlerinin karşılaştırılması

    • FastUI ve NiceGUI: NiceGUI kutudan çıktığı anda kullanıma hazır bir deneyim sunuyor. FastUI ise daha çok Pydantic modelleri için bir form adaptörü gibi görünüyor.
  • Yapay zekadaki gelişmelerin proje kullanım senaryolarına etkisi

    • Yapay zeka ve frontend geliştirme: Backend geliştiricilerinin kendi dillerinde hızlıca UI üretebilmesi fikri geçerli, ancak birkaç saat yapay zeka kullanarak temel bir UI oluşturmak mümkün olduğundan bu tür projelere olan ihtiyaç zayıflayabilir.
  • Dart/Flutter ile yan proje geliştirme deneyimi

    • Dart/Flutter kullanımı: Dart/Flutter ile yan projeler yazmak sürtünmeyi azaltıyor ve daha az zahmetli oluyor. Web uygulaması yazmak gerekip Flutter uygun olmasaydı HTMX tercih edilirdi.
  • Java Server Faces ile karşılaştırma ve sunucu tarafı soyutlamanın sınırları

    • Java Server Faces deneyimi: Java Server Faces'e benziyor gibi hissettiriyor. Frontend geliştirmenin inceliklerini sunucu tarafı soyutlamaya taşıma girişimi, yalnızca yönetim arayüzleri gibi sınırlı bir uygulama kümesinde işe yarayacaktır.
  • Sunucuyla roundtrip'in kullanıcı arayüzü oluşturmaya uygun olup olmadığına dair soru

    • Sunucuyla roundtrip: Her istemci etkileşiminde sunucuya gidip gelmenin kullanıcı arayüzü oluşturmak için gerçekten her zaman iyi bir fikir olup olmadığı sorgulanıyor.