Snext는 Python에서 API 경로를 생성할 수 있는 Next.js 애플리케이션입니다.
다음으로, "뱀"처럼 들리기 때문이죠?. 아시다시피, 파이썬처럼 말이죠.
/! /! /! 이는 초기 실험입니다.
만약 당신이 거기까지 간다면 당신은 아마도 JavaScript 개발자이고 Python은 당신의 두 번째 언어일 뿐입니다.
효율적인 Python 환경을 설정하는 방법은 다음과 같습니다.
Python을 설치하려면 Pyenv를 사용하는 것이 좋습니다. 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 참조) => 완료되었습니다! 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개입니다. 하나는 Node용이고 다른 하나는 Python용입니다. 이를 위해서는 일부 재작성 논리가 필요합니다.
또한 배포 시 서버리스 기능으로 작동하는 여러 API 경로가 있을 수 있습니다. 하지만 로컬에서는 하나의 서버로 만들어야 합니다.
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 else로 지정해야 합니다(예 dev:vercel
. 그렇지 않으면 무한 루프가 생성됩니다.
Python에는 폴더 이름 -
없습니다. 그렇지 않으면 파일을 가져오는 데 어려움을 겪게 됩니다... 밑줄 _
사용하세요. 폴더 이름이 Next의 경로 이름과 연결되어 있기 때문에 이로 인해 URL이 지저분해질 수 있습니다.
(Python에 대한 제한된 경험으로 볼 때) 저는 Flask나 Falcon을 Express와 비교하는 경향이 있습니다. 많이 사용하고 충분히 최소화했습니다. 그러나 Python의 차단 동작은 JavaScript 개발자에게 매우 혼란스러울 수 있습니다. 그래서 Sanic을 선택하겠습니다. 왜냐하면 Node.js처럼 async/await에 의존하고 혼란이 가장 적기 때문입니다.
어쨌든, 한 프레임워크에 대해 수집된 모든 지식은 다른 프레임워크에서 재사용 가능해야 합니다.
단순화를 위해 Vercel에서 호스팅한다고 가정하겠습니다. Vercel에게 사용할 런타임을 알려주려면 vercel.json
이 필요할 수 있습니다. 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
수정하여 페이지 편집을 시작할 수 있습니다. 파일을 편집하면 페이지가 자동으로 업데이트됩니다.
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 플랫폼을 사용하는 것입니다.
자세한 내용은 Next.js 배포 설명서를 확인하세요.