Node.js निर्भरता बहुत अधिक वजन


10

हाल ही में मैंने नोड.जेएस के साथ खेलना शुरू किया

अब, हर नोड ट्यूटोरियल में कहा गया है कि आपको इसके साथ शुरू करना चाहिए

npm init

और फिर, मान लें कि आप कुछ मानक सर्वर ढांचा चाहते हैं, कहते हैं कि आप एक्सप्रेस चुनें:

npm install express

लेकिन फिर आप ASP.NET जैसी दुनिया से उपयोग की जाने वाली कई और चीज़ें चाहते हैं।

मैं टेम्पलेट इंजन (जेड) और स्टाइलशीट प्री-प्रोसेसर (एसएएसएस) के बारे में बात करता हूं।

और फिर वे आपको बताते हैं "gulp / grunt स्थापित करें! इसलिए आप मिनिमाइज़ और बदसूरत कर सकते हैं और सर्वर और कई अन्य चीजें स्वचालित रूप से चला सकते हैं!"

और इसका मतलब है कि गल्प, नोड-एसएएस, और गल्प-एसएएस, और गल्प-क्रॉइलिफाइ, और शायद कुछ और वास्तव में अच्छे सामान (टीएसडी या बबेल, मार्कडाउन आदि) ...

लेकिन वे सभी आपकी डिस्क और प्रोजेक्ट पर भारी हैं । एक पल के लिए मत देखो और आप आसानी से अपने आप को उस प्रोजेक्ट के लिए 100 एमबी + डिस्क आकार के साथ पा सकते हैं (जो अभी तक शुरू भी नहीं हुआ है!) 10000+ फाइलों का उल्लेख नहीं करना है क्योंकि हर नोड मॉड्यूल अपनी निर्भरता लाता है, कोई फर्क नहीं पड़ता कि एक ही निर्भरता का उपयोग दूसरे मॉड्यूल द्वारा किया जाता है। और यह कहीं भी स्थानांतरित करने के लिए एक बहुत ही कठिन बात है, अकेले एक वेब सर्वर को चलो।

क्या मैं कुछ भूल रहा हूँ? मुझे नहीं लगता कि यह संभव है कि नोड पर्यावरण को इतनी प्रशंसा दी जाए जबकि इस तरह के स्पष्ट दोष मौजूद हैं। क्या मैं बहुत अधिक उम्मीद करता हूं (आखिरकार मैंने एक ही बार में कई उपकरणों का उपयोग करने की कोशिश की), क्या कुछ तुच्छ लोगों के लिए जाना जाता है जो इसे बाईपास करने के लिए जाना जाता है?


2
पूरी तरह से सहमत हूँ, मैं कुछ सामने के अंत परियोजनाओं के लिए npm पेड़ को देखकर चकित था। मुझे लगता है कि .net दुनिया में आपके पास एक ही चीज है, लेकिन वे सभी बायनेरिज़ के लिए संकलित हैं ताकि आप नोटिस न करें
इवान

2
दुर्भाग्य से यह वास्तव में एक विशिष्ट और उत्तर देने योग्य प्रश्न नहीं है, इसलिए यह शायद जल्द ही बंद हो जाएगा। मैं आपको जो बता सकता हूं वह यह है कि 1) जबकि उन सभी अतिरिक्त उपकरण किसी चीज के लिए उपयोगी होते हैं, छोटी परियोजनाओं को बस उनमें से अधिकांश की जरूरत नहीं है 2) समान कार्यक्षमता वाले अन्य सभी प्रोग्रामिंग ढांचे समान मात्रा में सामान के साथ आएंगे (बस देखो JRE या .NET डाउनलोड पर), एकमात्र अंतर यह है कि आपको "डिफ़ॉल्ट" वितरण का कितना हिस्सा चाहिए और आपको अन्य पैकेजों में कितना ढूंढना होगा 3) 100 एमबी आपकी देव मशीन पर कुछ भी नहीं है
Ixrec

1
@ निश्चित रूप से इसका उत्तर, आपने अभी किया है (या करने की कोशिश की गई है) :)। लेकिन फिर, मैं आपके दावों पर बहस कर सकता हूं: 1) यह एक छोटी परियोजना नहीं है - एक परियोजना पर विचार करें जिसमें अपनी स्वयं की js फ़ाइलों और स्टाइलशीट के साथ कई दृश्य हों। यह आपको सास, कैसानो और बदसूरत बनाने के लिए पर्याप्त है। यह भी पर्याप्त है कि आप एक्सप्रेस, जेड और थोड़ा और अधिक चाहते हैं। 2) मेरे पास एक सभ्य .नेट प्रोजेक्ट था जो इतना भारी नहीं बन पाया (और जितनी भी फाइलें हैं)। 3) शायद आधुनिक देव मशीन इसे आसानी से लेती है, लेकिन यह भी सर्वर पर वजन करता है, और यह थोड़ा अधिक विषय है। क्या मै गलत हु?
यानिव

2
@OrYaniv वास्तव में, आप मेरी बात को साबित करने की तरह हैं: यह एक ऐसा मुद्दा है जिस पर चर्चा की जा सकती है , लेकिन इसका उत्तर नहीं दिया गया है क्योंकि यह अभी बहुत व्यापक है और बहुत हद तक इस बात पर निर्भर करता है कि आप क्या कर रहे हैं और आपको क्या निर्भरता है जरुरत। वैसे, चैट में चर्चा पूरी तरह से ठीक है । या क्वोरा पर।
Ixrec

3
नोड.जेएस की आश्चर्यजनक रूप से फूला हुआ "सभी या कुछ भी नहीं" दुनिया में आपका स्वागत है, जो वास्तव में आसान नहीं है और जो भी आप पहले इस्तेमाल करते थे उससे बेहतर नहीं है।
ट्रुबेनफुच्स

जवाबों:


4

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

अब अच्छे Node.js प्रोग्रामर न्यूनतर अनुप्रयोगों को लिखना जानते हैं, जहाँ निर्भरताएँ चिंतित हैं। कम चीजें जो आप पर निर्भर करती हैं - बेहतर। बाईं ओर तार करने की आवश्यकता है? इसे एक सहायक में कोड करें, यह रिक्त स्थान के साथ कोड की 11 लाइनें हैं। अपनी स्ट्रिंग पंक्तियों को संख्या की आवश्यकता है? इसे कोड करें, यह कोड की 100 लाइनों से कम है।

यहां तक ​​कि परियोजना प्रबंधन जैसे अधिक जटिल कार्यों के लिए, मैं सुझाव दूंगा कि आप मेकफाइल्स से चिपके रहें, जबकि आपकी परियोजना काफी सरल है - ग्रंट और गल्प वास्तव में, विशाल परियोजनाओं के लिए वास्तव में उपयोगी हैं जिनके लिए बहुत अधिक भार उठाना है। लेकिन अपने एसपीए ब्लॉग के लिए? एक Makefile लिखें, इसमें 5 मिनट लगते हैं और आप जानते हैं कि यह कैसे काम करता है।

हर बार जब आप कोड की 3 पंक्तियों को लिखने की जरूरत है, तो बस npm ब्राउज़ करने का प्रलोभन बहुत अच्छा है, लेकिन जब भी यह उचित हो, तो इसका विरोध किया जाना चाहिए। यदि आपके पास 3 DOM जोड़तोड़ हैं, तो jQuery को शामिल न करें, उस स्थिर प्रोमो पृष्ठ के लिए कोणीय का उपयोग न करें, एक साधारण सर्वर के लिए एक्सप्रेस का उपयोग न करें। लेकिन आप एक सीएमएस कोडिंग कर रहे हैं? आपको jQuery, अंडरस्कोर और जो नहीं है जैसे पैकेज का उपयोग करने के लिए पागल होना होगा। हर समय 10 संग्रह प्रकार, 3 डीबीएस और उन्हें क्वेरी के साथ काम करना? आप अंडरस्कोर और कुछ अन्य लोगों का उपयोग नहीं करने के लिए पागल हो जाएंगे। जरा सोचिए 'क्या मैं इस पैकेज को स्थापित करके पर्याप्त समय बचा सकता हूं ?' या 'क्या मैं इसे केवल आधे घंटे के लिए कोड नहीं कर सकता?'


2
एक अन्य नोट पर, क्या वास्तव में एक स्ट्रिंग में लाइन संख्याओं को जोड़ने के लिए जावास्क्रिप्ट कोड की १०० पंक्तियाँ ली जाती हैं?
रॉबर्ट हार्वे

हाहाहा, मैंने वास्तव में एक यथार्थवादी लाइन-नंबरिंग कार्यान्वयन के बारे में नहीं सोचा था, क्योंकि ... मैं वास्तव में ऐसी किसी चीज़ के अस्तित्व की आवश्यकता को नहीं देखता, अकेले एक पैकेज के रूप में।
बोरिसस्टोयानोव

आप शायद उस लाइन की चीज़ को आधे में काट सकते हैं, बस इसे समझने की अनुमति दें। यह वास्तव में हल करने के लिए एक सरल समस्या है। (और यह योजना जैसी भाषा में एक लाइनर है, और शायद अब मुझे लगता है कि मैं इसके बारे में सोचता हूं)
Shayne
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.