Esteja você procurando decidir a estrutura da web para seu próximo projeto ou considerando experimentar AdonisJs ou Django em geral, este artigo lhe dará uma ideia do que esperar de ambos.

O que são AdonisJs e Django?

AdonisJs e Django são frameworks de desenvolvimento web full-stack com recursos semelhantes e exclusivos, tornando-os adequados para certos tipos de projetos. Neste artigo, daremos uma olhada mais de perto na comparação entre as duas estruturas.

De acordo com o site AdonisJs :

AdonisJs é uma estrutura MVC Node.js que é executada em todos os principais sistemas operacionais. Ele oferece um ecossistema estável para escrever aplicativos da web do lado do servidor para que você possa se concentrar nas necessidades de negócios ao finalizar qual pacote escolher ou não. AdonisJs favorece a alegria do desenvolvedor com uma API consistente e expressiva para construir aplicativos da web full-stack ou servidores de micro API.

E o site Django descreve o Django como:

Uma estrutura da web Python de alto nível que incentiva o desenvolvimento rápido e um design limpo e pragmático. Construído por desenvolvedores experientes, ele cuida de grande parte do trabalho de desenvolvimento da web, para que você possa se concentrar em escrever seu aplicativo sem precisar reinventar a roda. É gratuito e de código aberto.

Resumindo, embora você possa usar AdonisJs e Django para construir qualquer tipo de aplicativo, prefiro usar Django para aplicativos relacionados ao gerenciamento de conteúdo e AdonisJs para aplicativos baseados em SaaS.

Agora, vamos ver o que é necessário para configurá-los.

Configurando AdonisJs

Configurar o AdonisJs é fácil. Por ser uma estrutura da web baseada em Node.js, você deve ter Node.js e npm instalados.

Você pode configurá-lo com a CLI, npx ou usando comandos Git.

Para configurar AdonisJs usando a CLI, você precisará instalar a CLI globalmente primeiro, executando o comando abaixo em seu terminal:

 npm install-g @ adonis/cli 

Pode demorar um pouco dependendo da intensidade da sua conexão com a Internet. Quando terminar, você poderá executar adonis new musicplayer em seu terminal para criar um novo aplicativo Adonis chamado musicplayer .

Para usar o Git para instalar o AdonisJS, você deve ter Git instalado. Agora, execute qualquer um dos comandos abaixo.

 # Fullstack
> git clone--dissociate  # API
> git clone--dissociate  # Magro
> git clone--dissociate 

Nos comandos Git acima, AdonisJs vem totalmente empacotado com três tipos de aplicativos: uma versão API (se você só precisa construir uma API), uma versão slim (sem a API) ou fullstack (tudo que AdonisJs tem). Cabe a você decidir qual configurar.

Mais ainda, para processar outras tarefas de linha de comando com AdonisJs, o Adonis vem com uma CLI chamada Ace Ace é uma ferramenta poderosa criada para tornar a construção e manutenção de aplicativos AdonisJs fácil e divertida.

Configurando Django

Django é uma estrutura da web Python, o que significa que precisaremos instalar o Python antes de instalar o Django. Usaremos o gerenciador de pacotes Python pip para instalar o Django, conforme mostrado abaixo:

 pip install Django

Depois que o Django estiver instalado, você pode usar a ferramenta de linha de comando do Django django-admin para criar seu primeiro projeto.

 django-admin startproject school_portal

Tem seu primeiro projeto instalado e funcionando?

Incrível. Você também precisará criar seu primeiro aplicativo para este projeto porque Django permite que você crie aplicativos reutilizáveis ​​com o conceito de aplicativos. Você pode ter quantos aplicativos precisar.

Django fornece um script no arquivo chamado manage.py . Com esse script, você pode automatizar tudo o que o Django permite, como fazer migrações, fazer login no shell do dJango e assim por diante.

Você pode usar o comando startapp para criar um novo aplicativo conforme mostrado abaixo:

 python manage.py startapp student

Além disso, é importante observar que o Django usa o conceito de ambiente virtual Python para criar projetos em ambientes isolados. Portanto, para a maior parte dele, você precisará instalar e ativar o Ambiente virtual Python antes de executar esses comandos.

Ao contrário do AdonisJs, o Django não tem uma instalação de API. No entanto, ele se integra bem com o pacote Django Rest Framework, caso você queira construir uma API com Django e não haja uma instalação mínima do Django.

Django é conhecido por ter “baterias incluídas”-tudo que você precisa para colocar seu projeto em funcionamento o mais rápido possível.

Geralmente, a configuração do Django é um pouco mais complicada do que a do AdonisJs.

Arquitetura de AdonisJs e Django

Enquanto o AdonisJs usa a arquitetura MVC (Model View Controller) popular, o Django usa um design MVT (Model View Template) ligeiramente exclusivo. Veremos como tudo se junta na próxima seção.

Modelos para AdonisJs e Django

Ambas as estruturas usam sua definição de modelo de maneiras diferentes. O modelo Django descreve tudo o que existe sobre uma entidade. Normalmente, você o atualizará caso seja necessário.

Mas o modelo AdonisJs é diferente. Ele apenas define o nome da classe do modelo, estende a API do modelo e, em seguida, exporta o modelo.

A maior parte do trabalho que o Django faz no modelo é feito no nível de migração para AdonisJs.

Aqui está um exemplo de um modelo de banco de dados Django. Observe que você terá que criar este modelo manualmente como desejar.

 dos modelos de importação django.db classe Movie (models.Model): title=models.CharField (max_length=100, unique=True) year=models.DateField (auto_now=False, auto_now_add=False) length=models.IntegerField (null=True, blank=True) director_name=models.CharField (max_length=150, null=True, blank=True) language=models.CharField (max_length=100, null=True, blank=True) classe Meta: db_table="filme" def __str __ (self): return self.title

Você pode usar o banco de dados Django ferramenta inspectdb para gerar um modelo a partir de um banco de dados legado.

 python manage.py inspectdb> models.py

Isso pode ser útil se você estiver movendo sua pilha de aplicativos atual para Django.

Aqui está um exemplo de um modelo de dados AdonisJs:

'usar estrito' Const Model=use ('Model') classe Movie extends Model {
} module.exports=Filme

Para criar este modelo, execute o comando em um terminal dentro do diretório raiz do seu projeto:

./ace make: modelo Post

O resto da definição do modelo será feito no arquivo de migração.

Visualizações e modelos em AdonisJs e Django

Django usa Django Template Language (DTL) para criar modelos-o ”T” em seu MVT. Este mecanismo de modelagem é semelhante ao Jinja e permite que você escreva código Python dentro dos arquivos HTML de modelo e tem suporte para divisão de arquivo.

Geralmente tem um arquivo de modelo básico que pode ser estendido para criar outros layouts de página. É muito flexível de se trabalhar e expressivo.

Aqui está um exemplo de código Python em um modelo Django:

 {% para festa em festas%} 
{% endfor%}

Como o Django, o AdonisJs vem pré-empacotado com o Edge Templating Engine . Aqui está um exemplo de sua aparência.

 @if (nome de usuário) 

Olá {{username}}

@outro

Olá anônimo

@fim se

Você notou a sintaxe de bigode em ambos- {{}} ? AdonisJs e DTL usam a sintaxe do bigode de alguma forma para processar conteúdo JavaScript dinâmico-na forma de interpolação dentro do HTML.

A visualização do Django oferece uma função diferente do que uma visualização faz em uma estrutura MVC tradicional, como Adonis, Laravel, etc. A visualização do Django é onde você escreve a lógica de negócios do seu aplicativo.

Aqui está um exemplo de como uma visualização Django se parece:

 def index (pedido): users=User.objects.all () contexto={"partes": usuários} retornar render (solicitação,"usuário/index.html", contexto)

Controladores em AdonisJs

Django não tem controladores, mas Adonis tem. Para Django, como afirmamos anteriormente, você escreve toda a sua lógica de negócios no arquivo views.py . Mas Adonis tem um controlador que faz o que deve-responder a solicitações HTTP, delegar tarefas aos serviços apropriados e processar a lógica de negócios também.

Aqui está um exemplo de controlador AdonisJs:

 const User=use ('App/Model/User') class UsersController { * índice (pedido, resposta) { const users=yield User.all () yield response.sendView ('users.list', {users: users.toJSON ()}) } }

Suporte ORM para AdonisJs e Django

Uma das melhores características do Django e AdonisJs são seus expressivos ORMs (Object Relational Mappers) que permitem que você interaja com seu banco de dados sem realmente escrever consultas específicas de banco de dados reais.

Mesmo quando você decidir alterar seu banco de dados, não precisará reescrever todas as suas consultas novamente. Basta instalar o driver de banco de dados para esse banco de dados específico, fazer migrações e pronto! Seu aplicativo está ativo novamente.

O Django leva isso mais longe, permitindo que você use consultas brutas no caso de sua consulta ser muito complexa e não caber na API de consulta existente.

Adonis ORM é chamado de Lucid e é projetado com o padrão de design de registro ativo, o mesmo que Django ORM. Lucid usa Knex.js -um criador de consultas SQL “baterias incluídas” para Postgres , MSSQL , MySQL , MariaDB , SQLite3 , Oracle e Amazon Redshift -internamente. Isso significa que o Lucid oferece suporte a esses bancos de dados.

Django ORM também oferece suporte a uma ampla variedade de bancos de dados, como PostgreSQL, MariaDB, MySQL, Oracle e SQLite.

Você deve ter notado como usamos anteriormente ambos os ORMs para consultar a tabela do usuário em ambas as estruturas.

Aqui está de novo. Para Lucid:

const users=yield User.all ()

Para Django ORM

users=User.objects.all ()

Documentação para AdonisJs e Django

Ao contrário do Django, o AdonisJs oferece uma documentação limpa com exemplos de casos de uso. Não me interpretem mal, a documentação do Django não é ruim, mas, na minha opinião, Adonis a faz mais limpa e melhor. Na verdade, em algumas partes da documentação , existem vídeos para ajuda na compreensão de conceitos e implementações.

Qual é a curva de aprendizado para AdonisJs e Django?

A curva de aprendizado para ambas as estruturas pode ser descrita como suave. Se você já conhece JavaScript/Node.js e está familiarizado com o padrão de design MVC, escolher AdonisJs não será difícil.

Para Django, se você já está familiarizado com Python, não será difícil colocá-lo em funcionamento. Conforme você aprende e desenvolve com base nisso, fica mais fácil.

Comunidades de desenvolvedores

O AdonisJS tem uma comunidade crescente de desenvolvedores porque foi iniciado cerca de 13 anos (2015) após a criação do Django (2003). No momento em que este livro foi escrito, Django tinha mais de 55,1 mil estrelas no GitHub, enquanto Adonis tinha cerca de 9,4k estrelas.

Segurança em AdonisJs e Django

A segurança na web é uma tarefa difícil. Mas a boa notícia é que AdonisJs e Django levam a segurança a sério. Portanto, eles são projetados para serem protegidos. Vamos ver algumas implementações de segurança em ambos.

1.) Injeção de SQL : O Django ORM cuida apropriadamente de qualquer forma de injeção de SQL escapando de qualquer parâmetro que o usuário controle. Isso geralmente é uma vantagem para o uso de um ORM, pois ele faz isso para você. Esse comportamento também se aplica a AdonisJs, pois ele também usa ORM adequado.

No entanto, como vimos anteriormente, o Django permite que você escreva uma consulta bruta, se desejar. Mas se você não tiver o cuidado de escapar dos parâmetros dentro do controle do usuário, poderá abrir portas para injeções de SQL.

2.) Ataques de script entre sites (XSS) e mais : o Adonis como uma estrutura tem um Shield middleware que ajuda a prevenir seu aplicativo da maioria dos ataques conhecidos como XSS, detecção de conteúdo e injeção de script. Ele também tem implementações para CORS (compartilhamento de recursos de origem cruzada) e CSRF (cross-site request forgery) middlewares separadamente.

O Django também implementa a maioria dessas medidas de segurança internamente. Quanto aos ataques de força bruta, tanto o Adonis quanto o Django não implementam isso por padrão. Você terá que usar um plug-in externo para fazer isso.

Embora a estrutura esteja ajudando você na maior parte do trabalho com a segurança de seu aplicativo, é importante que você também siga as práticas recomendadas para garantir que seu aplicativo permaneça seguro.

Autenticação em AdonisJs e Django

O AdonisJS e o Django vêm com um sistema de autenticação robusto. Você não precisa mais se preocupar com hashing de senha ou outros problemas que normalmente encontra ao iniciar um novo projeto.

Em geral, a autenticação AdonisJs é mais cheia de recursos porque também fornece um middleware persona que permite que você trabalhe com perfis de usuário de forma eficaz. Para algumas das tarefas que AdonisJs é capaz de realizar internamente, você terá que usar uma biblioteca externa como Django Allauth para gerenciá-las no Django.

A autenticação do usuário do Django também pode causar alguns problemas se, depois de começar a construir seu aplicativo, você quiser personalizar a forma como a autenticação funciona, porque vai exigir um trabalho complexo para ser executado.

Existe um modelo de usuário personalizado, mas que geralmente é usado quando você está iniciando um novo projeto. AdonisJs é mais flexível e tolerante com isso.

Roteamento

O roteamento é uma parte essencial de todo framework. AdonisJs e Django têm suas maneiras exclusivas de lidar com o roteamento e o roteamento de grupo.

Aqui está uma rota simples do Django:

 urlpatterns=[ caminho ('books/', views.book_index),
]

Aqui está um para AdonisJs:

 Route.get ('posts','PostController.index')

Se você deseja agrupar rotas semelhantes, AdonisJs fornece uma API Route.group para você:

//Agrupado
Route.group (()=> { Route.get ('usuários', encerramento) Route.post ('usuários', encerramento)
}). prefixo ('api/v1')

Para implementar algo semelhante com Django, você terá que usar o namespace de URL do Django. O namespacing em URLs do Django permite que você identifique um grupo de URLs com um nome ou atributo de URL comum.

 urlpatterns=[ re_path ('weblog/', include ('blog.urls')), caminho ('books/', views.book_index),
]

Todos os URLs no aplicativo blog terão o atributo weblog .

Quando se trata de roteamento de subdomínios, o AdonisJs oferece suporte imediato. Por exemplo, posso facilmente ter um domínio como eze.logrocket.com em meu aplicativo AdonisJs sem me preocupar.

É tão simples quanto mostrado abaixo:

 Route.group (()=> { Route.get ('/', ({subdomains})=> { return `O nome de usuário é $ {subdomains.user}` })
}). domínio (': usuário.myapp.com')

Django não tem esse recurso. Se você fosse criar um aplicativo multilocatário, esse seria um recurso útil e um bom motivo para usar o AdonisJs.

Gerenciamento de dependências

Como o AdonisJs é executado em Node.js, ele usa o gerenciador de pacotes npm para gerenciar dependências. Portanto, você pode definir todas as suas dependências no arquivo package.json .

Django usa o arquivo de gerenciamento de dependência Python required.txt para definir todas as dependências do aplicativo.

Se você deseja começar a usar o Django desde o primeiro dia, o Django vem com um sistema de gerenciamento de conteúdo totalmente configurado com autenticação, permissões e permissões de grupo. Você só precisa criar uma senha de superadministrador. O AdonisJs não tem esse recurso específico. Embora Django seja incrível com todas as baterias incluídas, acho que preciso hackear coisas mais do que gostaria.

Conclusão

AdonisJs e Django são dois frameworks de desenvolvimento web muito poderosos. Ambos têm seus prós e contras. No final, eles são apenas ferramentas e, dependendo do tipo de projeto, interesse e pilha preferida, você decidirá a melhor opção para seu projeto.

Você terá que aceitar as falhas e talvez aumentar com outras ferramentas da comunidade ou as que você construirá e também aproveitar as melhores partes dessas estruturas.

A postagem AdonisJs vs. Django: Qual estrutura da web você deve usar? apareceu primeiro no LogRocket Blog .

Source link