Sobre o projeto
QimenJS é uma biblioteca de infraestrutura TypeScript modular, cujo nome vem de "Qimen Dunjia" — o antigo sistema de disposição de tropas. Ela constrói uma arquitetura frontend flexível por meio de combinação de capacidades (Ability) e pipelines de dados (Pipeline), fornecendo sistema de eventos, pipeline de dados, gerenciamento de entidades, internacionalização, cliente HTTP e outros 38 subpacotes independentes, cobrindo desde a camada base até a camada de UI de aplicações frontend.
A versão atual é 0.2.0, em estágio inicial de desenvolvimento. As APIs principais e a camada de componentes de UI já estão disponíveis, e o fluxo do framework está funcional, mas as APIs podem sofrer alterações em versões futuras.
A lista de pacotes é organizada por camadas:
- **Camada base (Layer 0)**: sistema unificado de erros, sistema de logs, funções utilitárias comuns, utilitários assíncronos, detecção de ambiente de execução, hash e codificação/decodificação, internacionalização, contexto de requisição/evento, tipos base compartilhados entre pacotes.
- **Camada central (Layer 1)**: registro, barramento de eventos, gerenciamento de cache, pipeline de dados, combinação de capacidades, agendamento de tarefas.
- **Camada de dados (Layer 2)**: framework de processadores de dados, motor de validação, adaptador de eventos DOM (8 tipos de reconhecimento de gestos), análise de tipos MIME, registrador de padrões regex nomeados, definição de Schema, sistema de permissões.
- **Camada de serviços (Layer 3)**: cliente HTTP (pipeline de 4 estágios + interceptores + streaming SSE), autenticação OAuth2 (modos password/authorization code/client credentials + renovação automática em 401), processador de dados do framework ABP, processador de dados do Spring Data, conjunto de capacidades do sistema.
- **Camada de aplicação (Layer 4)**: framework de gerenciamento de entidades (5 tipos de Manager + arquitetura de combinação de Ability), sistema de rotas (modo puramente baseado em eventos + capacidade de componente RouteAbility).
- **Camada de UI**: infraestrutura central de componentes, definição de capacidades de componentes de UI, implementação de componentes de UI (Icon/Button/Toggle/Tabs/Card/Menu/Nav/Panel etc.), componentes de UI avançados (Step/Timeline/Rating/PropertyGrid/OneTimePassword etc.), sistema de definição de layout orientado a JSON, recursos de temas (claro/escuro + 10 presets de estilo chinês + personalização do usuário), biblioteca de ícones de estilo chinês (102 SVGs + ícones de fonte), API imperativa (toast/msgbox).
As características da arquitetura incluem design em camadas (direção única de dependências, sem referências entre camadas), combinação de capacidades (gerenciadores de entidades combinam capacidades dinamicamente por meio de AbilityDefinition), processamento em pipeline (requisições/respostas de dados passam por pipelines de processadores plugáveis, com ABP/Spring prontos para uso), adaptação de ambiente (pacotes centrais independentes de ambiente, compatíveis com navegador/Node.js) e segurança de tipos (definições completas de tipos TypeScript).
O diretório de exemplos `examples/full-stack/` contém uma demonstração full-stack completa, abrangendo autenticação OAuth2, gerenciamento de usuários da API ABP, gerenciamento de pedidos do Spring Data, páginas de demonstração de funcionalidades de 36 subpacotes do QimenJS, internacionalização (pré-compilação i18n + troca dinâmica de idioma).
A documentação inclui explicações de arquitetura, descrições de pacotes, melhores práticas e referência de API. Os comandos de desenvolvimento incluem instalação de dependências, build, execução de testes, lint e geração de documentação de API. Os números de versão seguem a especificação SemVer, e 0.x.x indica estágio inicial de desenvolvimento.
Este projeto é desenvolvido com auxílio de IA, com a maior parte do código gerada por IA. Agradecemos as contribuições de ferramentas como Huawei CodeArts, Trae CN, ChatGPT, DeepSeek, Gemini, Tongyi Qianwen, FitEncode e outras. A licença é MIT.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.