Skip to content
This page has been auto-translated and may contain errors.View in English

फ्रेमवर्क चुनना और सीखना

docs.scrimba.com

पिछले दो अध्यायों में फ्रेमवर्क क्या हैं और कौन से फ्रेमवर्क मौजूद हैं को कवर किया गया था। यह वाला व्यावहारिक पक्ष है: कौन सा उपयोग करें, कौन सा चुनें, और इसे कैसे सीखें। क्रम महत्वपूर्ण है, क्योंकि पहला सवाल ही वह है जिसे अक्सर छोड़ दिया जाता है।

क्या आपको बिल्कुल फ्रेमवर्क की जरूरत है?

दो प्रोजेक्ट्स की कल्पना करें। पहला एक ऐसा ऐप है जिसमें खाते, फॉर्म्स, और स्क्रीन्स हैं जो सभी साझा डेटा पर प्रतिक्रिया करते हैं। इसे हाथ से बनाना मतलब ठीक उसी सिस्टम को फिर से बनाना है जो एक फ्रेमवर्क पहले से ही सही कर चुका है, और वैनिला संस्करण एक बिखरा हुआ, आधा परीक्षित फ्रेमवर्क बन जाता है जिसे कोई विरासत में लेना नहीं चाहता। ऐसे में Django या React का उपयोग करना विकल्प की तुलना में कम गतिशील भागों को चुनना है।

दूसरा एक लैंडिंग पेज है, एक कंटेंट साइट, एक छोटा स्क्रिप्ट, एक फॉर्म जो कहीं जमा होता है। सामान्य HTML, CSS, और थोड़ा JavaScript इन सभी को कोई बिल्ड स्टेप, कोई dependency updates, और अगले साल कोई माइग्रेशन के बिना कवर करते हैं। ऐसे पेज को एक पूर्ण फ्रेमवर्क में लपेटना ऐसी मशीनरी जोड़ता है जिससे केवल टूलिंग को फायदा होता है। बहुत से अनुभवी डेवलपर्स जानबूझकर वैनिला शिप करते हैं, और यह एक पेशेवर उत्तर है, कभी भी एक शुरुआती का समझौता नहीं।

इंजीनियरिंग के पास एक सीधा पुराना नियम है जो दोनों मामलों को कवर करता है: KISS, "keep it simple, stupid"। यह अपमान डिजाइनर की ओर नहीं बल्कि डिजाइन की ओर निर्देशित है, और विचार यह है कि सबसे अच्छा समाधान वह है जिसमें सबसे कम मशीनरी हो और अभी भी काम करे। दोनों प्रोजेक्ट्स ऊपर इसका पालन करते हैं, और वे विपरीत उत्तरों पर पहुंचते हैं।

यह परीक्षण को एक सवाल बनाता है, हर प्रोजेक्ट के लिए ताजा पूछा जाता है: वह विकल्प चुनें जो आपको कम मशीनरी को बनाए रखने के लिए छोड़ता है। जब सिस्टम उत्पाद को बौना करता है, तो वह फ्रेमवर्क है। जब उत्पाद लगभग सब कुछ है, तो वह वैनिला है।

कुछ संकेत कॉल को ठोस बनाते हैं। फ्रेमवर्क की ओर झुकाव: बहुत सी स्क्रीन्स जो लाइव डेटा साझा करती हैं, उपयोगकर्ता खाते और अनुमतियां, फॉर्म्स जो मान्य करते और सहेजते हैं, कई लोग वर्षों तक एक ही कोडबेस पर काम करते हैं। वैनिला की ओर झुकाव: ज्यादातर कंटेंट, कम इंटरेक्टिविटी, महीनों में मापी गई जीवनकाल, एक या दो रखरखाव करने वाले, या एक पेज जहां लोड गति पूरी विशेषता है। और प्रोजेक्ट आकार समय के साथ दोनों दिशाओं में उत्तर को बदल सकता है, इसलिए उपयोगी आदत यह है कि जब प्रोजेक्ट आकार बदले तो सवाल को फिर से पूछें।

यह निर्णय दो पहचानने योग्य तरीकों से विफल होता है, और दोनों सवाल को छोड़ने से आते हैं। पहली विफलता फ्रेमवर्क के आकार का लैंडिंग पेज है: एक बिल्ड पाइपलाइन, एक dependency tree, और चार स्क्रीन्स के कंटेंट से जुड़े अंतिम माइग्रेशन, जहां टूलिंग पर बिताया गया हर घंटा वह घंटा है जिसकी उत्पाद को जरूरत नहीं थी। दूसरी यादृच्छिक फ्रेमवर्क है: एक वैनिला कोडबेस जो अपना खुद का राउटर, अपना खुद का state store, और अपनी खुद की component system बढ़ाता है, प्रत्येक एक बार लिखा गया, कभी परीक्षण नहीं किया गया, और केवल एक व्यक्ति द्वारा समझा गया। वह दूसरा प्रोजेक्ट बिना फ्रेमवर्क के लाभ के फ्रेमवर्क की लागत का भुगतान करता है। दोनों विफलताएं अंदर से दृढ़ संकल्प की तरह दिखती हैं; दोनों मामलों में सुधार एक ही unglamorous कदम है कि प्रोजेक्ट क्या बन गया है इसके आधार पर फिर से निर्णय लें।

Junoक्या आपको फ्रेमवर्क की जरूरत है? प्रति प्रोजेक्ट एक सवाल पूछें: कौन सा विकल्प बनाने और बनाए रखने के लिए कम छोड़ता है? एक इंटरैक्टिव ऐप के लिए खाते और साझा डेटा के साथ, एक फ्रेमवर्क आमतौर पर जीत जाता है। कंटेंट पेज या छोटी स्क्रिप्ट के लिए, सामान्य कोड आमतौर पर जीत जाता है। दोनों उत्तर सम्मानजनक हैं, और सामान्य कोड चुनना कभी भी एक downgrade नहीं है!
Junoक्या आपको फ्रेमवर्क की जरूरत है? साझा लाइव state, खाते, फॉर्म्स, और लंबी multi-person जीवन फ्रेमवर्क की ओर इशारा करते हैं; कंटेंट-भारी, short-lived, या speed-critical पेज वैनिला की ओर इशारा करते हैं। जब प्रोजेक्ट आकार बदले तो सवाल को फिर से पूछें न कि मूल कॉल का बचाव करें, और हर बार प्रति प्रोजेक्ट बनाएं।
Junoक्या आपको फ्रेमवर्क की जरूरत है? दो क्लासिक विफलताओं पर नज़र रखें: फ्रेमवर्क के आकार का लैंडिंग पेज कुछ नहीं के लिए tooling लागत का भुगतान कर रहा है, और वैनिला ऐप जो चुपचाप अपना खुद का unmaintained फ्रेमवर्क बढ़ाया है। दोनों इस विकल्प को settled मानने से आते हैं। मैं हर प्रोजेक्ट inflection पर फिर से निर्णय लेता हूँ, और इसने मुझे दोनों ditches से अधिक बार बचाया है।

कौन सा चुनें

जब उत्तर हाँ हो, तो unglamorous मानदंड के साथ चुनें। Benchmarks और feature तुलना सबसे कम उपयोगी inputs हैं, क्योंकि एक परिवार के भीतर लोकप्रिय विकल्प सभी काफी तेज़ और काफी सक्षम हैं। जो वास्तव में आपकी दैनिक जिंदगी को आकार देता है:

Ecosystem और community: परिपक्व documentation, उत्तर दिए गए सवाल, और packages जिन समस्याओं को आप हिट करेंगे। Team और codebase जिसमें आप शामिल हो रहे हैं: सबसे अच्छा फ्रेमवर्क आमतौर पर वह है जो आपका प्रोजेक्ट पहले से उपयोग कर रहा है, और team के भीतर consistency novelty को हराता है। Job market, अगर काम के लिए सीख रहे हैं: शुद्ध उपयोग संख्याएं मायने रखती हैं, जो एक बड़ा हिस्सा है कि क्यों React कई लोगों की rational पहली पिक है। और language जिसे आप जानते हैं: एक Python developer Django तक Rails से तेजी से पहुंचता है क्योंकि कारण जिनका गुणवत्ता से कोई संबंध नहीं है।

vanilla विकल्प को आखिर तक सूची पर रखें। अगर comparison table भर जाती है और कोई भी candidates simplicity test पर "none of the above" को beat नहीं करता, तो वह उत्तर आपको कुछ बता रहा है।

एक candidate को करीब से देखने के लिए, एक घंटे की firsthand evaluation एक हफ्ते की राय पढ़ने से बेहतर है: official tutorial को skim करें और judge करें कि क्या documentation समझाता है या gesture करता है; release history को check करें एक steady, unfrantic pace के लिए; "migrating from version X to Y" खोजें और देखें कि क्या ये guides एक afternoon या एक season की तरह पढ़ते हैं; और देखें कि क्या आप पूछोगे ये सवाल पहले से ही अच्छे उत्तर हैं। एक फ्रेमवर्क एक लंबा रिश्ता है, और ये compatibility checks हैं।

दो senior आदतें इसे round out करती हैं। पहला, well-established पर बेट करें: एक technology जो वर्षों से व्यापक रूप से उपयोग की जाती है, उसके known failure modes, hiring pools, और answers हैं, और "proven और slightly unfashionable" "new और exciting" की तुलना में कहीं अधिक बार दूसरे तरीके के बजाय survive करता है। Churn एक compounding लागत है, और frameworks जो दशक survive करते हैं पहले से ही इसका भुगतान कर चुके हैं। दूसरा, build-versus-adopt को component level पर एक वास्तविक विकल्प के रूप में रखें: कभी-कभी फ्रेमवर्क की सही मात्रा एक routing library और कुछ नहीं है, एक समस्या के लिए adopted जबकि बाकी सब plain रहता है। एक फ्रेमवर्क को adopt करना all-or-nothing नहीं है, और सबसे छोटी dependency जो actual hard part को solve करती है एक सम्मानजनक architecture है।

Junoकौन सा चुनें व्यावहारिक मानदंड के साथ चुनें: आपकी team पहले से क्या उपयोग करती है, documentation और community कितना अच्छा है, job market क्या चाहता है, और आप कौन सी language पहले से जानते हैं। एक परिवार के भीतर, हर लोकप्रिय विकल्प अच्छा है, इसलिए stakes कम होते हैं जितना वे लगते हैं। आपके कौशल जो भी तरीका से जाएं transfer होंगे।
Junoकौन सा चुनें एक candidate को एक focused घंटा दें: अपना tutorial पढ़ें, अपनी release rhythm check करें, और एक version-migration guide पढ़ें, क्योंकि यह future है जिसके लिए आप sign up कर रहे हैं। Community, team fit, और hiring benchmarks को हर बार beat करते हैं। और "no framework" को shortlist पर purpose से आखिर तक रखें।
Junoकौन सा चुनें Well-established पर बेट करें: दशक survive करना सबसे informative benchmark है जो एक framework post कर सकता है। और याद रखें adoption binary नहीं है; कभी-कभी एक small library एक hard problem के लिए फ्रेमवर्क की सही मात्रा है। लक्ष्य एक product है जो ship करे और shippable रहे।

किसी भी फ्रेमवर्क को कैसे सीखें

Language को पहले सीखें। एक फ्रेमवर्क अपनी language को हर जगह assume करता है: React code JavaScript wall to wall है, और Django ऐप की हर confusing line Python के नीचे है। Learners जो फ्रेमवर्क पर skip करते हैं एक साथ दो mysteries debug करने में समाप्त होते हैं, फ्रेमवर्क का behaviour और language की syntax, कोई तरीका नहीं है कि कौन सी कौन है। अगर React आपका लक्ष्य है, तो JavaScript track वास्तविक पहला कदम है; Django या pytest के लिए, Python track एक ही भूमिका निभाता है। Language first सबसे बड़ा shortcut है, क्योंकि यह वह हिस्सा है जो हर जगह transfer होता है।

फिर कुछ छोटा और real बनाएं। एक छोटा project जो आप वास्तव में चाहते हैं, official tutorial को lean करते हुए बनाया गया, किसी भी amount की watching और reading से अधिक सिखाता है, क्योंकि फ्रेमवर्क की shape केवल आपके अपने हाथों के नीचे समझ में आती है। पहले project को purpose पर modest रखें: इसकी पूरी job फ्रेमवर्क के ideas को आप में introduce करना है, और masterpiece बाद में आ सकता है।

और जैसे जाएं, हमेशा पूछते रहें कि फ्रेमवर्क आपके लिए क्या कर रहा है। हर convenient feature कुछ real के लिए stand in है: एक route URL parsing के लिए, एक component DOM updates के लिए, एक model SQL के लिए। आपको इन layers को upfront master करने की जरूरत नहीं है, लेकिन जानना कि वे मौजूद हैं, और मोटे तौर पर फ्रेमवर्क इनके साथ क्या करता है, यह use करने को अलग करता है एक फ्रेमवर्क से blindly पर निर्भर होने के लिए।

इस stage पर आम trap tutorial loop है: course के बाद course खत्म करना जब कभी एक unguided project शुरू नहीं करते, क्योंकि tutorials productive लगते हैं और blank files risky लगते हैं। इसे deliberately break करें। एक official tutorial के बाद, छोटे real project को शुरू करें और इसकी समस्याओं को drive करें कि आप क्या look up करते हैं; documentation को एक live problem के हाथ में read करना कभी homework के रूप में read किए गए documentation की तरह stick नहीं करता है। अपने project पर stuck और unstuck होना वास्तविक skill है जिसे train किया जा रहा है।

दो आदतें फ्रेमवर्क ज्ञान को durable बनाती हैं। Escape hatches को जल्दी सीखें: हर फ्रेमवर्क के पास sanctioned तरीके हैं अपने abstractions के नीचे drop करने के लिए (raw SQL ORM के पास, direct DOM access renderer के पास), और जानना कि वे कहाँ हैं यह बताता है मशीन की boundaries यहाँ तक कि अगर आप उन्हें rarely use करते हैं। और फ्रेमवर्क के नीचे platform में invest करें, HTTP, DOM, SQL, language runtime, एक steady drip पर। Frameworks हैं कि कैसे platform को currently hold किया जा रहा है; platform है जो endures। Developers जिन्होंने platform को जानते हैं वे पिछले बीस वर्षों के हर फ्रेमवर्क transition के बीच में रहे, जो एक track record है जिसे copy करने के लिए लायक है।

Junoकैसे सीखें फ्रेमवर्क से पहले language को हमेशा सीखें: React से पहले JavaScript, Django से पहले Python। फिर official tutorial को अपने बगल में खुला रखते हुए एक छोटा real project बनाएं। छोटा और finished बड़े और abandoned से बेहतर है, और language के बारे में सब कुछ जो आप सीखते हैं अपनी value को हमेशा के लिए रखता है!
Junoकैसे सीखें purpose पर tutorial loop से escape करें: एक official tutorial, फिर एक छोटा unguided project जिसकी समस्याएं decide करती हैं कि आप अगला क्या read करते हैं। Docs को एक live problem के हाथ में पढ़ा वास्तव में stick करता है। अपने काम पर stuck और unstuck होना असली skill है जिसे आप train कर रहे हैं।
Junoकैसे सीखें Escape hatches को जल्दी खोजें; वे मशीन के true edges को चिन्हित करते हैं। और अपने knowledge को platform के नीचे खिलाते रहें, HTTP, DOM, SQL, क्योंकि frameworks rotate करते हैं और platform रहता है। Platform लोग हर फ्रेमवर्क transition survive करते हैं; मैंने कई देखे हैं और पैटर्न एक बार भी miss नहीं हुआ है।

यह आपको कहाँ छोड़ता है

यह पूरा primer है: simplicity test के रूप में, unglamorous मानदंड pick के लिए, learning के लिए language से पहले framework। जब एक specific framework अगला दिखाई दे, इन docs में या wild में, The kinds of frameworks उसे place करने का map है, और What is a framework इसके नीचे definition है।