+ Searching for Pynecone? You are in the right repo. Pynecone has been renamed to Reflex. +
英語 | 簡體中文 | 繁體中文 |土耳其 | हिंदी |葡萄牙語(巴西)|義大利 |西班牙語 | 한국어 | 日本語 |德語 |波斯語 (پר) |越南
Reflex 是一個用純 Python 建立全端 Web 應用程式的函式庫。
主要特點:
請參閱我們的架構頁面,以了解 Reflex 的底層運作原理。
開啟終端機並運行(需要 Python 3.9+):
pip install reflex
安裝reflex
也會安裝reflex
命令列工具。
透過建立新專案來測試安裝是否成功。 (將my_app_name
替換為您的專案名稱):
mkdir my_app_name
cd my_app_name
reflex init
此命令會在新目錄中初始化模板應用程式。
您可以在開發模式下運行此應用程式:
reflex run
您應該會看到您的應用程式在 http://localhost:3000 上運行。
現在您可以修改my_app_name/my_app_name.py
中的原始碼。 Reflex 具有快速刷新功能,因此您可以在儲存程式碼時立即看到所做的變更。
讓我們看一個範例:圍繞 DALL·E 建立圖像生成 UI。為簡單起見,我們僅呼叫 OpenAI API,但您可以將其替換為本地運行的 ML 模型。
這是創建它的完整程式碼。這一切都在一個 Python 檔案中完成!
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
來建構前端。組件可以相互嵌套以創建複雜的佈局。您可以使用關鍵字參數來利用 CSS 的全部功能來設定它們的樣式。
Reflex 隨附 60 多個內建元件來幫助您入門。我們正在積極添加更多組件,並且您可以輕鬆創建自己的組件。
Reflex 將您的 UI 表示為您狀態的函數。
class State ( rx . State ):
"""The app state."""
prompt = ""
image_url = ""
processing = False
complete = False
狀態定義了應用程式中可以更改的所有變數(稱為 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
將導致UI 更新。否則,UI 將在事件處理程序結束時更新。
最後,我們定義我們的應用程式。
app = rx . App ()
我們將應用程式根目錄中的頁面新增到索引元件中。我們還新增了一個將顯示在頁面預覽/瀏覽器標籤中的標題。
app . add_page ( index , title = "DALL-E" )
您可以透過新增更多頁面來建立多頁面應用程式。
?文檔 | ?️ 部落格 | 元件庫 | ? ?部署
Reflex 於 2022 年 12 月推出,名為 Pynecone。
截至 2024 年 2 月,我們的託管服務處於 alpha 階段!在此期間,任何人都可以免費部署他們的應用程式。請參閱我們的路線圖以了解計劃內容。
Reflex 每週都會發布新版本和新功能!確保加註星標並 ?請關注此存儲庫以保持最新狀態。
我們歡迎任何規模的貢獻!以下是一些開始加入 Reflex 社群的好方法。
無論您的技能水平或經驗如何,我們都在積極尋找貢獻者。要貢獻請查看 CONTIBUTING.md
Reflex 是開源的,並根據 Apache License 2.0 授權。