रिएक्ट की फाइल को इतना छोटा क्यों दिया गया है कि इसका छोटा एपीआई है?


88

यहाँ संख्याएँ हैं

  • मिनट + gzip 26k
  • gzip 90 कि
  • मूल 450 + के

और React के पास प्रलेखन में कई विशेषताएं नहीं हैं। यह इतना बड़ा क्यों है?

मुझे लगता है कि यह लाइटवेट डोम का कार्यान्वयन है। लेकिन मैं निश्चित होना चाहता हूं।


4
क्या आपने स्रोत पर एक नज़र डाली है, यह देखने के लिए कि यह क्या करता है? सहायक टिप, छोटा संस्करण न देखें।
मिस्टर लिस्टर

6
मैंने कोड में गोता लगाने से पहले पूछने का फैसला किया। हालाँकि, जब मैं प्रतिक्रिया का उपयोग करने की योजना बना रहा हूँ, वैसे भी मैं वहाँ डाइविंग कर रहा हूँ;)
एल्डर जफरोव

2
26k इतना बड़ा नहीं है ..
BT

लोग कह रहे हैं कि प्रतिक्रिया बड़ी नहीं है। हां, Reajjs अपने आप में बहुत छोटा है (संस्करण 16.1.1 के लिए 6.41KB) लेकिन याद रखें कि React को काम करने के लिए एक ReactDOM की आवश्यकता होती है और ReactDOM का 92.4KB आकार में है
Dinh Tran

जवाबों:


187

प्रतिक्रिया काफी कुछ करता है! रिएक्ट का सबसे बड़ा गैर-स्पष्ट हिस्सा शायद ईवेंट सिस्टम है - न केवल रिएक्ट अपने स्वयं के ईवेंट प्रेषण और बुदबुदाहट को लागू करता है, यह ब्राउज़रों में सामान्य घटनाओं को सामान्य करता है ताकि आपको इसके बारे में ज्यादा चिंता करने की आवश्यकता न हो। उदाहरण के लिए, SelectEventPlugin एक अंतर्निहित ईवेंट "प्लगइन" है जो एक onSelectघटना प्रदान करता है जो सभी ब्राउज़रों में एक ही तरह से व्यवहार करता है।

आभासी डोम कार्यान्वयन के साथ-कोड की एक सभ्य राशि ले करता है, प्रदर्शन अनुकूलन पर बहुत प्रयास किया जाता है, यही वजह है कि अघोषित संस्करण में ReactPerf शामिल है , जो प्रतिपादन प्रदर्शन के लिए एक उपकरण है। DOM को अपडेट करने में, React आपके लिए कुछ सुविधाजनक चीजें भी करता है जैसे किसी भी इनपुट चयन को बनाए रखना और वर्तमान स्क्रॉल स्थिति को समान रखना।

प्रतिक्रिया भी कुछ अन्य चालें अपनी आस्तीन ऊपर है। सबसे अच्छे में से एक यह है कि यह पूरी तरह से HTML स्ट्रिंग के लिए एक घटक प्रदान करने का समर्थन करता है, भले ही आपके पास ब्राउज़र का वातावरण न हो, इसलिए आप एक पृष्ठ को भेज सकते हैं जो JS लोड होने से पहले भी काम करता है।


आप रिएक्ट की तुलना किससे कर रहे हैं? react-15.0.2.min.jsहै 43k (gzipped), लेकिन jQuery है जबकि 33k ember-2.6.0.prod.jsहै 363k (also gzipped)। जाहिर है कि ये ढांचे बिल्कुल एक जैसे काम नहीं करते हैं, लेकिन उनके पास बहुत अधिक ओवरलैप हैं, इसलिए मुझे लगता है कि तुलना उचित है।

यदि आप डाउनलोड आकार के बारे में चिंतित हैं, तो मैं JS कोड के बारे में बहुत अधिक चिंता नहीं करूंगा। यहाँ एक विज्ञापन है जिसे मैं अपने स्टैक ओवरफ्लो पृष्ठ के दाईं ओर देखता हूँ:

इसका डाउनलोड आकार 95k है - मैं एक पृष्ठ में उस तरह की छवि को शामिल करने के बारे में दो बार नहीं सोचूंगा क्योंकि (भले ही मैं प्रदर्शन के बारे में चिंतित था) आमतौर पर कई अन्य प्रदर्शन से संबंधित चीजें हैं जो ठीक करने के लिए अधिक आकर्षक हैं।


संक्षेप में, मुझे नहीं लगता कि रिएक्ट इतना बड़ा है, और इसमें जो आकार है वह कई छोटी चीजों से आता है जो आपकी मदद करता है। आप एक कारण के रूप में React के छोटे API का हवाला देते हैं कि React का कोड छोटा होना चाहिए, लेकिन एक बेहतर सवाल यह हो सकता है, "React का API इतना सरल कैसे हो सकता है कि वह आपके लिए काम करने वाली सभी चीजों को दे सके?"

... लेकिन यह एक बिलकुल अलग सवाल है। :) आशा है कि मैंने आपके प्रश्न का उत्तर दिया - यदि मैंने नहीं किया तो मुझे खुशी होगी।


4
आपने मेरे सवाल का पूरी तरह से जवाब दिया। प्रतिक्रिया बहुत बढ़िया है। मैं इसे मोबाइल के लिए उपयोग करने के बारे में सोच रहा हूं इसलिए आकार महत्वपूर्ण है। यह सिर्फ इतना है कि यह क्या करता है के आसपास अधिक जानकारी नहीं है। और मैं सोच रहा हूं कि और भी तरकीबें हैं जिनका मैं उपयोग कर सकता हूं :) मुझे लगता है कि मैं जेकरी सामान से छुटकारा पा सकता हूं। और पॉलिमिलर / एक्सोस्केलेटन अभी समय में है :)
एल्डर जफरोव

2
मैं ऐप निर्माण की पूरी तरह से अलग अवधारणा में खुदाई कर रहा हूं। Vimeo.com/78151404 और github.com/component/component की जाँच करें - उन लोगों का उपयोग करना जो आपके लिए बिल्कुल भी jee नहीं करते हैं और jsxtransformations के साथ अच्छा खेलता है। और रिएक्ट सबसे कठिन काम करता है - बाकी सब कुछ (मॉडल, रूटिंग, सर्वर संचार) को माइक्रो कंप्यूटर द्वारा कवर किया जा सकता है।
एल्डर जफरोव

30
ध्यान दें, हम फेसबुक की मोबाइल वेबसाइट पर प्रतिक्रिया का उपयोग कर रहे हैं, जहां आकार निश्चित रूप से अत्यंत महत्वपूर्ण है :)
Vjeux

4
@ लाइटब्लेड उम ... नप। मेमोरी का उपयोग इस बात पर निर्भर करता है कि आपका कोड कितने आवंटन करता है। आवंटन से बचने के लिए रिएक्ट बहुत कोशिश करता है।
दान अब्रामोव

2
@ 1nfiniti ठीक है, कुछ नए नंबरों के साथ अपडेट किया गया है क्योंकि यह ढाई साल हो गया है।
सोफी अल्परट

-1

विचारों का एक जोड़ा .. मेरे पास आकार के साथ कुछ समान चिंताएं थीं, लेकिन इसका उपयोग करने के बाद, कोई मज़ाक नहीं, मैं इसे 5 एमबी आकार में उपयोग करता था। यह सिर्फ इतना ही अच्छा है। उस ने कहा, मैंने अन्य पुस्तकालयों पर अधिक से अधिक निर्भरता कम करने का निर्णय लिया। मैं दो चीजों के लिए jquery का उपयोग कर रहा था .. ajax और ऑटोमैटिक ajax रिस्पांस और रिक्वेस्ट हैंडलिंग (पहले, वगैरह) जो एक टोकन लॉगिन के बाद एक प्रतिक्रिया में थे, तब हैंडल होगा, और फिर सुनिश्चित करें कि प्रत्येक ajax रिक्वेस्ट को प्राधिकरण के हेडर में जोड़े भेजना। मैंने इसे देशी जावास्क्रिप्ट के एक सुपर छोटे सरल बिट के साथ बदल दिया। बहुत अच्छा काम करता है। इसके अलावा, मैं _underscore का उपयोग करने की कोशिश कर रहा था। मैंने इसे लॉश के साथ बदल दिया है, जो छोटा और तेज है, हालांकि वर्तमान में मैं इसका उपयोग नहीं कर रहा हूं इसलिए इसे पूरी तरह से हटा सकता है।

यहाँ एक लेख है, गूगल पर कई, कि मैंने पाया है कि कुछ विकल्प जेएस पर jquery का उपयोग कर देशी है।

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


1
यदि आप एक से अधिक ब्राउज़रों को लक्षित कर रहे हैं, तो आप केवल jQuery के कस्टम संस्करण का उपयोग कर सकते हैं, यदि आप कई ब्राउज़रों को लक्षित कर रहे हैं
Dan Heberden
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.