Snext เป็นแอปพลิเคชัน Next.js ที่ให้คุณสร้างเส้นทาง API ใน Python
เน็กซ์เพราะเสียงเหมือน "งู" เหรอ?. คุณก็รู้เหมือนงูหลาม
/! /! /! นี่เป็นการทดลองเบื้องต้น
เฮ้ ถ้าคุณอยู่ตรงนั้น คุณอาจเป็นนักพัฒนา JavaScript และ Python เป็นเพียงภาษาที่สองของคุณ
ต่อไปนี้เป็นวิธีการตั้งค่าสภาพแวดล้อม Python ที่มีประสิทธิภาพ
ฉันแนะนำให้ใช้ Pyenv เพื่อติดตั้ง Python พิจารณาว่าเทียบเท่ากับ Node Version Manager หรือ Volta แต่สำหรับ Python
ซึ่งเทียบเท่ากับการใช้ Volta หรือ NVM ในระบบนิเวศของ Node
Python ไม่มีโฟลเดอร์ node_modules
นั่นอาจเป็นสิ่งที่ดีที่สุด แต่ก็ทำให้การจัดการการขึ้นต่อกันค่อนข้างยากเมื่อคุณมีโปรเจ็กต์จำนวนมากในเครื่องของคุณ
สภาพแวดล้อมเสมือนจริงจะคล้ายกันเล็กน้อย โดยมันจะบอกให้ Python ติดตั้งแพ็คเกจภายในโปรเจ็กต์ปัจจุบันของคุณ ไม่ใช่แบบโกลบอล
ความแตกต่างกับ Node คือคุณต้องเปิดใช้งานอย่างเป็นระบบ
ตั้งค่าสภาพแวดล้อมเสมือนและติดตั้งแพ็คเกจ Python:
python3 -m venv ./venv
source ./venv/bin/activate
pip install -r requirements.txt
คุณต้องเปิดใช้งาน env เสมือนเมื่อคุณเริ่มทำงาน:
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 ซึ่งจะทำหน้าที่เป็นฟังก์ชันไร้เซิร์ฟเวอร์เมื่อใช้งาน แต่ภายในเครื่อง เราต้องสร้างเซิร์ฟเวอร์ให้เป็นเซิร์ฟเวอร์เดียว
รูปแบบที่แนะนำในการรับข้อมูลคงที่จากเส้นทาง API ของคุณใน Next คือการใช้ตรรกะหลักของเส้นทางซ้ำโดยตรงใน 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 ไม่เช่นนั้นคุณจะประสบปัญหาในการนำเข้าไฟล์... ใช้ขีดล่าง _
สิ่งนี้อาจทำให้เกิด URL ที่ยุ่งเหยิงเนื่องจากชื่อโฟลเดอร์เชื่อมโยงกับชื่อเส้นทางใน Next
(จากประสบการณ์อันจำกัดของฉันกับ Python) ฉันมักจะเปรียบเทียบ Flask หรือ Falcon กับ Express: ใช้มากแต่น้อยเพียงพอ แต่พฤติกรรมการบล็อกของ Python อาจทำให้นักพัฒนา JavaScript สับสนได้มาก ดังนั้นฉันจะเลือก Sanic เพราะมันอาศัย async/await เหมือน Node.js และอาจทำให้สับสนน้อยที่สุด
อย่างไรก็ตาม ความรู้ทั้งหมดที่รวบรวมมาสำหรับเฟรมเวิร์กหนึ่งควรสามารถนำมาใช้ซ้ำกับเฟรมเวิร์กอื่นได้
เพื่อให้ง่ายขึ้น เราจะสมมติว่าเป็นโฮสติ้งบน Vercel เราอาจต้องใช้ vercel.json
เพื่อบอก Vercel ว่าควรใช้รันไทม์ใด: https://vercel.com/docs/runtimes#advanced-usage/community-runtimes
เนื่องจาก Vercel dev ใช้งานได้ เราควรคาดหวังว่าการปรับใช้ Vercel จะทำงานนอกกรอบ ที่จะทดสอบ.
ใน Python คุณต้องมี Virtual Environment เพื่อแยกแพ็คเกจของคุณระหว่างแอพต่างๆ ในขณะที่ JS node_modules
มีบทบาทนี้ ปัญหาคือคุณต้องเปิดใช้งานสภาพแวดล้อมเสมือนเมื่อคุณเริ่มทำงาน ดังนั้นนั่นจึงเป็นขั้นตอนเพิ่มเติมสำหรับนักพัฒนา ที่แย่ไปกว่านั้นคือ ไม่สามารถใส่คำสั่ง source
ที่เปิดใช้งานสภาพแวดล้อมได้ (ครั้งสุดท้ายที่ฉันตรวจสอบ) ใน package.json
ดังนั้นคุณต้องจำคำสั่งที่ถูกต้องทุกครั้ง
นี่เป็นโปรเจ็กต์ Next.js ที่บูทด้วย create-next-app
ขั้นแรก ให้รันเซิร์ฟเวอร์การพัฒนา:
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/*
ไฟล์ในไดเร็กทอรีนี้จะถือเป็นเส้นทาง API แทนที่จะเป็นหน้า React
หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับ Next.js โปรดดูแหล่งข้อมูลต่อไปนี้:
คุณสามารถตรวจสอบพื้นที่เก็บข้อมูล Next.js GitHub - ยินดีรับข้อเสนอแนะและการมีส่วนร่วมของคุณ!
วิธีที่ง่ายที่สุดในการปรับใช้แอป Next.js คือการใช้แพลตฟอร์ม Vercel จากผู้สร้าง Next.js
ตรวจสอบเอกสารการติดตั้ง Next.js ของเราเพื่อดูรายละเอียดเพิ่มเติม