Snext 是一个 Next.js 应用程序,可让您在 Python 中创建 API 路由。
接下来,因为它听起来像“蛇”?你知道,就像Python一样。
/! /! /! 这是一个早期的实验
嘿,如果你最终到达那里,你可能是一名 JavaScript 开发人员,而 Python 只是你的第二语言。
以下是如何设置高效的 Python 环境。
我建议使用 Pyenv 来安装 Python。将其视为相当于 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)=> 完成,确实如此! 使用 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 路由,在部署时将充当无服务器函数。但在本地,我们必须让它们成为一台服务器。
在 Next 中从 API 路由获取静态数据的推荐模式是直接在getStaticProps
中重用路由的核心逻辑。但这只是可能的,因为两者都使用 JS。使用 Python,我们需要首先构建 API 路由,运行它们,然后只构建前端。
需要使用 Vercel CLI 进行测试。
我们在最新版本中遇到此错误https://github.com/vercel/community/discussions/103
运行时似乎太大了。参见 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 中的文件夹名称中,否则导入文件时会很麻烦...使用下划线_
。这可能会导致 URL 混乱,因为文件夹名称与 Next 中的路由名称相关联。
(根据我对 Python 的有限经验)我倾向于将 Flask 或 Falcon 与 Express 进行比较:使用很多,但足够少。但 Python 的阻塞行为可能会让 JavaScript 开发人员感到非常困惑。所以我会选择 Sanic,因为它像 Node.js 一样依赖于 async/await,并且可能是最不令人困惑的。
无论如何,为一个框架收集的所有知识都应该可重用于任何其他框架。
为了简单起见,我们假设在 Vercel 上托管。我们可能需要vercel.json
来告诉 Vercel 使用哪个运行时: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
开始编辑页面。当您编辑文件时,页面会自动更新。
可以通过 http://localhost:3000/api/hello 访问 API 路由。该端点可以在pages/api/hello.js
中编辑。
pages/api
目录映射到/api/*
。该目录中的文件被视为 API 路由而不是 React 页面。
要了解有关 Next.js 的更多信息,请查看以下资源:
您可以查看 Next.js GitHub 存储库 - 欢迎您提供反馈和贡献!
部署 Next.js 应用程序的最简单方法是使用 Next.js 创建者提供的 Vercel 平台。
查看我们的 Next.js 部署文档以了解更多详细信息。