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

फ्रेमवर्क के प्रकार

docs.scrimba.com

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

वेब: फ्रंट-एंड और बैक-एंड

वेब फ्रेमवर्क उस लाइन के साथ विभाजित होते हैं जहां वेब स्वयं विभाजित होता है। फ्रंट-एंड फ्रेमवर्क ब्राउज़र में चलते हैं और उपयोगकर्ता जो देखता है उसे प्रबंधित करते हैं; बैक-एंड फ्रेमवर्क एक सर्वर पर चलते हैं और डेटा, खातों और पर्दे के पीछे की हर चीज को प्रबंधित करते हैं। यदि आप वेब विकास की ओर जा रहे हैं, तो प्रत्येक पक्ष से एक संभवतः एक दैनिक उपकरण बन जाएगा, और कौन सा आमतौर पर आपके द्वारा नहीं बल्कि जिस टीम या परियोजना से आप जुड़ते हैं उसके द्वारा निर्णय लिया जाता है।

फ्रंट-एंड नाम जो आप मिलेंगे:

  • React: व्यापक मार्जिन से सबसे अधिक उपयोग किया जाता है, सबसे बड़े इकोसिस्टम और जॉब बाजार के साथ। तकनीकी रूप से एक पूर्ण फ्रेमवर्क के बजाय एक UI लाइब्रेरी, एक अंतर जिसमें नीचे कवर किया गया एक उपयोगी कोर है।
  • Vue: एक कोमल शुरुआत और दस्तावेज़ के लिए जाना जाता है जो लोग वास्तव में आनंद लेते हैं; एक पूर्ण, सुव्यवस्थित मध्य मार्ग।
  • Angular: Google का batteries-included फ्रेमवर्क, सब कुछ के बारे में मतलब रखने वाला; बड़ी संस्थाओं में सबसे अधिक घर पर जो हर चीज करने का एक अनुमोदित तरीका चाहते हैं।
  • Svelte: बिल्ड समय पर अपना काम करता है और ब्राउज़र में कम कोड भेजता है; छोटर समुदाय, इसमें लोगों द्वारा बार-बार प्रशंसा की जाती है।

और बैक-एंड नाम, जहां फ्रेमवर्क आमतौर पर एक भाषा से जुड़ा होता है:

  • Django (Python): batteries included, डेटाबेस से व्यवस्थापक इंटरफेस तक; Python के एक लगाती साथी जिसे आप पहले से जानते हैं।
  • Rails (Ruby): फ्रेमवर्क जिसने कन्वेंशन ओवर कॉन्फ़िगरेशन को लोकप्रिय बनाया; इसके विचार Laravel सहित अधिकांश आधुनिक वेब फ्रेमवर्क में गूंजते हैं।
  • Laravel (PHP): PHP दुनिया का आधुनिक मानक, जो अभी भी वेब के एक बहुत बड़े हिस्से को चलाता है।
  • Express (JavaScript): जानबूझकर न्यूनतम, एक पूर्ण फ्रेमवर्क के बजाय एक टूलकिट के करीब; आप बाकी को स्वयं इकट्ठा करते हैं।
  • Spring (Java): एंटरप्राइज़ वर्कहोर्स; विस्तृत, गहरी स्थापित, और बड़ी कंपनियों में हर जगह।

एक बार जब आप लोगो के पार देख सकते हैं, तो एक ही विचार इन सभी में दोहराते हैं। फ्रंट-एंड फ्रेमवर्क सभी घटकों पर परिवर्तित हुए: इंटरफेस के छोटे, पुन: प्रयोग योग्य टुकड़े जो अपना रूप और व्यवहार के मालिक हैं। बैक-एंड फ्रेमवर्क सभी रूटिंग (कौन सा URL कौन सा कोड चलाता है) प्रदान करते हैं, कुछ तरीके से डेटाबेस से बात करने के लिए (अक्सर एक ORM, जो आपको डेटाबेस पंक्तियों को साधारण ऑब्जेक्ट्स के रूप में काम करने देता है), और आपके व्यावसायिक तर्क के लिए एक स्लॉट। एक फ्रेमवर्क में जानें कि ये विचार किस लिए हैं और आप अगले फ्रेमवर्क का अधिकांश हिस्सा पहले से ही सीख चुके हैं; उनके बीच जाना मुख्य रूप से नई सिंटैक्स और नए फोल्डर नाम का मतलब है एक ही अवधारणाएं।

वर्तमान फ्रंट एंड में एक और परत है। React, Vue, और Svelte इंटरफेस को संभालते हैं लेकिन रूटिंग, डेटा लोडिंग, और सर्वर रेंडरिंग को आप पर छोड़ देते हैं, इसलिए प्रत्येक एक मेटा-फ्रेमवर्क बढ़ा: लाइब्रेरी के शीर्ष पर बनाया गया एक फ्रेमवर्क जो उन लापता टुकड़ों को आपूर्ति करता है। Next.js React के लिए वह भूमिका निभाता है, Nuxt Vue के लिए, और SvelteKit Svelte के लिए, और व्यावहार में अधिकांश नई उत्पादन ऐप्स नंगे लाइब्रेरी के बजाय मेटा-फ्रेमवर्क तक पहुंचती हैं। यह पुरानी "क्या React एक फ्रेमवर्क या एक लाइब्रेरी है" बहस को भी एक उपयोगी तरीके से सुलझाता है: React स्वयं केवल UI प्रदान करता है और अपने घटकों के अलावा कहीं भी नियंत्रण को उलटा नहीं करता है, जो इसे पिछले अध्याय की परिभाषा द्वारा एक लाइब्रेरी बनाता है; इसे Next.js में लपेटें और जोड़ी बिल्कुल एक फ्रेमवर्क की तरह व्यवहार करती है। लेबल महत्वपूर्ण है कम कि जानना कि कौन सी परत किस निर्णय का मालिक है, क्योंकि यह वह है जहां आप देखते हैं जब कुछ गलत व्यवहार करता है।

JunoWeb frameworks फ्रंट-एंड फ्रेमवर्क जैसे React और Vue ब्राउज़र में चलते हैं और लोग जो देखते हैं उसे संभालते हैं; बैक-एंड फ्रेमवर्क जैसे Django और Rails सर्वर पर चलते हैं और डेटा और खातों को संभालते हैं। आपको आज सही चुनने की ज़रूरत नहीं है, और आपको बिल्कुल भी उन सभी की ज़रूरत नहीं है। अधिकांश लोग जिस एक को अपनी पहली टीम उपयोग करती है उसे सीखते हैं, और यह ठीक काम करता है!
JunoWeb frameworks वेब नाम अलग हैं, विचार दोहराते हैं: फ्रंट एंड पर घटक; रूटिंग, एक ORM, और बैक एंड पर व्यावसायिक-तर्क स्लॉट। एक फ्रेमवर्क के माध्यम से विचार सीखें और अगला एक ज्यादातर परिचित आकार पर नई सिंटैक्स है। यह स्थानांतरण यही है कि "गलत एक" को पहले चुनना लोगों को डरते हैं उससे कम खर्च करता है।
JunoWeb frameworks आधुनिक फ्रंट-एंड काम आमतौर पर एक मेटा-फ्रेमवर्क का मतलब है: React पर Next.js, Vue पर Nuxt, Svelte पर SvelteKit, रूटिंग और सर्वर रेंडरिंग का आपूर्ति करते हुए कि बेस लाइब्रेरी छोड़ देती है। सीधा रखें कि कौन सी परत किस निर्णय का मालिक है, क्योंकि वह यही है जहां डीबगिंग शुरू होता है। और React वास्तव में हमारी परिभाषा द्वारा एक लाइब्रेरी है; Next.js यह है जो जोड़ी को एक फ्रेमवर्क बनाता है।

ऐप्स और गेम्स

मोबाइल विकास का अपना फ्रेमवर्क कहानी है, और यह एक सवाल पर केंद्रित है: iPhone और Android के लिए अलग से बनाएं, या दोनों के लिए एक बार? दो फ्रेमवर्क एक बार-बिल्ड जवाब पर हावी हैं। Flutter (Google से, Dart भाषा का उपयोग करते हुए) इंटरफेस को पिक्सेल द्वारा पिक्सेल से आकर्षित करता है, इसलिए ऐप्स हर जगह समान दिखते हैं। React Native React के घटक मॉडल को मोबाइल पर लाता है और प्रत्येक प्लेटफॉर्म के मूल इंटरफेस टुकड़ों को चलाता है, जो एक स्वाभाविक निरंतरता है यदि आप पहले से ही React जानते हैं।

गेम इंजन उनके सबसे कुल फ्रेमवर्क हैं: वे लूप के मालिक हैं जो साठ बार प्रति सेकंड चलता है, और आपका कोड भरता है कि प्रत्येक ऑब्जेक्ट इसके अंदर क्या करता है। Unity (C#) indie और मध्य आकार के गेम्स के लिए डिफ़ॉल्ट है और मोबाइल गेमिंग का बहुत कुछ। Unreal (C++) नेतृत्व करता है जहां दृश्य निष्ठा बिंदु है, बड़ी बजट वाली गेम्स से फिल्म उत्पादन तक। Godot मुक्त, खुला स्रोत इंजन है जिसका समुदाय तेजी से बढ़ा है, और शुरू करने के लिए एक अनुकूल जगह।

क्रॉस-प्लेटफॉर्म ट्रेड अपनी कीमत टैग को जोर से पढ़ने योग्य है। एक कोडबेस का मतलब आधा काम और एक टीम है, जो यही है कि व्यवसाय इसे क्यों पसंद करते हैं। कीमत आप और प्लेटफॉर्म के बीच एक परत है: जब एक बिल्कुल नई iPhone सुविधा जहाज करती है, तो फ्रेमवर्क को इसे आराम से उपयोग करने से पहले इसका समर्थन करने की आवश्यकता होती है, और पूरी तरह से देशी अनुभव को निचोड़ना अतिरिक्त देखभाल लेता है। टीमें जिन्हें हर देशी विवरण की आवश्यकता है अभी भी प्रत्येक प्लेटफॉर्म के अपने किट के साथ अलग से बनाती हैं; टीमें जिन्हें एक छोटे दल के साथ दोनों पर शिप करने की आवश्यकता है Flutter या React Native चुनते हैं और शायद ही कभी खेद करते हैं।

गेम इंजन नियंत्रण के व्युत्क्रम को जितना दूर तक धकेलते हैं, जो उन्हें एक स्पष्टीकरण चरम मामला बनाता है। इंजन समय का मालिक है: यह हर फ्रेम पर आपके स्क्रिप्ट को कॉल करता है, आपकी कॉलबैक के बीच भौतिकी चलाता है, और निर्णय लेता है कि आपकी ऑब्जेक्ट तब भी मौजूद है। आप प्राथमिकता से एक इंजन "में" कोड नहीं लिखते; आप इसके संपादक के अंदर काम करते हैं, और स्क्रिप्ट्स दृश्य, सामग्री और प्रीफैब्स के बीच एक संपत्ति हैं। यह कुल स्वामित्व बिल्कुल यही है कि इंजन क्यों मौजूद हैं: प्रस्तुत करना, भौतिकी, और संपत्ति पाइपलाइन विशेषज्ञ काम के वर्ष हैं कोई भी गेम टीम फिर से बनाना नहीं चाहता। एक ही तर्क नीचे स्केल करता है: जब भी प्लंबिंग उत्पाद को बौना करता है, एक फ्रेमवर्क सुविधा बंद हो जाता है और एकमात्र समझदारी भरा मार्ग बन जाता है।

JunoApps and games Flutter और React Native एक कोडबेस को iPhone और Android ऐप दोनों में बनाते हैं, यही कारण है कि इतनी सारी टीमें उनका उपयोग करती हैं। गेम्स के पास Unity, Unreal, और Godot जैसे इंजन हैं, जो ग्राफिक्स और भौतिकी को संभालते हैं जबकि आपका कोड कहता है कि हर ऑब्जेक्ट क्या करता है। वेब के समान फ्रेमवर्क विचार, अलग कपड़ों में।
JunoApps and games क्रॉस-प्लेटफॉर्म मोबाइल थोड़ी देशी पॉलिश के लिए आधा काम व्यापार करता है, एक डील अधिकांश टीमें खुशी से लेती हैं, जबकि पूरी तरह से देशी किट अभी भी जवाब हैं जब मंच अनुभव सब कुछ है। गेम इंजन पूर्ण शक्ति पर फ्रेमवर्क विचार है: वे साठ बार प्रति सेकंड दिखाते हैं और आपकी स्क्रिप्ट्स व्यवहार को भरती हैं।
JunoApps and games इंजन वह चरम है जो नियम की व्याख्या करता है: जब प्लंबिंग (प्रस्तुत करना, भौतिकी, संपत्ति पाइपलाइन) वर्षों का काम है और आपके वास्तविक गेम को बौना करता है, नियंत्रण को हाथ करना एकमात्र समझदारी भरा व्यापार है। उस अनुपात को अपने सिर में रखें, प्लंबिंग बनाम उत्पाद, और किसी भी क्षेत्र में अधिकांश फ्रेमवर्क निर्णय आसान हो जाते हैं।

शांत लोग: परीक्षण और डेटा

हर फ्रेमवर्क उत्पाद बनाने के बारे में नहीं है; कुछ इसके चारों ओर काम को व्यवस्थित करते हैं। परीक्षण फ्रेमवर्क स्पष्टतम मामला हैं, और पिछले अध्याय की परिभाषा का शुद्धतम उदाहरण: pytest (Python), Jest (JavaScript), और JUnit (Java) प्रत्येक आपके परीक्षण कार्यों को खोजते हैं, उन्हें चलाते हैं, और रिपोर्ट करते हैं, आप कभी एक प्रोग्राम नहीं लिखते जो आपनी परीक्षाओं को बुलाता है। आप लगभग हर पेशेवर कोडबेस में एक से मिलेंगे, आमतौर पर जिस प्रकल्प की भाषा से मेल खाता है।

डेटा और मशीन लर्निंग के फ्रेमवर्क भी हैं। PyTorch शोध और तेजी से उत्पादन में हावी है; TensorFlow गहरी उत्पादन उपकरणों के साथ Google का इकोसिस्टम है। दोनों प्रशिक्षण मॉडल के गणितीय मशीनरी को संभालते हैं ताकि आपका कोड गणना के बजाय मॉडल का वर्णन करे। यदि How AI Works ट्रैक ने आपको दिलचस्पी दी, तो ये वह उपकरण हैं जिसके साथ वह दुनिया बनाती है।

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

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

JunoTesting and data frameworks परीक्षण फ्रेमवर्क जैसे pytest और Jest आपके परीक्षण कार्यों को खोजते हैं और आपके लिए उन्हें चलाते हैं, एक फ्रेमवर्क कॉल करने वाले कोड का एक छोटा रोज़मर्रा उदाहरण। मशीन लर्निंग में, PyTorch और TensorFlow प्रशिक्षण मॉडल की भारी गणित को संभालते हैं। फ्रेमवर्क ऐप्स बनाने से परे सभी प्रकार के प्रोग्रामिंग काम को व्यवस्थित करते हैं।
JunoTesting and data frameworks एक टेस्ट रनर फ्रेमवर्क विचार है अपने सबसे कम विवादास्पद रूप में: खोज, अलगाव, और रिपोर्टिंग कि कोई भी प्रोजेक्ट प्रति फिर से बनाना नहीं चाहिए। ध्यान दें कि यहां तक कि फ्रेमवर्क-संदेही डेवलपर्स भी बिना शिकायत के एक का उपयोग करते हैं; व्यापार छोटा है और लाभ निरंतर है। वह असमानता किसी भी फ्रेमवर्क को न्यायसंगत ठहराने के लिए एक अच्छा लेंस है।
JunoTesting and data frameworks PyTorch एक लाइब्रेरी है जब आप प्रशिक्षण लूप लिखते हैं और एक फ्रेमवर्क जब इसका प्रशिक्षक आपको चलाता है, और यह सामान्य पाठ है: बड़े उपकरण श्रेणी को निर्भर करता है कि आप कौन सी परत चलाते हैं। ऊंचाई पर पूछें जहां आप काम कर रहे हैं कि नियंत्रण प्रवाह किसके पास है, और लाइब्रेरी-या-फ्रेमवर्क सवाल स्वयं को जवाब देता है।

यह कहां आगे जाता है

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