Snext é um aplicativo Next.js que permite criar rotas de API em Python.
A seguir, porque soa como "cobra"? Você sabe, como um Python.
/! /! /! Este é um experimento inicial
Ei, se você chegar lá, provavelmente é um desenvolvedor JavaScript e Python é apenas sua segunda linguagem.
Veja como configurar um ambiente Python eficiente.
Sugiro usar o Pyenv para instalar o Python. Considere-o equivalente ao Node Version Manager ou Volta, mas para Python.
Isso equivale a usar Volta ou NVM no ecossistema Node.
Python não possui uma pasta node_modules
. Talvez seja melhor assim, mas torna bastante difícil lidar com dependências quando você tem muitos projetos em sua máquina.
Um ambiente virtual é um pouco semelhante: ele dirá ao Python para instalar pacotes localmente no seu projeto atual, e não globalmente.
A diferença com o Node é que você deve habilitá-los sistematicamente.
Configure um ambiente virtual e instale os pacotes Python:
python3 -m venv ./venv
source ./venv/bin/activate
pip install -r requirements.txt
Você precisa ativar o ambiente virtual quando começar a trabalhar:
source ./venv/bin/activate
Infelizmente, este comando não funciona em scripts NPM. Você tem que digitá-lo sempre.
vercel
CLI pode resolver nossos problemas (veja https://vercel.com/docs/cli#commands/dev) => pronto, resolve! Use Vercel CLI em vez de next dev
.
O comando Vercel CLI vercel dev
é capaz de simular um ambiente sem servidor localmente, para que você possa testar suas rotas de API.
Se você colocar todas as rotas de API em ./api/
e usar vercel dev
, poderá ter rotas de API Python e Node.js (e, claro, o frontend Next.js ainda funciona bem).
Leia vercel/vercel#6197
Ao executar o Next, você desejará que tudo seja executado em localhost:3000
, mas terá 2 servidores: um para Node e outro para Python. Isso requer alguma lógica de reescrita para funcionar.
Além disso, podemos ter várias rotas de API, que atuarão como funções sem servidor quando implantadas. Mas localmente, devemos torná-los um servidor.
O padrão recomendado para obter dados estáticos de suas rotas de API em Next é reutilizar a lógica principal da rota diretamente em getStaticProps
. Mas isso só é possível porque ambos estão utilizando JS. Com Python, precisaríamos primeiro construir as rotas da API, executá-las e depois construir apenas o frontend.
Precisa ser testado com Vercel CLI.
Temos este erro https://github.com/vercel/community/discussions/103
na versão mais recente, o tempo de execução do Python parece muito grande. Veja vercel/community#103 (comentário) Veja vercel/vercel#2830
Consulte https://github.com/vercel/vercel/blob/main/errors/now-dev-as-dev-script.md
O script deve ser nomeado smth, caso contrário, por exemplo, dev:vercel
caso contrário, ele criará um loop infinito.
Não -
em nomes de pastas em Python, ou você terá problemas ao importar arquivos... Use sublinhado _
. Isso pode levar a URLs confusos porque o nome da pasta está vinculado ao nome da rota em Próximo.
(Pela minha experiência limitada com Python) Eu tenderia a comparar Flask ou Falcon com Express: usado muito, mínimo o suficiente. Mas o comportamento de bloqueio do Python pode ser muito confuso para o desenvolvedor JavaScript. Então, optarei pelo Sanic, porque ele depende de async/await como o Node.js e pode ser o menos confuso.
De qualquer forma, todo o conhecimento reunido para um framework deve ser reutilizável para qualquer outro framework.
Para simplificar, vamos supor uma hospedagem no Vercel. Podemos precisar de um vercel.json
para informar ao Vercel qual tempo de execução usar: https://vercel.com/docs/runtimes#advanced-usage/community-runtimes
Como o desenvolvimento do Vercel funciona, devemos esperar que a implantação do Vercel funcione imediatamente. Para ser testado.
Em Python, você precisa de um ambiente virtual para isolar seus pacotes entre aplicativos, enquanto em JS node_modules
desempenha essa função. O problema é que o ambiente virtual deve ser ativado quando você começar a trabalhar, então essa é uma etapa adicional para o desenvolvedor. Para piorar, o comando source
que ativa o ambiente não pode ser (da última vez que verifiquei) colocado package.json
, então você deve se lembrar do comando correto sempre.
Este é um projeto Next.js inicializado com create-next-app
.
Primeiro, execute o servidor de desenvolvimento:
npm run dev
# or
yarn dev
Abra http://localhost:3000 com seu navegador para ver o resultado.
Você pode começar a editar a página modificando pages/index.js
. A página é atualizada automaticamente conforme você edita o arquivo.
As rotas da API podem ser acessadas em http://localhost:3000/api/hello. Este endpoint pode ser editado em pages/api/hello.js
.
O diretório pages/api
é mapeado para /api/*
. Os arquivos neste diretório são tratados como rotas de API em vez de páginas React.
Para saber mais sobre Next.js, dê uma olhada nos seguintes recursos:
Você pode verificar o repositório Next.js GitHub - seus comentários e contribuições são bem-vindos!
A maneira mais fácil de implantar seu aplicativo Next.js é usar a plataforma Vercel dos criadores do Next.js.
Confira nossa documentação de implantação do Next.js para mais detalhes.