Snext 是一個 Next.js 應用程序,可讓您在 Python 中建立 API 路由。
接下來,因為它聽起來像“蛇”?你知道,就像Python一樣。
/! /! /! 這是一個早期的實驗
嘿,如果你最終到達那裡,你可能是 JavaScript 開發人員,而 Python 只是你的第二語言。
以下是如何設定高效率的 Python 環境。
我建議使用 Pyenv 來安裝 Python。將其視為相當於 Node Version Manager 或 Volta,但適用於 Python。
這相當於在 Node 生態系中使用 Volta 或 NVM。
Python 沒有node_modules
資料夾。這可能是最好的,但是當您的電腦上有很多項目時,它會使處理依賴關係變得非常困難。
虛擬環境有點類似:它會告訴 Python 在目前專案本地安裝包,而不是全域安裝。
與 Node 的不同之處在於您必須有系統地啟用它們。
設定虛擬環境並安裝 Python 套件:
python3 -m venv ./venv
source ./venv/bin/activate
pip install -r requirements.txt
開始工作時需要啟動虛擬環境:
source ./venv/bin/activate
遺憾的是,此命令在 NPM 腳本中不起作用。你每次都必須輸入它。
vercel
CLI 可以在多大程度上解決我們的問題(請參閱 https://vercel.com/docs/cli#commands/dev)=> 完成,確實如此! 使用 Vercel CLI 而不是next dev
。
Vercel CLI 命令vercel dev
能夠在本機模擬無伺服器環境,因此您可以測試您的 API 路由。
如果將所有 API 路由放在./api/
中,並使用vercel dev
,則可以同時擁有 Python 和 Node.js API 路由(當然 Next.js 前端仍然可以正常工作)。
閱讀 vercel/vercel#6197
執行 Next 時,您希望所有內容都在localhost:3000
上執行,但您將有 2 台伺服器:一台用於 Node,一台用於 Python。這需要一些重寫邏輯才能運作。
此外,我們可能有多個 API 路由,在部署時將充當無伺服器函數。但在本地,我們必須讓它們成為一台伺服器。
在 Next 中從 API 路由取得靜態資料的建議模式是直接在getStaticProps
中重複使用路由的核心邏輯。但這只是可能的,因為兩者都使用 JS。使用 Python,我們需要先建立 API 路由,運行它們,然後只建構前端。
需要使用 Vercel CLI 進行測試。
我們在最新版本中遇到此錯誤https://github.com/vercel/community/discussions/103
運行時似乎太大了。請參閱 vercel/community#103(評論)請參閱 vercel/vercel#2830
請參閱 https://github.com/vercel/vercel/blob/main/errors/now-dev-as-dev-script.md
該腳本必須命名為 smth else,例如dev:vercel
否則會建立無限循環。
不-
在 Python 中的資料夾名稱中,否則導入檔案時會很麻煩...使用下劃線_
。這可能會導致 URL 混亂,因為資料夾名稱與 Next 中的路由名稱相關聯。
(根據我對 Python 的有限經驗)我傾向於將 Flask 或 Falcon 與 Express 進行比較:使用很多,但足夠少。但 Python 的阻塞行為可能會讓 JavaScript 開發人員感到非常困惑。所以我會選擇 Sanic,因為它像 Node.js 一樣依賴 async/await,而且可能是最不令人困惑的。
無論如何,為一個框架收集的所有知識都應該可重用於任何其他框架。
為了簡單起見,我們假設在 Vercel 上託管。我們可能需要vercel.json
來告訴 Vercel 使用哪個執行時間:https://vercel.com/docs/runtimes#advanced-usage/community-runtimes
由於 Vercel 開發工作正常,我們應該預期 Vercel 部署能夠開箱即用。有待測試。
在 Python 中,您需要一個虛擬環境來隔離應用程式之間的套件,而在 JS 中, node_modules
扮演著這個角色。問題是,當您開始工作時必須啟動虛擬環境,因此這對開發人員來說是一個額外的步驟。更糟的是,啟動環境的source
指令不能(上次我檢查過)放入package.json
中,所以你每次都必須記住正確的指令。
這是一個使用create-next-app
引導的 Next.js 專案。
首先,運行開發伺服器:
npm run dev
# or
yarn dev
用瀏覽器開啟http://localhost:3000查看結果。
您可以透過修改pages/index.js
開始編輯頁面。當您編輯文件時,頁面會自動更新。
可以透過 http://localhost:3000/api/hello 存取 API 路由。該端點可以在pages/api/hello.js
中編輯。
pages/api
目錄對應到/api/*
。該目錄中的檔案被視為 API 路由而不是 React 頁面。
要了解有關 Next.js 的更多信息,請查看以下資源:
您可以查看 Next.js GitHub 儲存庫 - 歡迎您提供回饋和貢獻!
部署 Next.js 應用程式最簡單的方法是使用 Next.js 創建者提供的 Vercel 平台。
查看我們的 Next.js 部署文件以了解更多詳細資訊。