Que ORM JavaScript você deve usar em 2018?

by John Vandivier

nota: Maio de 2018: Lido do TypeORM ao LoopBack: uma retrospectiva para uma perspectiva actualizada!

— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — —

Este artigo analisa as soluções de mapeamento Relacional de objetos (ORM) no ecossistema JavaScript, e identifica uma solução ideal baseada em requisitos específicos.

o que é uma ORM e por que é tão importante?as soluções ORM são úteis para facilitar o desenvolvimento de API com base em dados. Os usuários têm necessidades concretas que conduzem o modelo de dados de uma aplicação. No desenvolvimento do legado, esta arquitetura de dados é tipicamente implementada e a versão controlada usando scripts de banco de dados como scripts SQL. Uma biblioteca separada é então usada para a aplicação servidor para executar ações CRUD no banco de dados.

ORMs funcionam como uma API de alto nível para executar CRUD, e hoje em dia a qualidade ORMs também nos permite inicializar os dados através de código. Manipulação complexa de dados, Limpeza e assim por diante, é muitas vezes mais fácil em código. Embora existam ferramentas dedicadas de extração, transformação e carga (ETL), as mesmas tarefas ETL podem ser facilmente implementadas em ORM.a implementação de extrato, transformação e carga com código permite que um sistema integre mais facilmente dados de fontes muito diferentes. As bases de dados SQL de múltiplos sabores, dados NoSQL, dados do sistema de arquivos e dados de terceiros podem ser integrados em uma única linguagem com um ORM JavaScript.

finalmente, o controle de dados orientado a código também permite que um sistema implemente o uso de dados em tempo de execução ou no processo de construção, e adapte o uso flexivelmente durante o processo de desenvolvimento conforme necessário.

recapitulando, Realiza melhorar a produtividade do desenvolvedor, fornecendo uma API de alto nível, em um único idioma, com a funcionalidade que tradicionalmente necessitam de várias ferramentas diferentes e conjuntos de habilidades. Menos necessidades de habilidade, necessidades de ferramentas e horas necessárias facilita a margem do projeto. Requisitos imprevistos e cronologia do projeto são mais bem preparados com configuração flexível de dados de compilação e de execução.

capacidades ORM preferidas

o contexto específico do projecto que leva a esta revisão ORM requer a implementação de uma aplicação JavaScript universal de vanguarda, semelhante ao CMS.

frameworks universais de vanguarda em JavaScript vêm em essencialmente 3 sabores: Angular, React, e Vue. Ou seja, universal Angular, próximo, e Nuxt.

nó nativamente suporta as operações do sistema de arquivos, de modo que os requisitos de dados do sistema de gestão de conteúdo equivalem a uma preferência por suporte de banco de dados abrangente. No total, são considerados os seguintes requisitos::

  1. Suporte para Mongo e MySQL, com preferência para suporte a opções adicionais
  2. Integrar com Webpack
  3. integração com Express
  4. Mínimo de sucesso para o desempenho em tempo de execução
  5. Intuitiva sintaxe
  6. funcionalidades Extra
  7. Alta Github estrela problema rácio
  8. mantido Activamente, sem criar falhas ou preterido dependências

Os Candidatos e os Resultados

Cada candidato recebeu uma pontuação entre 0 e 10 para cada preferencial capacidade. Uma pontuação de 5 significa aceitável. A média de uma coluna pode ser superior ou inferior a 5. Por exemplo, um ORM com suporte para múltiplas bases de dados NoSQL e nenhum suporte para qualquer banco de dados SQL receberá uma pontuação entre 2 e 4. 0 indica a completa falta de um recurso.

ver este post ou esta folha do Google para clicar nas hiperligações ou copiar dados como uma tabela.

a special shout-out to joi, pg, and knex. Estas bibliotecas não estão cheias de ORMs, mas são ótimas no que fazem. Se você não precisa de um ORM completo, dê uma olhada e veja se eles podem atender a sua necessidade.

conclusão

os totais reflectem a utilidade global de cada solução. Os 5 melhores resultados foram:

  1. Loopback
  2. WaterlineMongoose TypeORMSequelize

uma combinação de necessidades específicas do projecto, factores omitidos, e preferência pessoal levar às 3 melhores escolhas.

Waterline is heavily integrated into the Sails framework and Mongoose only supports MongoDB.

Sequelize e NodeORM2 estão restritos ao SQL e eles não têm geração API.

devido à sintaxe TypeScript, TypeORM se integra bem com um projeto Angular.

Como desenvolvedor, eu recomendo prototipagem mais de uma solução superior para identificar o vencedor real. Os 3 melhores soluções, que são todos os protótipos candidatos, incluem:

  1. Loopback
  2. TypeORM
  3. Caminte

eu enviei esta informação para outros desenvolvedores no projeto, e, como uma equipe, nós decidimos experimentar TypeORM primeiro. Volte mais tarde para a retrospectiva!

Deixe uma resposta

O seu endereço de email não será publicado.