Snext هو تطبيق Next.js الذي يتيح لك إنشاء مسارات API في Python.
Snext، لأنه يبدو وكأنه "ثعبان"؟. كما تعلمون، مثل بايثون.
/! /! /! هذه تجربة مبكرة
مرحبًا، إذا انتهى بك الأمر هناك، فمن المحتمل أنك مطور JavaScript وPython هي لغتك الثانية فقط.
إليك كيفية إعداد بيئة بايثون فعالة.
أقترح استخدام Pyenv لتثبيت Python. اعتبره مكافئًا لـ Node Version Manager أو Volta ولكن بالنسبة لـ Python.
وهذا يعادل استخدام 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/
، واستخدمت vercel dev
، فيمكنك الحصول على مسارات واجهة برمجة تطبيقات Python وNode.js (وبالطبع لا تزال الواجهة الأمامية لـ Next.js تعمل بشكل جيد).
اقرأ فيرسيل/فيرسيل#6197
عند تشغيل Next، ستحتاج إلى تشغيل كل شيء على localhost:3000
، ولكن سيكون لديك خادمين: واحد لـ Node، والآخر لـ Python. وهذا يتطلب بعض إعادة كتابة المنطق للعمل.
أيضًا، قد يكون لدينا مسارات متعددة لواجهة برمجة التطبيقات، والتي ستكون بمثابة وظائف بدون خادم عند نشرها. لكن محليا يجب أن نجعلهم خادما واحدا.
النمط الموصى به للحصول على بيانات ثابتة من مسارات واجهة برمجة التطبيقات (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
يجب تسمية البرنامج النصي بشيء آخر على سبيل المثال dev:vercel
وإلا فإنه ينشئ حلقة لا نهائية.
لا -
في أسماء المجلدات في بايثون، وإلا ستواجه صعوبة في استيراد الملفات... استخدم الشرطة السفلية _
. قد يؤدي هذا إلى عناوين URL فوضوية لأن اسم المجلد مرتبط باسم المسار في التالي.
(من تجربتي المحدودة مع 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، تحتاج إلى بيئة افتراضية لعزل الحزم الخاصة بك بين التطبيقات، بينما في node_modules
في JS تلعب هذا الدور. المشكلة هي أنه يجب تفعيل البيئة الافتراضية عند بدء العمل، وهذه خطوة إضافية للمطور. ولجعل الأمر أسوأ، لا يمكن وضع الأمر 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 للحصول على مزيد من التفاصيل.