FastUI: Python ile daha hızlı ve daha iyi web UI oluşturma
(github.com/pydantic)- 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:
fastuiPyPI 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/fastuinpm paketi: Kendi bileşenlerinizi uygularken FastUI'nin altyapısını ve tiplerini yeniden kullanmanızı sağlayan bir React TypeScript paketidir.@pydantic/fastui-bootstrapnpm paketi: Tüm FastUI bileşenlerini Bootstrap kullanarak uygular/özelleştirir.@pydantic/fastui-prebuiltnpm 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.
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
Hacker News görüşleri
Sunum katmanı ile kodun bağlanmasına dair görüş
FastUI ve Streamlit ile uygulama geliştirme deneyimi
Django ve HTMX hakkındaki görüşler
Sunucu tarafı event işlemenin iç uygulamalardaki pratikliği
Backend sunucusu gerektiren frontend framework'lerinin artışı
FastUI ve NiceGUI deneyimlerinin karşılaştırılması
Yapay zekadaki gelişmelerin proje kullanım senaryolarına etkisi
Dart/Flutter ile yan proje geliştirme deneyimi
Java Server Faces ile karşılaştırma ve sunucu tarafı soyutlamanın sınırları
Sunucuyla roundtrip'in kullanıcı arayüzü oluşturmaya uygun olup olmadığına dair soru