Snext adalah aplikasi Next.js yang memungkinkan Anda membuat rute API dengan Python.
Selanjutnya, karena terdengar seperti "ular"?. Anda tahu, seperti Python.
/! /! /! Ini adalah eksperimen awal
Hei, jika Anda sampai di sana, Anda mungkin seorang pengembang JavaScript dan Python hanyalah bahasa kedua Anda.
Berikut adalah cara menyiapkan lingkungan Python yang efisien.
Saya sarankan menggunakan Pyenv untuk menginstal Python. Anggap saja setara dengan Node Version Manager atau Volta tetapi untuk Python.
Ini setara dengan menggunakan Volta atau NVM di ekosistem Node.
Python tidak memiliki folder node_modules
. Itu mungkin yang terbaik, namun hal ini membuatnya cukup sulit untuk menangani ketergantungan ketika Anda memiliki banyak proyek di mesin Anda.
Lingkungan virtual agak mirip: ia akan memberitahu Python untuk menginstal paket secara lokal ke proyek Anda saat ini, dan bukan secara global.
Bedanya dengan Node adalah Anda harus mengaktifkannya secara sistematis.
Siapkan lingkungan Virtual dan instal paket Python:
python3 -m venv ./venv
source ./venv/bin/activate
pip install -r requirements.txt
Anda perlu mengaktifkan virtual env saat Anda mulai bekerja:
source ./venv/bin/activate
Sayangnya, perintah ini tidak berfungsi di skrip NPM. Anda harus mengetiknya setiap saat.
vercel
CLI dapat menyelesaikan masalah kami (lihat https://vercel.com/docs/cli#commands/dev) => selesai, berhasil! Gunakan Vercel CLI alih-alih next dev
.
Perintah Vercel CLI vercel dev
dapat mensimulasikan lingkungan tanpa server secara lokal, sehingga Anda dapat menguji rute API Anda.
Jika Anda memasukkan semua rute API ke dalam ./api/
, dan menggunakan vercel dev
, Anda dapat memiliki rute API Python dan Node.js (dan tentu saja frontend Next.js masih berfungsi dengan baik).
Baca vercel/vercel#6197
Saat menjalankan Next, Anda ingin semuanya berjalan di localhost:3000
, tetapi Anda akan memiliki 2 server: satu untuk Node, satu untuk Python. Ini memerlukan beberapa logika penulisan ulang agar berfungsi.
Selain itu, kami mungkin memiliki beberapa rute API, yang akan bertindak sebagai fungsi tanpa server saat diterapkan. Tapi secara lokal, kita harus menjadikan mereka satu server.
Pola yang disarankan untuk mendapatkan data statis dari rute API Anda di Berikutnya adalah dengan menggunakan kembali logika inti rute secara langsung di getStaticProps
. Namun hal ini hanya mungkin karena keduanya menggunakan JS. Dengan Python, kita perlu membangun rute API terlebih dahulu, menjalankannya, dan kemudian hanya membangun frontendnya saja.
Perlu diuji dengan Vercel CLI.
Kami mengalami kesalahan ini https://github.com/vercel/community/discussions/103
di versi terbaru, waktu proses Python tampaknya terlalu besar. Lihat vercel/community#103 (komentar) Lihat vercel/vercel#2830
Lihat https://github.com/vercel/vercel/blob/main/errors/now-dev-as-dev-script.md
Skrip harus diberi nama lain misalnya dev:vercel
jika tidak maka akan menghasilkan loop tak terbatas.
Tidak ada -
dalam nama folder dengan Python, atau Anda akan kesulitan mengimpor file... Gunakan garis bawah _
. Hal ini dapat menyebabkan URL berantakan karena nama folder terkait dengan nama rute di Berikutnya.
(Dari pengalaman saya yang terbatas dengan Python) Saya cenderung membandingkan Flask atau Falcon dengan Express: sering digunakan, cukup minimal. Namun perilaku pemblokiran Python bisa sangat membingungkan pengembang JavaScript. Jadi saya akan memilih Sanic, karena ini bergantung pada async/await seperti Node.js dan mungkin yang paling tidak membingungkan.
Bagaimanapun, semua pengetahuan yang dikumpulkan untuk satu kerangka kerja harus dapat digunakan kembali untuk kerangka kerja lainnya.
Untuk penyederhanaan, misalkan hosting di Vercel. Kami mungkin memerlukan vercel.json
untuk memberi tahu Vercel runtime mana yang akan digunakan: https://vercel.com/docs/runtimes#advanced-usage/community-runtimes
Karena Vercel dev berfungsi, kami berharap penerapan Vercel dapat langsung berfungsi. Untuk diuji.
Di Python, Anda memerlukan Lingkungan Virtual untuk mengisolasi paket antar aplikasi, sedangkan di JS node_modules
memainkan peran ini. Masalahnya adalah lingkungan virtual harus diaktifkan saat Anda mulai bekerja, jadi itu merupakan langkah tambahan bagi pengembang. Lebih buruknya lagi, perintah source
yang mengaktifkan lingkungan tidak dapat (terakhir kali saya periksa) dimasukkan ke dalam package.json
, jadi Anda harus mengingat perintah yang benar setiap saat.
Ini adalah proyek Next.js yang di-bootstrap dengan create-next-app
.
Pertama, jalankan server pengembangan:
npm run dev
# or
yarn dev
Buka http://localhost:3000 dengan browser Anda untuk melihat hasilnya.
Anda dapat mulai mengedit halaman dengan memodifikasi pages/index.js
. Halaman diperbarui secara otomatis saat Anda mengedit file.
Rute API dapat diakses di http://localhost:3000/api/hello. Titik akhir ini dapat diedit di pages/api/hello.js
.
Direktori pages/api
dipetakan ke /api/*
. File dalam direktori ini diperlakukan sebagai rute API, bukan halaman React.
Untuk mempelajari lebih lanjut tentang Next.js, lihat sumber daya berikut:
Anda dapat memeriksa repositori Next.js GitHub - masukan dan kontribusi Anda diterima!
Cara termudah untuk menerapkan aplikasi Next.js Anda adalah dengan menggunakan Platform Vercel dari pembuat Next.js.
Lihat dokumentasi penerapan Next.js kami untuk detail selengkapnya.