Snext は、Python で API ルートを作成できる Next.js アプリケーションです。
次は、「ヘビ」に聞こえるから?パイソンのようなものです。
/! /! /! これは初期の実験です
もしここにたどり着いたとしたら、あなたはおそらく JavaScript 開発者であり、Python は第二言語にすぎません。
ここでは、効率的な Python 環境をセットアップする方法を説明します。
Python をインストールするには Pyenv を使用することをお勧めします。これは、Python を除いて Node Version Manager または Volta と同等であると考えてください。
これは、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 を参照) => 完了、解決しました。 next dev
の代わりに Vercel CLI を使用します。
Vercel CLI コマンドvercel dev
サーバーレス環境をローカルでシミュレートできるため、API ルートをテストできます。
すべての API ルートを./api/
に配置し、 vercel dev
使用すると、Python と Node.js の両方の API ルートを持つことができます (もちろん Next.js フロントエンドは引き続き正常に動作します)。
vercel/vercel#6197 を読む
Next を実行するときは、すべてをlocalhost:3000
で実行する必要がありますが、サーバーは 2 つあります。1 つは Node 用、もう 1 つは Python 用です。これには、いくつかの書き換えロジックが機能する必要があります。
また、デプロイ時にサーバーレス関数として機能する複数の API ルートがある場合もあります。ただし、ローカルでは、それらを 1 つのサーバーにする必要があります。
Next で API ルートから静的データを取得する推奨パターンは、ルートのコア ロジックをgetStaticProps
で直接再利用することです。ただし、これは両方とも JS を使用している場合にのみ可能です。 Python の場合、最初に API ルートを構築して実行し、その後フロントエンドのみを構築する必要があります。
Vercel CLI でテストする必要があります。
最新バージョンではhttps://github.com/vercel/community/discussions/103
というエラーが発生します。Python ランタイムが大きすぎるようです。 vercel/community#103 を参照 (コメント) vercel/vercel#2830 を参照
https://github.com/vercel/vercel/blob/main/errors/now-dev-as-dev-script.md を参照してください。
スクリプトの名前は smth にする必要がありますdev:vercel
そうでない場合は、無限ループが作成されます。
いいえ、Python のフォルダー名には-
使用しないと、ファイルのインポートに失敗することになります...アンダースコア_
を使用してください。これにより、フォルダー名が Next のルート名に関連付けられるため、URL が乱雑になる可能性があります。
(Python に関する私の限られた経験から) 私は、Flask または Falcon を Express と比較する傾向があります。頻繁に使用されますが、最小限で十分です。しかし、Python のブロック動作は JavaScript 開発者にとって非常に混乱する可能性があります。そこで、Node.js と同様に async/await に依存しており、最も混乱が少ない可能性があるため、Sanic を選択します。
とにかく、あるフレームワークのために収集されたすべての知識は、他のフレームワークでも再利用できる必要があります。
簡単にするために、Vercel でのホスティングを想定します。どのランタイムを使用するかを Vercel に指示するには、 vercel.json
が必要になる場合があります: https://vercel.com/docs/runtimes#advanced-usage/community-runtimes
Vercel dev は機能するため、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
を変更します。ファイルを編集すると、ページが自動更新されます。
API ルートには http://localhost:3000/api/hello でアクセスできます。このエンドポイントはpages/api/hello.js
で編集できます。
pages/api
ディレクトリは/api/*
にマップされます。このディレクトリ内のファイルは、React ページではなく API ルートとして扱われます。
Next.js について詳しくは、次のリソースをご覧ください。
Next.js GitHub リポジトリをチェックしてください。フィードバックや貢献は大歓迎です。
Next.js アプリをデプロイする最も簡単な方法は、Next.js の作成者が提供する Vercel Platform を使用することです。
詳細については、Next.js 導入ドキュメントをご覧ください。