Aqui estão os números
- min + gzip 26k
- gzip 90k
- 450 + k original
E o React não tem muitos recursos em sua documentação. Por que é tão grande?
Tenho a sensação de que é a implementação de DOM leve. Mas eu quero ter certeza.
Aqui estão os números
E o React não tem muitos recursos em sua documentação. Por que é tão grande?
Tenho a sensação de que é a implementação de DOM leve. Mas eu quero ter certeza.
Respostas:
React faz bastante! A maior parte não óbvia do React é provavelmente o sistema de eventos - o React não apenas implementa seu próprio despacho e borbulhamento de eventos, como normaliza eventos comuns em navegadores para que você não precise se preocupar tanto com isso. Por exemplo, SelectEventPlugin é um "plugin" de evento integrado que fornece umonSelect evento que se comporta da mesma maneira em todos os navegadores.
A implementação virtual do DOM também exige uma quantidade decente de código; muito esforço é gasto na otimização do desempenho, razão pela qual a versão não minimizada inclui ReactPerf , que é uma ferramenta para medir o desempenho de renderização. Ao atualizar o DOM, o React também faz algumas coisas convenientes para você, como manter qualquer seleção de entrada e manter a mesma posição de rolagem atual.
O React também tem alguns outros truques na manga. Um dos mais legais é que ele suporta totalmente a renderização de um componente para uma string HTML, mesmo se você não tiver um ambiente de navegador, então você pode enviar uma página que funciona antes mesmo de o JS ser carregado.
Com o que você está comparando o React? react-15.0.2.min.jsé 43k (gzipped), mas jQuery é 33k enquanto ember-2.6.0.prod.jsé 363k (also gzipped). Obviamente, esses frameworks não fazem exatamente as mesmas coisas, mas eles têm muita sobreposição, então acho que a comparação é razoável.
Se você está preocupado com o tamanho do download, eu não me preocuparia muito com o código JS contribuindo para isso. Aqui está um anúncio que vejo no lado direito da minha página Stack Overflow agora:

Seu tamanho de download é de 95k - eu não pensaria duas vezes antes de incluir uma imagem como essa em uma página porque (mesmo se eu estivesse preocupado com o desempenho) geralmente há muitas outras coisas relacionadas ao desempenho para consertar que são mais lucrativas.
Resumindo, não acho que o React seja tão grande, e o tamanho que ele tem vem das muitas pequenas coisas que ele faz para te ajudar. Você cita a pequena API do React como um motivo pelo qual o código do React deve ser pequeno, mas uma pergunta melhor poderia ser: "Como a API do React pode ser tão simples, considerando todas as coisas que ela faz por você?"
… Mas essa é uma questão totalmente separada. :) Espero ter respondido sua pergunta - feliz em expandir se não o fiz.
Algumas reflexões ... Eu tinha algumas das mesmas preocupações com o tamanho, mas depois de usá-lo, não é brincadeira, eu usaria se tivesse 5 MB. É muito bom. Dito isso, decidi reduzir o máximo possível de dependências de outras bibliotecas. Eu estava usando jquery para duas coisas .. ajax e a resposta automática de ajax e tratamento de solicitação (beforeSend, etc) que trataria quando um token estivesse em uma resposta após o login e, em seguida, certifique-se de que cada solicitação ajax o adicionasse ao cabeçalho de autorização antes enviando. Substituí isso por um pequeno pedaço simples de javascript nativo. Funciona bem. Além disso, estava tentando usar _underscore. Substituí-o pelo lodash, que é menor e mais rápido, embora atualmente não o esteja usando, então posso removê-lo completamente.
Aqui está um artigo, de muitos no google, que descobri que tem algumas alternativas de usar JS nativo em vez de jquery.
http://www.sitepoint.com/jquery-vs-raw-javascript-1-dom-forms/