Küçük API'sine göre React'in boyutu neden bu kadar büyük?


88

İşte numaralar

  • min + gzip 26k
  • gzip 90k
  • orijinal 450 + k

Ve React'in belgelerinde pek çok özellik yok. Neden bu kadar büyük?

Bunun hafif DOM'un uygulanması olduğunu hissediyorum. Ama emin olmak istiyorum.


4
Ne yaptığını görmek için kaynağa baktınız mı? Faydalı ipucu, küçültülmüş sürüme bakmayın.
Mr Lister

6
Kodla dalmadan önce sormaya karar verdim.
React'i

2
26k o kadar da büyük değil ..
BT

İnsanlar tepkinin büyük olmadığını söylüyor. Evet, reactjs'in kendisi çok küçük (sürüm 16.1.1 için 6.41KB) ancak React'in çalışması için bir ReactDOM gerektirdiğini ve ReactDOM'un 92.4KB boyutunda olduğunu unutmayın
Dinh Tran

Yanıtlar:


187

React oldukça iyi! React'in göze batmayan en büyük kısmı muhtemelen olaylar sistemidir - React yalnızca kendi olay gönderme ve köpürme işlemini uygulamakla kalmaz, aynı zamanda tarayıcılarda yaygın olayları normalleştirir, böylece bu konuda çok fazla endişelenmenize gerek kalmaz. Örneğin, SelectEventPlugin , onSelecttüm tarayıcılarda aynı şekilde davranan bir olay sağlayan yerleşik bir olay "eklentisidir" .

Sanal DOM uygulaması yanı kod iyi bir miktar sürer; performans optimizasyonu için çok fazla çaba harcanır, bu nedenle küçültülmemiş sürüm, işleme performansını ölçmek için bir araç olan ReactPerf'i içerir . DOM'u güncellerken, React, herhangi bir giriş seçimini sürdürmek ve mevcut kaydırma konumunu aynı tutmak gibi sizin için bazı kullanışlı şeyler de yapar.

React'in de birkaç başka numarası var. En iyilerinden biri, bir tarayıcı ortamınız olmasa bile bir bileşeni bir HTML dizesine dönüştürmeyi tam olarak desteklemesidir, böylece JS yüklenmeden önce bile çalışan bir sayfayı gönderebilirsiniz.


React'i neyle karşılaştırıyorsunuz? react-15.0.2.min.jsolduğunu 43k (gzipped), ancak jQuery 33k süre olduğunu ember-2.6.0.prod.jsolduğunu 363k (also gzipped). Açıkçası, bu çerçeveler tam olarak aynı şeyleri yapmıyorlar ama çok fazla örtüşüyorlar, bu yüzden karşılaştırmanın makul olduğunu düşünüyorum.

İndirme boyutu konusunda endişeleniyorsanız, JS kodunun buna katkıda bulunacağı konusunda fazla endişelenmem. Şu anda Stack Overflow sayfamın sağ tarafında gördüğüm bir reklam:

İndirme boyutu 95k - Bir sayfaya böyle bir görüntü eklemeyi iki kez düşünmezdim çünkü (performans konusunda endişelenmiş olsam bile) genellikle daha kazançlı olan birçok performansla ilgili düzeltilecek çok şey vardır.


Kısacası, React'in o kadar büyük olduğunu düşünmüyorum ve size yardımcı olmak için yaptığı birçok küçük şeyden ne kadar büyük olduğunu düşünüyorum. React'in kodunun küçük olması gerektiğinin bir nedeni olarak React'in küçük API'sinden bahsediyorsunuz, ancak daha iyi bir soru "React'in API'si sizin için yaptığı her şeye rağmen nasıl bu kadar basit olabilir?"

... ama bu tamamen ayrı bir soru. :) Umarım sorunuzu cevaplamışımdır - cevaplamadıysam mutlu olurum.


4
Soruma tamamen cevap verdin. React harika. Mobil cihazlar için kullanmayı düşünüyorum, bu yüzden boyut önemli. Sadece ne yaptığı hakkında çok fazla bilgi yok. Ve kullanabileceğim daha fazla numara olduğunu düşünüyorum :) Jquery şeylerinden kurtulabileceğimi hissediyorum. Ve paulmillr / dış iskelet tam zamanında :)
Eldar Djafarov

2
Tamamen farklı uygulama geliştirme konseptini araştırıyorum. Kontrol vimeo.com/78151404 ve github.com/component/component - Eğer jsxtransformations tüm ve compy oyunlar Nice'te jQuery nee yok kullananlara. Ve React en zor işi yapar - diğer her şey (Modeller, yönlendirmeler, sunucu iletişimi) mikro bileşenler tarafından kapsanabilir.
Eldar Djafarov

30
Unutmayın, boyutun kesinlikle son derece önemli olduğu Facebook'un mobil web sitesinde
React'i kullanıyoruz

4
@lightblade Um ... hayır. Bellek kullanımı, kodunuzun kaç ayırma yaptığına bağlıdır. React, ayırmalardan kaçınmak için çok çalışır.
Dan Abramov

2
@ 1nfiniti Tamam, iki buçuk yıldan beri bazı yeni rakamlarla güncellendi.
Sophie Alpert

-1

Birkaç düşünce .. Boyutuyla ilgili bazı endişelerim vardı, ama kullandıktan sonra şaka yapmayın, 5MB boyutunda olsaydı kullanırdım. Bu sadece o kadar iyi. Bununla birlikte, diğer kütüphanelere olan bağımlılığı olabildiğince azaltmaya karar verdim. İki şey için jquery kullanıyordum .. ajax ve oturum açtıktan sonra bir belirteç yanıtta olduğunda işleyecek olan otomatik ajax yanıtı ve istek işleme (göndermeden önce vb.) Ve ardından her ajax isteğinin onu daha önce Yetkilendirme başlığına eklediğinden emin olun. gönderme. Bunu süper küçük ve basit bir yerel javascript ile değiştirdim. Harika çalışıyor. Ayrıca _underscore kullanmaya çalışıyordum. Daha küçük ve daha hızlı olan lodash ile değiştirdim, ancak şu anda kullanmıyorum, bu yüzden tamamen kaldırabilirim.

İşte google'da jquery yerine yerel JS kullanan bazı alternatifleri olduğunu bulduğum birçok makaleden bir tanesi.

http://www.sitepoint.com/jquery-vs-raw-javascript-1-dom-forms/


1
Birden fazla tarayıcıyı hedefliyorsanız, kullandığınız parçalarla
jQuery'nin
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.