Soru React, küçük API'sı neden bu kadar büyük dosyalanır?


İşte sayılar

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

React, dokümantasyonunda pek çok özelliğe sahip değildir. Neden bu kadar büyük?

Hafif DOM'nin uygulanması olduğunu hissediyorum. Ama emin olmak istiyorum.


84
2017-11-06 09:13


Menşei


Kaynağa bir bakıp ne yaptığını gördün mü? Faydalı ipucu, küçültülmüş versiyona bakma. - Mr Lister
Kod yazmadan önce sormaya karar verdim. Reaksiyonu kullanmayı planladığım halde, yine de orada dalış yapacağım;) - Eldar Djafarov
26k hiç de büyük değil .. - B T
İnsanlar tepkilerin büyük olmadığını söylüyor. Evet, reactjs'nin kendisi çok küçüktür (16.1.1 sürümü için 6.41KB), ancak React'ın bir ReactDOM çalışması gerektirdiğini ve ReactDOM'in 92.4KB boyutuna sahip olduğunu unutmayın. - Dinh Tran


Cevaplar:


React biraz var! React'ın en büyük nonobvious bölümü muhtemelen olay sistemi - React yalnızca kendi olaylarını gönderen ve bubbling'i uygulamakla kalmaz, aynı zamanda tarayıcılar arasındaki ortak olayları normalleştirir, böylece bu konuda endişelenmenize gerek kalmaz. Örneğin, SelectEventPlugin sağlayan bir yerleşik "eklenti" onSelect Tüm tarayıcılarda aynı şekilde davranan olay.

sanal DOM Uygulamada iyi bir miktar kod alınıyor; performans optimizasyonu için çok fazla çaba harcamaktadır, bu nedenle, unremified sürümü şunları içerir: ReactPerfrender performansının ölçülmesi için bir araçtır. DOM'ı güncellemede React, herhangi bir giriş seçimini sürdürmek ve mevcut kaydırma konumunu aynı tutmak gibi bazı kullanışlı şeyler de yapar.

React ayrıca kolundaki birkaç başka numaraya da sahiptir. En iyilerinden biri, bir tarayıcı ortamınız olmasa bile bir HTML dizgisine bir bileşenin oluşturulmasını tam olarak desteklemesidir, böylece JS yüklenmeden önce bile çalışan bir sayfayı aşağıya gönderebilirsiniz.


React'ı karşı ile karşılaştırmak nedir? react-15.0.2.min.js olduğu 43k (gzipped)ama jQuery 33k iken ember-2.6.0.prod.js olduğu 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 bulunmasından endişe etmem. Şu anda Stack Overflow sayfamın sağ tarafında gördüğüm bir reklam var:

İndirme boyutu 95k - Ben bir sayfada bir görüntü dahil olmak üzere iki kez düşünemem çünkü (performans hakkında endişeliysem bile) genellikle daha fazla performansla ilgili daha fazla düzeltme yapmak için performansla ilgili birçok şey vardır.


Kısacası, React'ın o kadar büyük olduğunu ve ne kadar büyüklükte olduğunu size yardımcı olmak için pek çok küçük şeyden geldiğini düşünmüyorum. React'un küçük API'sini React'ın kodunun küçük olması için bir neden olarak görüyorsunuz, ancak daha iyi bir soru, "React'un API'si sizin için yaptığınız her şey için çok basit olabilir mi?"

… Ama bu tamamen ayrı bir soru. :) Umarım sorunuza cevap verdim - eğer yapmazsam büyümek için mutluyum.


175
2017-11-06 09:48



Sorumu tamamen cevapladın. Tepki harika. Onu mobil için kullanmayı düşünüyorum, bu yüzden boyut önemlidir. Sadece ne olduğu hakkında pek fazla bilgi yok. Ve ben kullanabileceğim daha fazla hile olduğunu düşünüyorum :) Ben jquery şeylerden kurtulmak hissediyorum. Ve paulmillr / exoskeleton tam zamanında - Eldar Djafarov
Tamamen farklı uygulama oluşturma konseptinde kazıyorum. Kontrol vimeo.com/78151404 ve github.com/component/component - jQuery'yi hiç kullanamayanları kullanarak ve jsxtransformations ile güzel oynarlar. Ve React en zor iş yapar - diğer her şey (Modeller, rutings, sunucu iletişimi) mikro bileşenler tarafından karşılanabilir. - Eldar Djafarov
Not, boyutun kesinlikle son derece önemli olduğu Facebook'un mobil web sitesinde React kullanıyoruz :) - Vjeux
@lightblade Um ... hayır. Bellek kullanımı, kodunuzun kaç tane tahsisatına bağlı olduğuna bağlıdır. React, tahsislerden kaçınmak için çok uğraşır. - Dan Abramov
@ 1nfiniti Okay, iki buçuk yıldan beri yeni sayılar ile güncellendi. - Sophie Alpert


Düşünceler bir çift .. Ben onun boyutu ile aynı endişeleri bazı vardı, ama kullanmadan, şaka, ben 5MB boyutu ise bunu kullanırdım. Bu sadece iyi. Bununla birlikte, mümkün olduğu kadar diğer kütüphanelere bağımlılıkları azaltmaya karar verdim. İki şey için jquery kullanıyordum .. ajax ve otomatik ajax yanıtı ve istek (handSend, vb) istek üzerine bir belirteç giriş yaptıktan sonra bir yanıt olduğunda işlemek sonra her ajax isteğinden önce Yetkilendirme üstbilgisine ekledi emin olun gönderme. Bunu süper küçük basit bir yerel javascript ile değiştirdim. Harika çalışıyor. Ayrıca, _underscore kullanmaya çalışıyordum. Bunu daha küçük ve daha hızlı olan lodash ile değiştirdim, ancak şu anda kullanmıyorum, ancak tamamen kaldırabilirim.

İşte, google'da birçoğu, jQuery üzerinden yerel JS'yi kullanan bazı alternatiflerin bulunduğunu öğrendim.

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


-3
2018-04-16 16:11



youmightnotneedjquery.com - Jo VdB
Birden fazla tarayıcıyı hedefliyorsanız, jQuery'nin özel bir sürümünü yalnızca kullandığınız parçalarla oluşturabilirsiniz - Dan Heberden
hahah çabuk bozuldu - Tosh