2012-06-11 33 views
7

मुझे आश्चर्य है कि "use strict" शामिल करने के लिए वास्तव में नैसेसरी है जब मैं प्रोग्रामिंग कर रहा हूं और देखने के लिए किसी को भी अपना जावास्क्रिप्ट दस्तावेज़ जारी करता हूं। मैं इसका उपयोग करना चाहता हूं क्योंकि यह जांचने के लिए कि मैंने एक अच्छे तरीके से कोड किया है।केवल डीबग में "सख्त उपयोग करें"?

तो, क्या मुझे सार्वजनिक रूप से अपनी जावास्क्रिप्ट फ़ाइल जारी करते समय "use strict" का उपयोग करना चाहिए या निकालना चाहिए?

कारण मैं पूछता हूं कि मेरी जावास्क्रिप्ट फ़ाइल में जगह को सहेजना है।

+7

"* मेरी जावास्क्रिप्ट फ़ाइल * में स्थान बचाने" - गंभीरता से, कितना बड़ा आपकी जावास्क्रिप्ट फ़ाइलें हैं –

+2

@TomaszNurkiewicz यह सिर्फ के बारे में पूरी होना चाहिए (संपीड़न के बाद भी?): पी – Paulpro

+4

तो अपने बैंडविड्थ बिल है कि 10 इतनी अधिक है 'सख्त उपयोग' के बाइट्स बैंक को तोड़ते हैं, आप आईएसपी स्विच करना चाहेंगे ... –

उत्तर

2

लाइन "use strict"; आपकी फ़ाइल के 13 बाइट बनाता है। मैं सुझाव दूंगा कि आपके फ़ाइल आकार का 1% तक पहुंचने की संभावना नहीं है।

यदि आप बैंडविड्थ के बारे में चिंतित हैं, तो सर्वर-साइड पर gzip संपीड़न के साथ, अपने फ़ाइल आकार को कम करने के लिए वहां कई मिनीफायरों में से एक का उपयोग करें। 13 बाइट्स को मैन्युअल रूप से हटाकर एक झूठी अर्थव्यवस्था है।

सटीक रूप से कौन सा मिनीफायर आपके कोड पर निर्भर हो सकता है, लेकिन here are some suggestions

9

मैं उत्पादन में strict mode उपयोग के बारे में दो राय नहीं पाया:

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

और:

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

The source is in the comments at the bottom

और निश्चित रूप से "use strict" के उन 12b वजन एक बात नहीं बदलेगा।

+0

यह मेरी जावास्क्रिप्ट में कई चीजों का हिस्सा है। – user1431627

+0

दिलचस्प उद्धरण। सवाल के संबंध में, ऐसा लगता है कि ओपी ने पहले ही फैसला कर लिया है कि बचाए गए 12 बाइट सार्थक हैं। मुझे विश्वास करना मुश्किल लगता है, खासकर अगर इसे निर्माण प्रक्रिया के हिस्से के रूप में मैन्युअल रूप से हटा दिया जाना चाहिए। कुछ सख्त मोड परिवर्तन हैं जो पिछड़े संगत नहीं हैं, इसलिए घोषणात्मक को हटाने से उन स्थितियों में कोड टूट सकता है। लेकिन यदि गैर-सख्त कार्यान्वयन का समर्थन किया जा रहा है, तो उन परिवर्तनों की संभावना (उम्मीद है) गैर-संगत तरीके से उपयोग नहीं की जा रही है। –

+0

@amnotiam। गैर सख्त मोड में कौन सी सख्त-मोड सुविधाएं समर्थित नहीं हैं? या मैंने तुम्हें पूरी तरह से खो दिया ...? क्या आप 'सख्त मोड' का उपयोग करते हैं? – gdoron

2

निश्चित रूप से यह एक माइक्रो-ऑप्टिमाइज़ेशन है, लेकिन यदि आप एक साथ जोड़ रहे हैं (25 कहते हैं) जेएस मॉड्यूल एक साथ, अचानक 250bytes के सभी।

एक उच्च यातायात आवेदन में उत्पादन करने के लिए नियोजित करना, साथ प्रति मिनट 1000 हिट कहते हैं, 130 + जीबी यातायात का एक साल thats आप अगर अपने निर्माण हटाया रोका जा सकता है 'use strict'; रों

मुझे यकीन है कि एक बचत होगी हूँ एडब्ल्यूएस पर कुछ रुपये ...

मैंने इसे समय के लायक के अलावा उत्पादन में रखने के लिए एक आकर्षक तर्क नहीं देखा है। यह शायद नहीं है, लेकिन यदि आपके पास पहले से ही एक बिल्ड सिस्टम है, और कम से कम प्रयास के साथ इसे खींचने के बारे में जानते हैं, तो क्यों नहीं?

+1

यह gzip – Adria

+0

की वजह से 250 बाइट्स से बहुत कम होगा, मुझे आश्चर्य है कि क्या कोई कारण है कि वहां से कई जेएस मिनीमाइज़र नहीं हैं (विकल्प देने का विकल्प) इसे बाहर निकालें? – simon

+0

यह एक सुंदर शरारती तर्क है। नेटवर्क बैंडविड्थ मानना ​​$ 1/जीबी (बेहद ऊंचा) था, यह किसी भी वेबसाइट के मालिक की तरह नहीं है, प्रति वर्ष __ आधे अरब अनुरोधों की सेवा करने के लिए 130 डॉलर/वर्ष की चिंता होगी। –

0

मैं वर्तमान में अनुशंसा करता हूं कि आप उत्पादन के लिए लक्षित किसी भी कोड में "सख्त उपयोग करें" को हटा दें (और इसे डीबग में उपयोग करें)।

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