O Projeto Pai do SQL: Gere rapidamente dados SQL e de simulação, melhorando muito a eficiência do desenvolvimento e dos testes!
Projeto full stack front-end e back-end Por programador Yupi
Não é fácil de fazer, por favor não o utilize para uso comercial ou revenda! ! !
Experiência on-line: http://sqlfather.yupi.icu
Demonstração em vídeo (tutorial de uso): https://www.bilibili.com/video/BV1eP411N7B7/
Se você acha que este projeto é útil, seguir o proprietário do UP e três links consecutivos é o maior apoio, obrigado!
Repositório de código front-end: https://github.com/liyupi/sql-father-frontend-public
Repositório de código de back-end: https://github.com/liyupi/sql-father-backend-public
️ Eu dei a você uma explicação detalhada das ideias criativas + seleção de tecnologia + design do sistema + interpretação do código-fonte + método de redação do currículo deste projeto em meu próprio planeta de conhecimento de programação. Se você quiser escrever este projeto em seu currículo ou estudá-lo em profundidade. , você está convidado a participar do My Planet para assistir.
A origem do projeto foi que Yupi queria resolver o problema de escrever SQL repetidamente para criar tabelas e criar dados ao desenvolver projetos. A propósito, era de código aberto para que todos pudessem aprender e melhorar juntos ~.
Imagine só: quando trabalho em um novo projeto, não preciso escrever SQL para criar uma tabela ou dados, mas posso obter diretamente uma tabela com dados falsos.
Alguns alunos perguntaram por que o projeto não se chamava SQL Mother? Então deixe-me perguntar por que a herança é chamada de classe pai?
Quer você seja um front-end, back-end, teste, desenvolvimento de dados, ciência de dados ou estudante de pesquisa, acredito que esta ferramenta será útil para você!
Os principais cenários de aplicação são os seguintes:
1) Ao preencher formulários visuais, gere rapidamente instruções de criação de tabelas, dados e códigos simulados e diga adeus ao trabalho repetitivo!
2) Suporta vários métodos de importação rápida. Por exemplo, se você já possui uma tabela de dados pronta, você pode importar diretamente instruções de criação de tabela e gerar dados simulados com um clique; você também pode importar diretamente tabelas do Excel para concluir rapidamente a criação de tabelas; tabela e dados serão gerados automaticamente digitando algumas palavras!
3) Suporta múltiplas regras para geração de dados de simulação. Por exemplo, valores fixos, valores aleatórios, expressões regulares, valores incrementais e até suporte à seleção de vocabulário para gerar valores aleatórios dentro de um intervalo específico!
4) Vocabulário de suporte, design de tabela e compartilhamento de informações de campo. Você pode aprender ou consultar designs de tabelas de biblioteca de outros alunos ou usar diretamente tabelas e campos de biblioteca prontos para gerar ou realizar desenvolvimento secundário com um clique.
5) Você pode usar diretamente o léxico pronto para construir um dicionário ou usá-lo como um conjunto de dados para pesquisa e apoiar a melhoria secundária do léxico!
O projeto em si possui funções completas (divididas em frontend de usuário e backend de gerenciamento), atende aos padrões online, possui design de arquitetura claro e estrutura de diretórios padronizada.
O front-end usa formulários complexos aninhados, dinâmicos e dobráveis e editores de código; o back-end usa uma variedade de padrões de design convencionais, autenticação de aspecto AOP, etc., o que é muito digno de ser aprendido por amigos.
Além disso, por favor, me dê alguns conselhos dos marmanjos?
Principais tecnologias:
Bibliotecas dependentes:
Principais tecnologias:
Bibliotecas dependentes:
Instale dependências:
npm run install
correr:
npm run dev
Pacote:
npm run build
Ele compartilha principalmente a arquitetura geral e o design central do sistema e não apresenta muito sobre a parte tradicional de desenvolvimento web.
Conceito central de design: unifique cada método de entrada em um esquema claro e gere vários tipos de conteúdo com base no esquema.
O diagrama de projeto da arquitetura é o seguinte, ou seja, qualquer entrada => Esquema unificado => qualquer saída:
O sistema está dividido nos seguintes módulos principais, com cada módulo tendo responsabilidades claras:
O código do módulo principal está no diretório principal do backend.
Classe principal: TableSchemaBuilder, cuja função é convergir diferentes parâmetros em objetos TableSchema.
Contém os seguintes métodos:
Entre eles, buildFromSql (gerando esquema baseado em SQL) usa o analisador de sintaxe que vem com o pool de conexões de banco de dados Druid, que é muito poderoso. (Geralmente, você não deve escrever coisas como analisadores. Você pode fazer vários projetos neste período, e escrevê-los não é tão fácil de usar quanto outros)
Utilizado para salvar informações de tabelas e campos, a estrutura é a seguinte:
{
"dbName" : "库名" ,
"tableName" : " test_table " ,
"tableComment" : "表注释" ,
"mockNum" : 20 ,
"fieldList" : [{
"fieldName" : " username " ,
"comment" : "用户名" ,
"fieldType" : " varchar(256) " ,
"mockType" : "随机" ,
"mockParams" : "人名" ,
"notNull" : true ,
"primaryKey" : false ,
"autoIncrement" : false
}]
}
Defina cada tipo de construção como um Builder (diretório core/builder):
Entre eles, para o gerador de código SQL (SqlBuilder), dialetos são usados para suportar diferentes tipos de banco de dados (modo estratégico), e modo singleton + modo fábrica são usados para criar instâncias de dialeto.
Para Java, geradores de código front-end (JavaCodeBuilder, FrontendCodeBuilder) são gerados usando o mecanismo de modelo FreeMarker. O código do modelo é o seguinte:
Cada regra de geração é definida como um Gerador e DataGeneratorFactory (modo de fábrica) é usado para criar e gerenciar várias instâncias do Gerador de maneira uniforme.
Use a biblioteca dataFaker para implementar a geração aleatória de dados (RandomDataGenerator).
Use a biblioteca Generex para implementar a geração de dados de expressão regular (RuleDataGenerator).
Use o padrão de fachada para agregar vários tipos de geração e fornecer métodos unificados de chamada e verificação de geração:
Incluindo dicionário de sinônimos, informações de tabela e compartilhamento de informações de campo, é na verdade um serviço da web para adicionar, excluir, modificar e consultar essas entidades, por isso não entrarei em detalhes.
Se você deseja obter uma explicação completa e detalhada deste projeto, seja bem-vindo ao Programming Knowledge Planet da Yupi. Este é o círculo de aprendizagem de programação da Yupi. No círculo, conduzirei todos a analisar e interpretar este projeto de 0 a 1 e responderei às perguntas de todos individualmente. Você não apenas poderá fazer um de forma independente, mas também ensinará como colocar esse projeto em seu currículo. Experiência em projetos + 1.
Todos os amigos são bem-vindos a contribuir e, primeiro, leia atentamente o seguinte:
Fonte de vocabulário parcial: https://github.com/fighting41love/funNLP
Fonte de informações da tabela de exemplo: https://open.yesapi.cn/list1.html