Executando verificação de segurança...
1

[DJANGO VS NEXT.JS] [ FULL STACK] [INICIANTE] [CRÍTICA] Minha experiência

Após 16 horas na tentativa de entender como funciona o processo para criar uma aplicação em Next.js, percebi que precisava vir compartilhar com vocês o que eu acho sobre isso.
Foi complicado, não sei se é porque não tenho experiência suficiente. Sei que para alguns pode até ser mais fácil, mas criar uma aplicação Next.js é complicado e demorado.
Os processos que eu segui foram:

  • Criar o backend:
    Usando o Django Rest Framework, criei um backend básico para autenticação, utilizando o Djoser para gerenciar o JWT na aplicação.
  • Testando as views no POSTMAN:
    Essa foi uma etapa tranquila após a conclusão do backend, graças a essa ferramenta maravilhosa.
    Toda vez que é feita a requisição no endpoint /jwt/create/ e são enviados o email e senha no corpo da requisição, são retornados o token de acesso (access) e o token de atualização (refresh), que são definidos como cookies para facilitar a validação do usuário sem precisar adicionar o Bearer manualmente.
{
   "email": "",
   "password: ""
}

{
   "access": ""
   "refresh": ""
}

class JWTAuthentication(JWTAuthentication):
    def authenticate(self, request):
        try:
            header = self.get_header(request)

            if header is None:
                raw_token = request.COOKIES.get(settings.AUTH_COOKIE)
            else:
                raw_token = self.get_raw_token(header)

            if raw_token is None:
                return None

            validated_token = self.get_validated_token(raw_token)

            return self.get_user(validated_token), validated_token
        except:
            return None
  • Agora vem a parte horrível.
    Perdi várias horas tentando entender o que é um provider, e acho que falhei miseravelmente. Se não estou errado, é a implementação para conectar ao banco de dados facilitando as queries e autenticação do usuário. Cara, que negócio complicado. Fiquei perdido várias vezes. Para isso, usei:
    "dependencies": {
        "@reduxjs/toolkit": "^1.9.5",
        "@tailwindcss/forms": "^0.5.4",
        "@types/node": "20.4.2",
        "@types/react": "18.2.15",
        "@types/react-dom": "18.2.7",
        "async-mutex": "^0.4.0",
        "autoprefixer": "10.4.14",
        "classnames": "^2.3.2",
        "eslint": "8.45.0",
        "eslint-config-next": "13.4.10",
        "next": "13.4.10",
        "postcss": "8.4.26",
        "react": "18.2.0",
        "react-dom": "18.2.0",
        "react-icons": "^4.10.1",
        "react-redux": "^8.1.1",
        "react-toastify": "^9.1.3",
        "redux-logger": "^3.0.6",
        "redux-thunk": "^2.4.2",
        "tailwindcss": "3.3.3",
        "typescript": "5.1.6"
    },
    
  • Tive que criar vários utilitários para poder fazer coisas simples e deixar o código "limpo". No meu caso, foram necessários três arquivos apenas para gerenciar um componente de formulário. Se alguém for fazer a manutenção daquilo, fica maluco.
  • Tive muitos erros ao fazer tudo funcionar, e é difícil para iniciantes fazer o debug. Achei bem complexo.

Ainda não finalizei o projeto e só estou com as telas de Login e Cadastro prontas. Pode ser falta de conhecimento, sim, e creio que seja a maior parte do problema. No entanto, em comparação com o Python, o JavaScript, diferentemente , requer uma quantidade maior de arquivos e linhas de código para implementar uma funcionalidade. Não fiz os cálculos, mas acredito que uma aplicação do mesmo nível em Django reduziria cerca de 50% das linhas de código.
No vídeo abaixo, o criador do site demonstrado utiliza o Django HTMX, Django e Django Components para migrar de uma aplicação React que continha muitas linhas de código e era complexa de manter. Eles levaram 6 meses para finalizar, mas, segundo ele, a qualidade ficou muito melhor, com uma manutenção mais fácil e compreensível.
DJANGO CON 2022

No entanto, estou correndo atrás do que está na "MODA", porque não há muitas vagas de Django no Brasil. Isso é importante de se saber. Estou buscando acompanhar o que está em alta. Não é fácil, é complexo, cansativo, demorado e estressante, mas temos que continuar. Hoje, se eu fosse começar como comecei no passado, eu escolheria frameworks em Java, pois o Python é moleza. No final das contas, a única coisa difícil é encontrar emprego, mas além disso, é simples, rápido e seguro, sem precisar criar milhares de camadas de autenticação e middlewares manualmente. Existem também processos assíncronos e bons geradores de API como o Django Rest Framework, FastAPI e Flask.

A questão é a seguinte: onde eu errei e onde eu preciso melhorar? Porque é complicado. A história de aprender fazendo é verdadeira, mas para um "iniciante", esses desafios podem ser desanimadores. Já criei aplicações muito mais bonitas do que a que fiz hoje em termos de aspecto visual, com a mesma qualidade de componentes.

A verdade é que eu queria muito uma oportunidade de emprego, sou estudante de farmácia estou indo para o quarto ano já, não vou desistir da minha formação pois posso juntar o util ao agradável. Porém se um dia surgir uma oportunidade melhor eu troco a vida de ficar fazendo análise com solventes cancerígenos por um estresse na mesa do computador com um café do lado, vibrando de tanta ansidade por causa da cafeina, rsrsrs.

Resumindo, gostei sim de aprender um pouco sobre next, mas acho que preciso seguir uma outra forma de aprender, mas entendo que a ligação entre front e back é essêncial e se não entender isso de uma maneira mais compreensível creio que estarei preso em um looping setado como while true sem o break no meio.

Carregando publicação patrocinada...