|
1 tydzień temu | |
---|---|---|
.. | ||
README.md | 1 tydzień temu |
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) یک کتابخانه برای ساخت برنامه های وب فول استک تماما پایتونی است.
ویژگی های کلیدی:
برای آشنایی با نحوه عملکرد Reflex صفحه معماری را ببینید.
یک ترمینال را باز کنید و اجرا کنید (نیازمند Python 3.10+):
pip install reflex
نصب reflex
همچنین reflex
در خط فرمان را نصب میکند.
با ایجاد یک پروژه جدید موفقیت آمیز بودن نصب را تست کنید. (my_app_name
را با اسم پروژه خودتان جایگزین کنید):
mkdir my_app_name
cd my_app_name
reflex init
این دستور یک برنامه الگو(تمپلیت) را در فهرست(دایرکتوری) جدید شما مقداردهی اولیه می کند
می توانید این برنامه را در حالت توسعه(development) اجرا کنید:
reflex run
باید برنامه خود را در حال اجرا ببینید در http://localhost:3000.
اکنون میتوانید کد منبع را در «my_app_name/my_app_name.py» تغییر دهید. Reflex دارای تازهسازیهای سریعی است، بنابراین میتوانید تغییرات خود را بلافاصله پس از ذخیره کد خود مشاهده کنید.
بیایید یک مثال بزنیم: ایجاد یک رابط کاربری برای تولید تصویر DALL·E. برای سادگی، ما فراخوانی میکنیم OpenAI API, اما می توانید آن را با یک مدل ML که به صورت محلی اجرا می شود جایگزین کنید.
در اینجا کد کامل برای ایجاد این پروژه آمده است. همه اینها در یک فایل پایتون انجام می شود!
import reflex as rx
import openai
openai_client = openai.OpenAI()
class State(rx.State):
"""The app state."""
prompt = ""
image_url = ""
processing = False
complete = False
def get_image(self):
"""Get the image from the prompt."""
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",
)
# Add state and page to the app.
app = rx.App()
app.add_page(index, title="Reflex:DALL-E")
بیایید با رابط کاربری شروع کنیم.
def index():
return rx.center(
...
)
تابع index
قسمت فرانت اند برنامه را تعریف می کند.
ما از اجزای مختلفی مثل center
, vstack
, input
و button
استفاده میکنیم تا فرانت اند را بسازیم. اجزاء را می توان درون یکدیگر قرار داد
برای ایجاد طرح بندی های پیچیده می توانید از args کلمات کلیدی برای استایل دادن به آنها از CSS استفاده کنید.
رفلکس دارای بیش از 60 جزء برای کمک به شما برای شروع. ما به طور فعال اجزای بیشتری را اضافه می کنیم, و این خیلی آسان است که اجزا خود را بسازید.
رفلکس رابط کاربری شما را به عنوان تابعی از وضعیت شما نشان می دهد.
class State(rx.State):
"""The app state."""
prompt = ""
image_url = ""
processing = False
complete = False
حالت تمام متغیرها(variables) (به نام vars) را در یک برنامه که می توانند تغییر دهند و توابعی که آنها را تغییر می دهند تعریف می کند..
در اینجا حالت از یک prompt
و image_url
تشکیل شده است. همچنین دو بولی processing
و complete
برای نشان دادن زمان غیرفعال کردن دکمه (در طول تولید تصویر) و زمان نمایش تصویر نتیجه وجود دارد.
def get_image(self):
"""Get the image from the prompt."""
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
در داخل حالت، توابعی به نام کنترل کننده رویداد تعریف می کنیم که متغیرهای حالت را تغییر می دهند. کنترل کننده های رویداد راهی هستند که می توانیم وضعیت را در Reflex تغییر دهیم. آنها را می توان در پاسخ به اقدامات کاربر، مانند کلیک کردن روی یک دکمه یا تایپ کردن در یک متن، فراخوانی کرد. به این اعمال وقایع می گویند.
برنامه DALL·E ما دارای یک کنترل کننده رویداد، get_image
است که این تصویر را از OpenAI API دریافت می کند. استفاده از yield
در وسط کنترلکننده رویداد باعث بهروزرسانی رابط کاربری میشود. در غیر این صورت رابط کاربری در پایان کنترل کننده رویداد به روز می شود.
بالاخره اپلیکیشن خود را تعریف می کنیم.
app = rx.App()
ما یک صفحه از root برنامه را به جزء index اضافه می کنیم. ما همچنین عنوانی را اضافه می کنیم که در برگه پیش نمایش/مرورگر صفحه نمایش داده می شود.
app.add_page(index, title="DALL-E")
با افزودن صفحات بیشتر می توانید یک برنامه چند صفحه ای ایجاد کنید.
رفلکس(reflex) در دسامبر 2022 با نام Pynecone راه اندازی شد.
از سال 2025، Reflex Cloud برای فراهم کردن بهترین تجربه میزبانی برای برنامه های Reflex راهاندازی شده است. ما به توسعه آن ادامه خواهیم داد و ویژگیهای بیشتری را پیادهسازی خواهیم کرد.
رفلکس(reflex) هر هفته نسخه ها و ویژگی های جدیدی دارد! مطمئن شوید که :star: ستاره و :eyes: این مخزن را تماشا کنید تا به روز بمانید.
ما از مشارکت در هر اندازه استقبال می کنیم! در زیر چند راه خوب برای شروع در انجمن رفلکس آورده شده است.
ما فعالانه به دنبال مشارکت کنندگان هستیم، فارغ از سطح مهارت یا تجربه شما. برای مشارکت CONTRIBUTING.md را بررسی کنید.
رفلکس متن باز و تحت مجوز Apache License 2.0 است.