|
1 settimana fa | |
---|---|---|
.. | ||
README.md | 1 settimana fa |
23007ec6
)](https://reflex.dev/docs/getting-started/introduction)
[](https://pepy.tech/projects/reflex)
[](https://discord.gg/T5WSbC2YtQ)
English | 简体中文 | 繁體中文 | Türkçe | हिंदी | Português (Brasil) | Italiano | Español | 한국어 | 日本語 | Deutsch | Persian (پارسی) | Tiếng Việt
Reflex, saf Python'da tam yığın web uygulamaları oluşturmak için bir kütüphanedir.
Temel özellikler:
Reflex'in perde arkasında nasıl çalıştığını öğrenmek için mimari sayfamıza göz atın.
Bir terminal açın ve çalıştırın (Python 3.10+ gerekir):
pip install reflex
reflex
'i kurduğunuzda reflex
komut satırı aracınıda kurmuş olursunuz.
Kurulumun başarılı olduğunu test etmek için yeni bir proje oluşturun. (my_app_name
'i proje ismiyle değiştirin.):
mkdir my_app_name
cd my_app_name
reflex init
Bu komut ile birlikte yeni oluşturduğunuz dizinde bir şablon uygulaması oluşturur.
Uygulamanızı geliştirme modunda başlatabilirsiniz:
reflex run
Uygulamanızın http://localhost:3000 adresinde çalıştığını görmelisiniz.
Şimdi my_app_name/my_app_name.py
yolundaki kaynak kodu düzenleyebilirsiniz. Reflex'in hızlı yenileme özelliği vardır, böylece kodunuzu kaydettiğinizde değişikliklerinizi anında görebilirsiniz.
Bir örnek üzerinden gidelim: DALL·E kullanarak bir görüntü oluşturma arayüzü oluşturalım. Basit olması açısından, yalnızca OpenAI API'ını kullanıyoruz, ancak bunu yerel olarak çalıştırılan bir ML modeliyle değiştirebilirsiniz.
İşte bunu oluşturmak için kodun tamamı. Her şey sadece bir Python dosyasıyla hazırlandı!
import reflex as rx
import openai
openai_client = openai.OpenAI()
class State(rx.State):
"""Uygulama durumu."""
prompt = ""
image_url = ""
processing = False
complete = False
def get_image(self):
"""Prompt'tan görüntüyü alın."""
if self.prompt == "":
return rx.window_alert("Prompt Empty")
self.processing, self.complete = True, False
yield
response = openai_client.images.generate(
prompt=self.prompt, n=1, size="1024x1024"
)
self.image_url = response.data[0].url
self.processing, self.complete = False, True
def index():
return rx.center(
rx.vstack(
rx.heading("DALL-E", font_size="1.5em"),
rx.input(
placeholder="Enter a prompt..",
on_blur=State.set_prompt,
width="25em",
),
rx.button(
"Generate Image",
on_click=State.get_image,
width="25em",
loading=State.processing
),
rx.cond(
State.complete,
rx.image(src=State.image_url, width="20em"),
),
align="center",
),
width="100%",
height="100vh",
)
# Sayfa ve durumu uygulamaya ekleyin.
app = rx.App()
app.add_page(index, title="Reflex:DALL-E")
UI (Kullanıcı Arayüzü) ile başlayalım.
def index():
return rx.center(
...
)
Bu index
fonkisyonu uygulamanın frontend'ini tanımlar.
Frontend'i oluşturmak için center
, vstack
, input
, ve button
gibi farklı bileşenler kullanıyoruz. Karmaşık düzenler oluşturmak için bileşenleri birbirinin içine yerleştirilebiliriz. Ayrıca bunları CSS'nin tüm gücüyle şekillendirmek için anahtar kelime argümanları kullanabilirsiniz.
Reflex, işinizi kolaylaştırmak için 60'tan fazla dahili bileşen içerir. Aktif olarak yeni bileşen ekliyoruz ve kendi bileşenlerinizi oluşturmak oldukça kolay.
Reflex arayüzünüzü durumunuzun bir fonksiyonu olarak temsil eder.
class State(rx.State):
"""Uygulama durumu."""
prompt = ""
image_url = ""
processing = False
complete = False
Durum (State), bir uygulamadaki değişebilen tüm değişkenleri (vars olarak adlandırılır) ve bunları değiştiren fonksiyonları tanımlar.
Burada durum prompt
ve image_url
inden oluşur. Ayrıca düğmenin ne zaman devre dışı bırakılacağını (görüntü oluşturma sırasında) ve görüntünün ne zaman gösterileceğini belirtmek için processing
ve complete
booleanları da vardır.
def get_image(self):
"""Prompt'tan görüntüyü alın."""
if self.prompt == "":
return rx.window_alert("Prompt Empty")
self.processing, self.complete = True, False
yield
response = openai_client.images.generate(
prompt=self.prompt, n=1, size="1024x1024"
)
self.image_url = response.data[0].url
self.processing, self.complete = False, True
Durum içinde, durum değişkenlerini değiştiren olay işleyicileri adı verilen fonksiyonları tanımlarız. Olay işleyicileri, Reflex'te durumu değiştirebilmemizi sağlar. Bir düğmeye tıklamak veya bir metin kutusuna yazı yazmak gibi kullanıcı eylemlerine yanıt olarak çağrılabilirler. Bu eylemlere olay denir.
DALL·E uygulamamız OpenAI API'ından bu görüntüyü almak için get_image
adlı bir olay işleyicisine sahiptir. Bir olay işleyicisinin ortasında yield
ın kullanılması UI'ın güncellenmesini sağlar. Aksi takdirde UI olay işleyicisinin sonunda güncellenecektir.
En sonunda uygulamamızı tanımlıyoruz.
app = rx.App()
Uygulamamızın kök dizinine index bileşeninden bir sayfa ekliyoruz. Ayrıca sayfa önizlemesinde/tarayıcı sekmesinde görünecek bir başlık ekliyoruz.
app.add_page(index, title="DALL-E")
Daha fazla sayfa ekleyerek çok sayfalı bir uygulama oluşturabilirsiniz.
Reflex, Aralık 2022'de Pynecone adıyla piyasaya sürüldü.
2025'in başından itibaren, Reflex uygulamaları için en iyi barındırma deneyimini sunmak amacıyla Reflex Cloud hizmete girmiştir. Bunu geliştirmeye ve daha fazla özellik eklemeye devam edeceğiz.
Reflex'in her hafta yeni sürümleri ve özellikleri geliyor! Güncel kalmak için bu depoyu :star: yıldızlamayı ve :eyes: izlediğinizden emin olun.
Her boyuttaki katkıları memnuniyetle karşılıyoruz! Aşağıda Reflex topluluğuna adım atmanın bazı yolları mevcut.
Beceri düzeyiniz veya deneyiminiz ne olursa olsun aktif olarak katkıda bulunacak kişiler arıyoruz. Katkı sağlamak için katkı sağlama rehberimize bakabilirsiniz: CONTRIBUTING.md
Reflex açık kaynaklıdır ve Apache License 2.0 altında lisanslıdır.