मुझे इनलाइन स्क्रिप्टिंग से क्यों बचना चाहिए?


47

एक जानकार मित्र ने हाल ही में एक वेबसाइट देखी जिसे मैंने लॉन्च करने में मदद की, और "बहुत ही शांत साइट, स्रोत कोड में इनलाइन स्क्रिप्टिंग के बारे में शर्म की बात" जैसी कुछ टिप्पणी की।

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

ठीक है, यह प्रश्न लेखन में कई प्रश्नों में बदल गया। लेकिन मूल रूप से, इनलाइन स्क्रिप्टिंग - सौदा क्या है?


3
पुन: उपयोग और डिज़ाइन को क्रियान्वयन से अलग करना मेरे सिर के ऊपर से अंदर की ओर न जाने के दो कारण हैं।
माइकल टॉड

1
कुछ संदर्भ यहाँ याद आ रहे हैं - "इनलाइन स्क्रिप्टिंग?"
ग्रेफेड

हाँ, क्या यह पृष्ठ के अंदर सीएसएस, पृष्ठ में जेएस, या कुछ और है?
माइकल के

2
@ ग्रेफेड, माइकल: ठीक है, मेरे दोस्त ने निर्दिष्ट नहीं किया है, तो चलो मान लें कि यह दोनों है। आइए अधिक जेएस कहते हैं, जैसा कि आमतौर पर जिम्मेदारी के मेरे क्षेत्र के करीब है ...
thesunneversets

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

जवाबों:


36

इनलाइन स्क्रिप्टिंग के साथ वास्तविक समस्याएं क्या हैं? क्या कोई महत्वपूर्ण प्रदर्शन मुद्दा है, या यह केवल अच्छी शैली की बात है?

लाभ प्रदर्शन आधारित नहीं हैं, वे (जैसे कि माइकल ने अपनी टिप्पणी में कहा है) दृश्य और नियंत्रक को अलग करने के लिए अधिक। HTML / CSS फ़ाइल को आदर्श रूप में, केवल प्रस्तुति होनी चाहिए और स्क्रिप्ट के लिए अलग-अलग फ़ाइलों का उपयोग किया जाना चाहिए। इससे आपको (और आपके साथियों को) दृश्य और कार्यात्मक दोनों पहलुओं को पढ़ने और बनाए रखने में आसानी होती है।

क्या मैं अपने वरिष्ठों के सामने इनलाइन स्क्रिप्टिंग पर तत्काल कार्रवाई को सही ठहरा सकता हूं, जब काम करने के लिए अन्य चीजें हैं जो साइट पर अधिक स्पष्ट प्रभाव डाल सकती हैं?

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

यदि आप एक वेबसाइट तक खिंच गए, और स्रोत कोड पर एक नज़र डालते हैं, तो कौन से कारक आपको "हम्म, पेशेवर काम यहाँ" कहने के लिए प्रेरित करेंगे, और क्या आप स्पष्ट रूप से शौकिया नौकरी से हटना चाहेंगे?

नंबर एक कारक जो मुझे बताएगा कि यह पेशेवर नहीं है तालिकाओं या विभाजनों का अति प्रयोग है। यहाँ एक लेख है जिसमें बताया गया है कि क्यों न इसका अत्यधिक उपयोग किया जाना चाहिए।


48

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

  • गूगल,
  • विकिपीडिया,
  • माइक्रोसॉफ्ट,
  • एडोब,
  • डेल,
  • आईबीएम।

उनके हर होम पेज में इनलाइन जावास्क्रिप्ट का उपयोग किया जाता है। क्या इसका मतलब यह है कि वे सभी कंपनियां अपने घर बनाने के लिए शौकिया लोगों को काम पर रखती हैं?


मैं उन डेवलपर्स में से एक हूं जो HTML के अंदर जावास्क्रिप्ट कोड नहीं डाल सकते हैं। मैं उन परियोजनाओं के अंदर कभी नहीं करता, जिन पर मैं काम करता हूं ( <a href="javascript:...">परियोजनाओं के लिए शायद कुछ कॉल को छोड़कर, जहां विनीत जावास्क्रिप्ट शुरुआत से एक आवश्यकता नहीं थी, और मैं किसी अन्य के कोड को रिफ्लेक्टर करते समय हमेशा इनलाइन जावास्क्रिप्ट निकालता हूं। लेकिन क्या यह प्रयास के लायक है। ? पूरा यकीन नहीं।

प्रदर्शन-वार, जावास्क्रिप्ट को एक अलग फ़ाइल में डालते समय आपके पास हमेशा बेहतर प्रदर्शन नहीं होता है। आमतौर पर, हम इनलाइन जावास्क्रिप्ट अपशिष्ट बैंडविड्थ पर विचार करने के लिए लुभाते हैं, क्योंकि इसे कैश नहीं किया जा सकता है (जब आप स्थिर कैचिंग HTML के साथ सौदा करते हैं)। इसके विपरीत, एक बाहरी .js फ़ाइल केवल एक बार भरी हुई है।

वास्तव में, यह सिर्फ एक और समयपूर्व अनुकूलन है : आप सही सोच रहे होंगे कि जावास्क्रिप्ट को बाहरी करना आपकी वेबसाइट को तेज करेगा, लेकिन आप पूरी तरह से गलत भी हो सकते हैं:

  • यदि आपके अधिकांश उपयोगकर्ता खाली कैश लेकर आते हैं तो क्या होगा?
  • क्या आपने माना है कि एक्सटर्नल .js फ़ाइल के साथ, हर पेज के अनुरोध पर इस फ़ाइल के लिए एक अनुरोध किया जाएगा, अगर वेबसाइट ठीक से कॉन्फ़िगर नहीं की गई है (और आमतौर पर, यह नहीं है),
  • क्या .js फाइल वास्तव में कैश की गई है (IIS के साथ, यह इतना आसान नहीं हो सकता है)?

तो समय से पहले अनुकूलन करने से पहले, अपने आगंतुकों के बारे में आंकड़े इकट्ठा करें, और इनलाइन जावास्क्रिप्ट के साथ और बिना प्रदर्शन का मूल्यांकन करें।

फिर अंतिम तर्क आता है: आपने अपने स्रोत में जावास्क्रिप्ट और HTML को मिलाया, ताकि आप चूसें। लेकिन किसने कहा कि तुम दोनों को मिलाओ? ब्राउज़र द्वारा उपयोग किया जाने वाला स्रोत कोड हमेशा आपके द्वारा लिखा गया स्रोत कोड नहीं होता है। उदाहरण के लिए, स्रोत कोड, संकुचित किया जा सकता है न्यूनतम किया गया, या कई सीएसएस या जे एस फ़ाइलें एक फ़ाइल में शामिल हो सकता है, लेकिन इसका मतलब यह नहीं है कि आप वास्तव में नामित अपने चर a, b, c... a1, आदि या कि आप ने लिखा एक रिक्त स्थान या newlines के बिना विशाल सीएसएस फ़ाइल। उसी तरह, आप आसानी से बाह्य जावास्क्रिप्ट स्रोत कोड को संकलित समय पर या बाद में टेम्पलेट के माध्यम से HTML में इंजेक्ट कर सकते हैं।


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

  • यह खराब हो सकता है।
  • इसके विपरीत यह संकेत हो सकता है कि वेबसाइट को पेशेवरों द्वारा लिखा गया था जिन्होंने प्रदर्शन के बारे में परवाह की, विशिष्ट परीक्षण किए, और यह निर्धारित किया कि यह उनके ग्राहकों के लिए जावास्क्रिप्ट के इनलाइन भागों के लिए तेज़ होगा।
  • या इसका मतलब कुछ भी नहीं हो सकता है।

इसलिए जो व्यक्ति "बहुत ही शांत साइट है, उस व्यक्ति के बारे में शर्मिंदा है, जो स्रोत कोड में इनलाइन स्क्रिप्टिंग के बारे में शर्म करता है" केवल ब्राउज़र को भेजे गए स्रोत को देखकर, बिना कुछ जाने बिना कि वेबसाइट कैसे की गई।


1
अनुसंधान करने और विचारशील होने के लिए +1। वास्तविकता यह है कि निर्मित उपकरण हैं जो कोड को अलग-अलग फ़ाइलों में विकसित कर सकते हैं तथ्य के बाद इनलाइन में कंपोजिट किया जा सकता है। HTML + CSS + JS वेब की असेंबली लैंग्वेज है। जिस तरह से चीजें वितरित की जाती हैं (मिनीकृत, कंपोजिट की जाती हैं) उनका कोई लेना-देना नहीं है कि उन्हें कैसे बनाया जाता है।
इवान मोरन

21

HTML और JS को आम तौर पर अलग रखने की कोशिश करना आम तौर पर अच्छा है। HTML देखने के लिए है, JS एप्लिकेशन लॉजिक के लिए है। लेकिन मेरे अनुभव में html और जावास्क्रिप्ट (शुद्धता की खातिर) का अत्यधिक डिकंप्लिंग करना इसे अधिक बनाए रखने योग्य नहीं बनाता है; यह वास्तव में कम रखरखाव योग्य हो सकता है।

उदाहरण के लिए, मैं कभी-कभी ईवेंट हैंडलर स्थापित करने में इस पैटर्न (ASP.net से उधार) का उपयोग करता हूं:

<input type="button" id="yourId" onclick="clickYourId()" />

या

<input type="button" id="yourId" onclick="clickYourId(this)" />

वहाँ कोई रहस्य नहीं है जो एक घटना को ट्रिगर कर रहा है। कारण यह है कि छह महीने बाद आप तत्व का निरीक्षण कर सकते हैं (उदाहरण के लिए, क्रोम में) और तुरंत देखें कि जावास्क्रिप्ट घटना क्या शुरू होती है।

दूसरी ओर, कल्पना कीजिए कि आप किसी और के कोड को पढ़ रहे हैं, जो एक सौ हज़ार लाइनें हैं, और आप एक जादुई तत्व के पार आते हैं जो एक जावास्क्रिप्ट ईवेंट को बंद कर देता है:

<input id="yourId"  />

आप आसानी से मुझे कैसे बता सकते हैं कि जावास्क्रिप्ट विधि क्या है? क्रोम ने इसे आसान बना दिया है, लेकिन शायद ईवेंट आईडी के लिए बाध्य है, या शायद यह कंटेनर के पहले बच्चे से जुड़ा है। हो सकता है कि घटना मूल वस्तु से जुड़ी हो। कौन जाने? सौभाग्य इसे पाकर। :)

इसके अलावा, मैं तर्क दूंगा कि पूरी तरह से डिजाइनर से जावास्क्रिप्ट छिपाना वास्तव में उनमें से एक अद्यतन पर इसे तोड़ने की संभावना बढ़ा सकता है। यदि कोई जादुई रूप से सक्रिय तत्व के लिए कोड संपादित करता है, तो कोड में क्या संकेत है जो उन्हें बताएगा कि यह पृष्ठ पर एक सक्रिय तत्व है?

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

1. emptyFunction()
2. doCallWithThis(this)
3. atTheExtremOnlyPassOneNumber(2)

3
अच्छी बात! बहुत बढ़िया जवाब।
जूलियन

1
वास्तव में, महान जवाब। जब तक जेएस संलग्न श्रोताओं को खोजने के लिए इतना कठिन बनाता है, इनलाइन स्क्रिप्टिंग को बनाए रखना आसान होगा।
जॉनके

मेरी राय में यह सबसे अच्छा जवाब है। चरम पर कुछ भी अक्सर "ऐसा करने पर" होता है।
deebs

10

एक तर्क जो मैं यहां याद कर रहा हूं, वह क्रॉस साइट स्क्रिप्टिंग हमलों के खिलाफ सुरक्षा बढ़ाने की संभावना है ।

सामग्री सुरक्षा नीति के माध्यम से आधुनिक ब्राउज़र में इनलाइन जावास्क्रिप्ट के निष्पादन को अक्षम करना संभव है । इसने आपकी साइट के XSS के शिकार होने के जोखिम को कम कर दिया। इनलाइन स्क्रिप्ट को हटाने के लिए अपने प्रबंधन को बनाने के लिए यह एक अधिक ठोस तर्क हो सकता है।


2
मुझे लगता है कि यह अब सबसे अच्छा जवाब है
supersharp

2
यह मेरी विनम्र राय में बहुत अधिक उत्थान और ध्यान देने योग्य है।
पैट्रिक रॉबर्ट्स

वैध बिंदु !!!
अंशुल

यह मामला नहीं है जब इनलाइन स्क्रिप्ट स्थिर है, है ना?
Константин Ван

9

यहाँ कुछ कारण हैं।

  1. इनलाइन स्क्रिप्ट को छोटा नहीं किया जा सकता (प्रतीक में कमी के माध्यम से एक छोटे संस्करण में परिवर्तित)। ब्रॉडबैंड पर कोई चिंता नहीं है, लेकिन कम बैंडविड्थ क्षेत्र में एक मोबाइल डिवाइस पर विचार करें, या जो उपयोगकर्ता वैश्विक डेटा रोमिंग पर हैं - हर बाइट की गणना कर सकते हैं।

  2. इनलाइन स्क्रिप्ट को ब्राउज़र द्वारा कैश नहीं किया जा सकता है जब तक कि पेज खुद ही कैचेबल न हो (जो बहुत सुस्त पृष्ठ के लिए बना होगा)। बाह्य जावास्क्रिप्ट फ़ाइलों को केवल एक बार पुनर्प्राप्त करने की आवश्यकता होती है, भले ही पृष्ठ सामग्री हर बार बदलती हो। कम बैंडविड्थ कनेक्शन पर प्रदर्शन को गंभीरता से प्रभावित कर सकता है।

  3. इनलाइन स्क्रिप्ट डीबग करना कठिन है क्योंकि किसी भी त्रुटि से जुड़ी लाइन नंबर अर्थहीन है।

  4. इनलाइन स्क्रिप्ट को एक्सेसिबिलिटी (508 / WAI) विचार के साथ हस्तक्षेप करने के लिए प्रतिष्ठित किया जाता है, हालांकि इसका मतलब यह नहीं है कि सभी इनलाइन स्क्रिप्ट मुद्दों पर विचार करती हैं। यदि आप एक स्क्रीन रीडर के साथ अंत करते हैं तो स्क्रिप्ट की सामग्री की घोषणा करने से आपको समस्या होती है! (हालांकि ऐसा होता हुआ कभी नहीं देखा)।

  5. इनलाइन लिपि को इसके पृष्ठ के स्वतंत्र रूप से परीक्षण नहीं किया जा सकता है; बाहरी जावास्क्रिप्ट फ़ाइलों को स्वचालित परीक्षण सहित स्वतंत्र परीक्षण के माध्यम से चलाया जा सकता है।

  6. इनलाइन स्क्रिप्ट चिंताओं के खराब अलगाव को जन्म दे सकती है (जैसा कि यहां कई अन्य उत्तरों द्वारा वर्णित है)।


2
कुछ पृष्ठ स्थिर हो सकते हैं और फिर भी मूल्य के - पहले आज मैं उस पर एक कैलकुलेटर के साथ एक पृष्ठ का उपयोग कर रहा था। उपलब्ध, अभी तक उपयोगी नहीं है। मैं मानता हूं कि गैर-तुच्छ जावास्क्रिप्ट किसी भी गतिशील पृष्ठ पर नहीं है।
लोरेन Pechtel

3

ऐसे कई कारण हैं जो स्क्रिप्ट इनलाइन को शामिल नहीं करेंगे:

  • सबसे पहले, स्पष्ट जवाब- यह कोड के लिए बनाता है जो क्लीनर, अधिक संक्षिप्त, समझने और पढ़ने में आसान है।

  • अधिक व्यावहारिक दृष्टिकोण से, आप अक्सर स्क्रिप्ट / सीएसएस / आदि का पुन: उपयोग करना चाहते हैं। आपकी वेबसाइट पर सभी- इन भागों को सम्मिलित करने का मतलब होगा हर बार जब आप एक छोटा सा बदलाव करते हैं तो हर एक पृष्ठ को संपादित करना होगा।

  • यदि आप अपनी परियोजना के लिए एससीएम का उपयोग करते हैं, तो आपके अलग-अलग घटकों के अच्छी तरह से अलग होने से ट्रैकिंग में बदलाव होगा और इसमें शामिल सभी लोगों के लिए आसानी होगी।

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

मुझे इस क्षेत्र में किसी भी औपचारिक परीक्षण के बारे में पता नहीं है, हालांकि यह बहुत संभव है कि किसी ने उन्हें किया हो।

अंत में, मैं कहूंगा कि यह किसी भी चीज़ से अधिक अच्छी प्रथाओं की बात है, और यह कि पठनीयता और संगठन के संदर्भ में फायदे (विशेष रूप से राइट पॉइंट 2) अलग-अलग फ़ाइलों में कोड को बहुत बेहतर विकल्प बनाते हैं।


बाह्य फ़ाइलों को असिंक्रोनस रूप से डाउनलोड करना संभव है, या तो यह बाद के पृष्ठ के लिए कैश किया गया है, जबकि आगंतुक पढ़ रहा है या स्क्रिप्ट डाउनलोड करते समय पेज, छवियों आदि को अनुमति देने के लिए है - इसलिए इन तकनीकों के होने पर प्रदर्शन लाभ हो सकता है इस्तेमाल किया (डाउनलोड समय निष्पादन की गति नहीं)।
फिनकंक

2

उत्तर वास्तव में इस बात पर निर्भर करता है कि इन-लाइन कोड (जावास्क्रिप्ट को कैसे उपयोग किया जाता है)।

हमने इनलाइन कोड के संयोजन का उपयोग किया, SSI's (सर्वर साइड में शामिल हैं), जेएस फाइलें और सीएसएस फाइलें जो हम चाहते थे उन प्रभावों को बनाने के लिए और ऑनक्लिक घटनाओं के लिए सर्वर रिटर्न ट्रिप को कम करने के लिए भी इस्तेमाल किया।

तो किसी के लिए एक कंबल बयान करने के लिए कि "इन-लाइन कोड" का उपयोग पूरी तरह से समझने के बिना खराब है कि इसका उपयोग कैसे किया जा सकता है, यह भ्रामक हो सकता है।

यह कहने के बाद कि, यदि प्रत्येक पृष्ठ में js फ़ाइल का उपयोग करने के बजाय एक ही कॉपी और पेस्ट किया हुआ जावास्क्रिप्ट कोड है, तो मैं कहता हूं कि यह बुरा है।

यदि प्रत्येक पृष्ठ की स्वयं की प्रतिलिपि है और सीसीएस अनुभाग को चिपकाने के बजाय एक सीएसएस फ़ाइल का उपयोग करता है तो मैं कहता हूं कि यह बुरा है।

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


1

मैं यहाँ इनलाइन जावास्क्रिप्ट मानने जा रहा हूँ।

कोड देखे बिना, यह सुनिश्चित होना मुश्किल है। मुझे संदेह है कि वह दो चीजों में से एक का उल्लेख कर रहा था:

  1. आपने <script>पूरे पृष्ठ को बिखेर दिया है
  2. आप सभी JS पृष्ठ के शीर्ष लेख में हैं, बाहरी फ़ाइलों में नहीं

पहला एक खराब डिजाइन निर्णय है। एक स्रोत फ़ाइल में स्क्रिप्ट फैलाने से पृष्ठ को बनाए रखना बहुत कठिन हो जाता है, क्योंकि आपको किसी दिए गए स्क्रिप्ट को खोजना होगा। यह बेहतर है कि सभी कोड एक ही स्थान पर रखें (मैं स्रोत फ़ाइल के शीर्ष पर पसंद करता हूं)।

दूसरे के लिए के रूप में - यह जरूरी नहीं कि एक बुरी बात है। पृष्ठ विशिष्ट कोड उस पृष्ठ में होना चाहिए । यदि आपके पास पृष्ठों के बीच डुप्लिकेट कोड है, तो आपको इसका उपयोग करना चाहिए <script src>। फिर जब आप एक नया पृष्ठ बनाने के लिए जाते हैं, तो आप बस उस फ़ाइल को शामिल कर सकते हैं और आपके द्वारा तय किए गए किसी भी कीड़े को फिर से चालू नहीं करना पड़ेगा।


1
ध्यान दें कि स्क्रिप्ट अन्य चीज़ों को डाउनलोड करने से रोकती हैं, आमतौर पर उन्हें पृष्ठ के निचले भाग में रखना बेहतर होता है (हालाँकि कभी-कभी आप उन्हें ब्लॉक करना चाहेंगे, जिस स्थिति में वे सिर में हैं)। सीएसएस, जो किसी भी स्क्रिप्ट संदर्भ के ऊपर, समानांतर में डाउनलोड कर सकता है, बेहतर है।
फिनेनक

1
यहां असहमत हैं। पृष्ठ विशिष्ट जावास्क्रिप्ट (केवल एक ही नहीं) के लिए एक बेहतर डिजाइन पृष्ठ विशिष्ट जावास्क्रिप्ट को एक अलग .js फ़ाइल में रखना है जो केवल उस पृष्ठ पर शामिल है। इस तरह, फ़ाइल को कैशिंग से लाभ होगा,
कीमा बनाया

1

InLine Javascript का उपयोग न करने का एक कारण (बटन पर भी onclick = "DoThis (यह)" नहीं है), यदि आप अपने वेब एप्लिकेशन को Chrome ऐप बनाने का इरादा रखते हैं। इसलिए, यदि आप अपने वेब ऐप को एक नेटिव क्रोम ऐप में पोर्ट करने की योजना बना रहे हैं, तो किसी भी इनलाइन जावास्क्रिप्ट को शामिल न करें। यदि आपको "Chrome-etize" करने का इरादा है, तो आपको अपने वेब ऐप से इसे (अनिवार्य रूप से) बदलने की आवश्यकता की शुरुआत में ही समझाया जाएगा।


0

इनलाइन स्क्रिप्टिंग के साथ वास्तविक समस्याएं क्या हैं?

इनलाइन स्क्रिप्टिंग खराब है और इसे टाला जाना चाहिए क्योंकि यह कोड को पढ़ने में अधिक कठिन बनाता है।

कोड जिसे पढ़ना मुश्किल है, उसे बनाए रखना मुश्किल है। यदि आप इसे आसानी से नहीं पढ़ सकते हैं और समझ सकते हैं कि क्या हो रहा है, तो आप आसानी से बग को नहीं देख पाएंगे। यदि इसे बनाए रखना मुश्किल है, तो बाद में समस्याएं होने पर यह आपका अधिक समय बर्बाद करेगा।

कठिनाई आमतौर पर नेस्टेड एनकोडिंग से आती है। कोड की अगली पंक्ति में कोई समस्या है, क्या आप इसे देख सकते हैं?

<a onclick='alert("What\'s going wrong here?")'>Alert!</a>

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

क्या कोई महत्वपूर्ण प्रदर्शन मुद्दा है, या यह केवल अच्छी शैली की बात है?

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

क्या मैं अपने वरिष्ठों के सामने इनलाइन स्क्रिप्टिंग पर तत्काल कार्रवाई को सही ठहरा सकता हूं, जब काम करने के लिए अन्य चीजें हैं जो साइट पर अधिक स्पष्ट प्रभाव डाल सकती हैं?

नहीं, अगर यह बेवकूफ है और यह काम करता है, तो यह बेवकूफी नहीं है।

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

क्या कारक आपको "हम्म, यहाँ पेशेवर काम" कहने के लिए प्रेरित करेंगे, और क्या आप स्पष्ट रूप से शौकिया नौकरी से हटना चाहेंगे?

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

कहा कि सब के साथ, यह आम तौर पर उद्यम गुणवत्ता प्रोग्रामिंग को लेने के लिए आसान है

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.