Close Menu
Código Simples .NETCódigo Simples .NET
    Facebook X (Twitter) Instagram
    Trending
    • NewSQL em 2025: O Estado Atual, Tendências e o Futuro dos Bancos de Dados Relacionais Escaláveis
    • 12 Regras Essenciais para Reduzir a Latência de Aplicações
    • Cache Hit Ratio: Como uma Simples Métrica Pode Revolucionar sua Arquitetura
    • Como a Uber calcula o tempo estimado de chegada
    • 30 APIs Gratuitas para desenvolvedores
    • Por que escalar escrita é tão mais difícil do que escalar leitura?
    • MongoDB Analyzer para .NET: Visualize e otimize suas consultas de forma simples
    • Cardinalidade: O Conceito que Transforma o Desempenho de Bancos de Dados SQL e NoSQL
    Facebook X (Twitter) Instagram
    Código Simples .NETCódigo Simples .NET
    Código Simples .NETCódigo Simples .NET
    Home»Dicas»Apresentando o Fusion.js: um framework web open source baseado em plug-in

    Apresentando o Fusion.js: um framework web open source baseado em plug-in

    Jhonathan SoaresBy Jhonathan Soares6 de agosto de 20184 Mins Read Dicas
    Share
    Facebook Twitter LinkedIn WhatsApp Copy Link

    O Fusion.js, o novo framework web da Uber, suporta recursos e integrações modernas que facilitam a criação de aplicativos leves e de alto desempenho para a web.

    De acordo com a empresa, o framework web ajuda na criação de aplicativos da Web para usuários internos e públicos, tendo em mente os desafios da mudança de tecnologias da web. O Fusion.js abordará os seguintes problemas:

    • Configuração complexa relacionada ao clichê necessário de várias ferramentas que são necessárias para renderização no lado do servidor, recarregamento de módulos e divisão de código.
    • A falta de abstrações para implementar recursos que envolvem aplicativos React renderizados pelo servidor. (ou seja, abrangendo servidor e cliente, lidando com serialização / hidratação, comunicação servidor-cliente etc.)
    • Fragilidade devido a um acoplamento rígido de código localizado em lugares diferentes.
    • Teste de dificuldades decorrentes de efeitos colaterais e singletons.
    • Falta de flexibilidade de um quadro monolítico

    Embora as soluções existentes abordassem alguns desses desafios, descobrimos que a utilização de uma biblioteca frente à um framework exigia alterações em vários arquivos não relacionados. Por exemplo, suportar o Redux em um aplicativo renderizável pelo servidor envolve adicionar código de configuração em algum lugar nos arquivos relacionados ao servidor, código semelhante em algum lugar no navegador, alteração no modelo HTML, um componente React Provider, etc. E isto ocasionava queda de performance a aumento de complexidade na hora de construir aplicações web.

    Outra razão pela qual preferimos uma abordagem modular sobre nossa abordagem monolítica existente é que ela nos força a ser explícitos sobre dependências, o que torna mais fácil evitar fontes comuns de dívida técnica, como objetos de Deus (God objects), interfaces internas ad-hoc e acoplamento rígido.

    Quem deve usar o Fusion.js?

    O Fusion.js é uma boa opção para quem procura um framework de código aberto para criar um aplicativo da web moderno e não trivial.

    Resumidamente, o Fusion.js é uma estrutura JavaScript licenciada pelo MIT que oferece suporte a bibliotecas populares como React e Redux, e vem com recursos modernos como recarregamento de módulo quente, renderização do lado do servidor com reconhecimento de dados e suporte a divisão de pacote. Para mais informações sobre os benefícios do Fusion.js, confira a documentação.

    De acordo com a empresa, “os aplicativos Fusion.js são universais, o que significa que os aplicativos têm um único arquivo de ponto de entrada e é possível reutilizar o código no servidor e no navegador. Em aplicativos universais, os componentes do React também podem buscar dados e renderizar HTML no servidor, melhorando assim o tempo de carregamento da página no navegador, aproveitando o analisador HTML nativo do navegador e evitando a sobrecarga da API DOM do JavaScript. ”
    Figura 1. Os plug-ins do Fusion.js encapsulam a lógica com base em seu agrupamento lógico, em vez de se basear em onde o código precisa ser incluído.
    Os plug-ins usam a injeção de dependência, o que significa que eles podem expor APIs bem definidas como serviços para outros plug-ins, e as dependências de um plug-in podem ser facilmente ridicularizadas durante os testes.
    /*
    This example implements an endpoint that reads from session data.
    Session is an injected dependency.
    SessionToken is a label (and it helps enforce type safety).
    */
    
    // src/plugins/user.js
    import {createPlugin} from 'fusion-core';
    import {SessionToken} from 'fusion-tokens';
    
    export default __NODE__ && createPlugin({
      deps: {Session: SessionToken},
      middleware({Session}) {
        return async (ctx, next) => {
          if (ctx.path === '/api/user') {
            ctx.body = JSON.parse(await Session.from(ctx).get('user'));
          }
          return next();
        }
      }
    });

    Também é possível garantir a segurança do tipo estaticamente entre dependências por meio do Flow.js, conforme ilustrado abaixo:

    Figura 2. Erros de tipo de superfície diretamente no editor de código ajudam a capturar erros antes da execução do código.

    Além de oferecer suporte a ferramentas de teste modernas, como Jest , Enzyme e Puppeteer , o Fusion.js também fornece ferramentas para desenvolvedores testarem plugins.

    Apenas o começo

    Dentro do Uber, já existem mais de 60 repositórios usando o Fusion.js desde seu lançamento interno. Esperamos que esse número aumente rapidamente devido a uma combinação de novos projetos da web e migração automatizada de projetos antigos para o Fusion.js. Dada essa demanda, as melhorias no nível da estrutura devem melhorar significativamente a linha de base da qualidade do software para esses projetos.

    Quer conferir mais dicas? Acesso nossa sessão de dicas e fique por dentro das novidades!

    Share. Facebook Twitter LinkedIn Telegram WhatsApp Copy Link
    Jhonathan Soares
    • Website
    • Facebook
    • X (Twitter)
    • LinkedIn

    Criador do blog Código Simples e com mais 15 anos de experiência em TI, com títulos de MVP Microsoft na área de Visual Studio Development, Neo4j Top 50 Certificate, Scrum Master e MongoDB Evangelist.

    Posts Relacionados

    Happy Hour com Dados #17 – Azure vs AWS vs GCP

    Front-End 26 de maio de 20211 Min Read

    Happy Hour com Dados #16 – Java vs C#

    C# Dicas 22 de setembro de 20201 Min Read

    Happy Hour com Dados #15 – Aplicação de IA no Processamento de Imagem

    Dicas Tecnologia 22 de setembro de 20201 Min Read
    Newsletter

    Digite seu endereço de e-mail para receber notificações de novas publicações por e-mail.

    Junte-se a 25mil outros assinantes
    Posts recentes
    • NewSQL em 2025: O Estado Atual, Tendências e o Futuro dos Bancos de Dados Relacionais Escaláveis
    • 12 Regras Essenciais para Reduzir a Latência de Aplicações
    • Cache Hit Ratio: Como uma Simples Métrica Pode Revolucionar sua Arquitetura
    • Como a Uber calcula o tempo estimado de chegada
    • 30 APIs Gratuitas para desenvolvedores
    Categorias
    • Arquitetura (14)
      • Testes (2)
    • Asp.net (120)
      • C# (89)
      • Mvc (13)
    • Banco de dados (90)
      • NoSql (58)
      • Sql (38)
    • Boas práticas (29)
      • Gestão & Produtividade (1)
      • Metodologias Ágeis (6)
    • Cursos (52)
    • Dicas (105)
    • Front-End (92)
    • IA (1)
    • Linux (6)
    • NodeJS (4)
    • Post do Leitor (9)
    • Python (5)
    • Seo (12)
    • Tecnologia (30)
      • ITIL (1)
      • Padrões de Projeto (4)
    • Testes (2)

    VEJA TAMBÉM

    Cursos
    12 de fevereiro de 20166 Mins Read

    1000 livros gratuitos sobre programação!

    Olha que dica bacana! A pagina só com livros sobre programação é mantida no GitHub…

    30 APIs Gratuitas para desenvolvedores

    Facebook X (Twitter) Instagram LinkedIn

    Type above and press Enter to search. Press Esc to cancel.

    Vá para versão mobile