Ecco i numeri
- min + gzip 26k
- gzip 90k
- originale 450 + k
E React non ha molte funzionalità nella sua documentazione. Perché è così grande?
Ho la sensazione che sia l'implementazione del DOM leggero. Ma voglio essere sicuro.
Ecco i numeri
E React non ha molte funzionalità nella sua documentazione. Perché è così grande?
Ho la sensazione che sia l'implementazione del DOM leggero. Ma voglio essere sicuro.
Risposte:
React fa un bel po '! La parte più grande e non ovvia di React è probabilmente il sistema degli eventi: non solo React implementa il proprio invio e il bubbling degli eventi, ma normalizza gli eventi comuni nei browser in modo che tu non debba preoccuparti troppo di esso. Ad esempio, SelectEventPlugin è un "plugin" di eventi integrato che fornisce un onSelect
evento che si comporta allo stesso modo in tutti i browser.
L' implementazione del DOM virtuale richiede anche una discreta quantità di codice; molto impegno viene speso per l'ottimizzazione delle prestazioni, motivo per cui la versione non ridotta include ReactPerf , che è uno strumento per misurare le prestazioni di rendering. Nell'aggiornamento del DOM, React fa anche alcune cose utili per te come mantenere qualsiasi selezione di input e mantenere la stessa posizione di scorrimento corrente.
React ha anche qualche altro asso nella manica. Uno dei più interessanti è che supporta completamente il rendering di un componente in una stringa HTML anche se non si dispone di un ambiente browser, quindi è possibile inviare una pagina che funziona anche prima che JS venga caricato.
Con cosa stai confrontando React? react-15.0.2.min.js
è 43k (gzipped)
, ma jQuery è 33k mentre lo ember-2.6.0.prod.js
è 363k (also gzipped)
. Ovviamente questi framework non fanno esattamente le stesse cose ma hanno molte sovrapposizioni, quindi penso che il confronto sia ragionevole.
Se sei preoccupato per la dimensione del download, non mi preoccuperei troppo del contributo del codice JS. Ecco un annuncio che vedo sul lato destro della mia pagina Stack Overflow in questo momento:
La dimensione del download è di 95k: non ci penserei due volte a includere un'immagine del genere in una pagina perché (anche se ero preoccupato per le prestazioni) di solito ci sono così tante altre cose relative alle prestazioni da correggere che sono più redditizie.
In breve, non penso che React sia così grande, e le dimensioni che ha derivano dalle tante piccole cose che fa per aiutarti. Citi la piccola API di React come motivo per cui il codice di React dovrebbe essere piccolo, ma una domanda migliore potrebbe essere: "Come può l'API di React essere così semplice, date tutte le cose che fa per te?"
... ma questa è una domanda completamente separata. :) Spero di aver risposto alla tua domanda - felice di espandere se non l'ho fatto.
Un paio di pensieri .. Ho avuto alcune delle stesse preoccupazioni con le sue dimensioni, ma dopo averlo usato, non è uno scherzo, lo userei se fosse di 5 MB. È proprio così buono. Detto questo, ho deciso di ridurre il maggior numero possibile di dipendenze da altre librerie. Stavo usando jquery per due cose ... ajax e la risposta automatica ajax e la gestione delle richieste (beforeSend, ecc.) Che gestiva quando un token era in una risposta dopo il login, quindi assicurati che ogni richiesta ajax lo aggiungesse prima all'intestazione di autorizzazione invio. L'ho sostituito con un piccolissimo e semplice bit di javascript nativo. Funziona alla grande. Inoltre, stavo cercando di utilizzare _underscore. L'ho sostituito con lodash, che è più piccolo e più veloce, anche se attualmente non lo sto usando, quindi potrei rimuoverlo del tutto.
Ecco un articolo, tra i tanti su Google, che ho scoperto che ha alcune alternative utilizzando JS nativo su jquery.
http://www.sitepoint.com/jquery-vs-raw-javascript-1-dom-forms/