अच्छा जावास्क्रिप्ट लिखने के लिए पाँच या उससे कम युक्तियाँ? [बन्द है]


14

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

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

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

अपडेट: स्पष्ट करने के लिए, मैं जावास्क्रिप्ट सीखने के दौरान पांच बातों को ध्यान में रखने के लिए नहीं कह रहा हूं; मैं हमेशा अपने आप को आगे बढ़ने के लिए पांच सवाल पूछ रहा हूं, जो हर किसी को पूछना चाहिए। उच्च-स्तरीय प्रश्न जैसे: "क्या मैं इसे कहीं और दोहराने की संभावना रखता हूं?" या "यह चर / फ़ंक्शन नाम विशिष्ट विशिष्ट (या बहुत विशिष्ट)" <== है, इन उदाहरणों को छोड़कर, जावास्क्रिप्ट में अजीब सवाल नहीं हैं। मैं उन निर्देशों की तलाश कर रहा हूं जो जावास्क्रिप्ट में अजीब हैं।


3
सवाल के रूप में पूछे गए प्रश्न कई उत्तरों को प्रोत्साहित कर रहे हैं, जिनमें से प्रत्येक समान रूप से मान्य होगा। इस प्रकार के प्रश्न अच्छे प्रश्न नहीं बनाते हैं। आप यह सब rephrase कर सकते हैं? अन्यथा यह बंद होने का एक अच्छा मौका है।
ChrisF

2
"टॉप 5 लिस्ट" वह नहीं है जो हम यहां प्रोग्रामर्स पर करते हैं। यदि आप किसी विशिष्ट समस्या के उत्तर में रुचि रखते हैं, तो उस बारे में पूछने में संकोच न करें। अन्यथा, मैं सुझाव दूंगा कि इस तरह की सूची तैयार करने के लिए Reddit's r / प्रोग्रामिंग

जवाबों:


6

मैं इसका दो भागों में उत्तर देने जा रहा हूँ। एक " अच्छा जावास्क्रिप्ट लिखने के लिए सीखने के लिए पांच या उससे कम युक्तियाँ हैं "। दूसरा "अच्छा जावास्क्रिप्ट लिखने के लिए पाँच या उससे कम युक्तियाँ" है।

सीख रहा हूँ:

  1. सवाल पूछो
  2. बात सुनो
  3. पढ़ें
  4. स्टफ बनाएं

करते हुए:

  1. ग्लोबल्स (मॉड्यूलर) से बचें
  2. छोरों के बाहर कठोर सामान करें (डोम चयन, फ़ंक्शन घोषणाएं, आदि)
  3. जानें कि स्कोप कैसे काम करता है
  4. बंद का उपयोग कब और कैसे करें, यह जानें
  5. जानें कि ऑब्जेक्ट ओरिएंटेड जेएस कैसे काम करता है

EDIT (ओपी के अनुपालन के लिए प्रश्न जोड़ना):

मैं किस गुंजाइश का संदर्भ दे रहा हूं?

यह लीक ग्लोबल्स, ईवेंट हैंडलर्स और क्लोजर का उपयोग करने के लिए कब मदद करनी चाहिए।

क्या मैं खुद को दोहरा रहा हूं?

OO तकनीकों का उचित अमूर्त और उपयोग महत्वपूर्ण है। उनका बुद्धिमानी से उपयोग करें।

क्या मेरा कोड खुद को दोहरा रहा है?

अपने आप को डोम एक्सेस को लूप में रखना, या लूप में फ़ंक्शन (अनाम या अन्यथा) बनाना आसान है। ध्यान दें कि यह कोड का सही हो सकता है जो उपयोग करता है setTimeoutया setIntervalसाथ ही पारंपरिक लूप भी।

क्या इसका मतलब यह है कि मुझे क्या लगता है इसका मतलब है?

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


28

पहले यह जानिए कि इसके पीछे की तकनीक कैसे काम करती है।

आपको यह जानने की आवश्यकता है क्योंकि यह कैसे काम करता है इसके पीछे का ज्ञान, क्योंकि आप नेटवर्किंग के मुद्दों में भाग लेने जा रहे हैं, या, जैसा कि मैंने अनगिनत बार देखा है, लोग पूरी तरह से समझने में असमर्थ हैं कि सर्वर-साइड और क्लाइंट-साइड वास्तव में क्या है। मेरे द्वारा देखे जाने वाले सबसे सामान्य newb प्रश्नों में से एक है "मैं JS को अपने ASP कोड में परिवर्तन कैसे कर सकता हूँ?"

  • क्या आप समझ रहे हैं कि ईथरनेट / वाईफाई और टीसीपी / आईपी एक सामान्य विचार है कि क्या हो रहा है?
  • आप वास्तव में कितना एचटीटीपी जानते हैं?
  • क्या आप वास्तव में HTML प्राप्त करते हैं? ज़रूर, आपको पता होगा कि टैग कैसे काम करते हैं और घोंसला बनाते हैं, लेकिन क्या आप वास्तव में doctype और quirks मोड को समझते हैं? क्या आप समझते हैं कि आपको किसी सूची तत्व के आसपास पैराग्राफ टैग नहीं लगाने चाहिए?
  • जावास्क्रिप्ट को आविष्कार करें (और समझाएं कि इसे सर्वर-साइड चलाया जा सकता है)। ईकमास्क्रिप्ट, लाइफस्क्रिप्ट, मोकास्क्रिप्ट, जसस्क्रिप्ट, नोड ...
  • विंडो एपीआई सीखें, डोम एपीआई सीखें, और एक्सएचआर एपीआई सीखें। यदि आप इन तीन चीजों को नहीं जानते हैं तो आपके पास ब्राउज़र के लिए कोई व्यवसाय लेखन कोड नहीं है।

समझें कि आपका कोड आपसे या आपकी विशिष्ट स्थिति से बड़ा है

  • ज़रूर, आपने कुछ लिखा है, लेकिन हर कोई इसे देख सकता है। यह सब "खुला" स्रोत है। निश्चित रूप से, आप इसे छोटा कर सकते हैं, इसे छोटा कर सकते हैं, जो भी हो ... दिन के अंत में, अगर मैं आपको कोड देखना चाहता हूं, तो मेरे लिए यह आपके लिए कोई भी तरीका है जिसे आप अपनी जगह पर रखना चाहते हैं।
  • आपको कई ब्राउज़रों के अंतरों को समझने की आवश्यकता है। सबसे लोकप्रिय लोगों को लक्षित करें, या जो आपके बाजार जनसांख्यिकीय हैं। उदाहरण के लिए, ie6 यदि आप विशेष रूप से तालिकाओं के लिए DOM API विधियों के बजाय appendChild को DOM टेबल-सेल तत्वों को प्रस्तुत नहीं करेंगे। अधिक उदाहरण मौजूद हैं, आपको उन्हें सीखने की जरूरत है।
  • आपको यह समझने की आवश्यकता है कि ब्राउज़र में इन सभी मुद्दों के आसपास कोड कैसे लिखें, न कि आपके विशिष्ट ब्राउज़र। आप जल्दी से उन चीजों को सीखेंगे जो एक ब्राउज़र में अच्छी तरह से काम करती हैं दूसरे में धीमी हैं। आपको यह पता लगाना होगा कि ब्राउज़र कैसे काम करते हैं और वे अलग क्यों हैं।
  • ओडिन की दाढ़ी के प्यार के लिए, कोड न लिखें जो मुझे आपके कोड पर क्रॉस-साइट-स्क्रिप्टिंग हमले करने की अनुमति देता है। यदि आप किसी सेल में अजाक्स कॉल करते हैं और कुछ ऐसा करते हैं cell.innerHTML = "<script>alert("xss")</script>", और एक अलर्ट बॉक्स दिखाता है, तो आपने इसे गलत किया है।
  • डायनामिकड्राइव, w3Schools और बुरी सलाह देने वाली वेबसाइटों से खूनी नरक से दूर रहें। आपको अच्छी सलाह देने वाली कॉम्युनिटीज ढूंढनी होगी। यहां स्टैक ओवरफ्लो पर हमारे पास जावास्क्रिप्ट और नोड.जेएस चैट रूम हैं, और हम पूरी कोशिश करते हैं कि "बेहतर" की सीमाओं को आगे बढ़ाते रहें, जहां w3s जैसी साइटें पुराना डेटा रखती हैं और इसके साथ कभी भी परेशान नहीं होती हैं। आपको W3C , मोज़िला डेवलपर नेटवर्क (MDN) जैसे ऑफिशियल स्पेस साइट्स से चिपके रहना चाहिए । अपने कोड की सहकर्मी-समीक्षा के लिए पूछें। जब आपको लगता है कि आप अपने कोड के साथ कुछ दर्दनाक कर रहे हैं, जब आप अपने कोड के साथ बहुत सारे कट + पेस्ट + ट्विस्ट कर रहे हैं, तो आपको तुरंत एक चैट रूम में आना चाहिए और बेहतर कोड लिखने के लिए मार्गदर्शन मांगना चाहिए।
  • जब आप मार्गदर्शन के लिए आते हैं, या आपके द्वारा बनाई गई वास्तव में बहुत अच्छी चीज साझा करना चाहते हैं ... कृपया, बहुत कृपया। कृपया, सुनिश्चित करें कि आपने इसे प्रलेखित किया है, सुनिश्चित करें कि आपके चर नाम समझ में आए, सुनिश्चित करें कि यह सभी एक पंक्ति में नहीं है। आपको क्लीन कोड लिखना होगा। यदि आपके पास कूड़े का ढेर है, तो न केवल आप असफल रहे हैं, कोई नहीं जानता कि आपकी मदद कैसे करना है। आप हमारी मदद करें।
  • आप जावास्क्रिप्ट लिखना चाहते हैं - यह अच्छा है, सम्मान कि हर कोई जावास्क्रिप्ट का समर्थन नहीं करता है। इसके दो कारण हैं- 1) हर किसी के लिए तेज़ इंटरनेट (बजाय "सभी चीजों को अजेक्स करने के लिए" जो धीमे अनुभव की ओर जाता है)। 2) कंसोल-आधारित ब्राउज़र, बिना स्क्रिप्ट, मोबाइल फोन चलाने वाले लोगों के लिए वेब अधिक सुलभ है। मैं जो कहना चाह रहा हूं वह यह है कि आपकी साइट को इनायत से नीचा दिखाना चाहिए अगर किसी के पास जावास्क्रिप्ट नहीं है और बहुत कम से कम, <noscript>टैग का उपयोग करके उन्हें इस तरह से सचेत करें।
  • जावास्क्रिप्ट की प्रोटोटाइप प्रकृति के कारण, आप वास्तव में भाषा कैसे काम करती है, इसमें बदलाव कर सकते हैं - जो वास्तव में मीठा है। आप देखें, जावास्क्रिप्ट विकसित हो रहा है, हम "ECMA स्क्रिप्ट 3" से बाहर निकल रहे हैं, जो JS का पुराना संस्करण है, और "ECMA स्क्रिप्ट 5" (उर्फ, es5) में। प्रोटोटाइप के कारण, हम es5 की तरह काम करने के लिए क्षेत्र में es3 भाषा को ठीक कर सकते हैं। इसका मतलब है कि, यानी 6, एक 10 साल पुराने ब्राउज़र में भाषा की सुविधा मिलती है जो पिछले साल सामने आई थी। जहाँ भी आप कर सकते हैं es5-shims का उपयोग करें, वे वास्तव में शांत हैं और आपको इसे देखने की आवश्यकता है।
  • अंग्रेजी बोलने वाले श्वेत बच्चों की पश्चिमी दुनिया इंटरनेट का उपयोग करने वाले नहीं है। तदनुसार कोड। इसका मतलब है कि आपको अंतर्राष्ट्रीयकरण और लेखन कोड को समझने की आवश्यकता है जो उच्च मांग से संबंधित है। 10 साल पहले ऑन लाइन 500 मिलियन से कम लोग थे, आज यह लगभग 2 बिलियन है, और अन्य 10 वर्षों में? संभवतः ग्रह पर प्रत्येक व्यक्ति के पास इंटरनेट का उपयोग होगा, इसका मतलब है कि आपको उन नामों का समर्थन करने की आवश्यकता है जो रीजेक्स के लायक नहीं हैं /[a-z ']/i, लेकिन इसमें हिंदी, अरबी, उच्चारण शामिल हैं (यह शॉर्ट-विजन डेवलपर्स से एक मौजूदा समस्या है), चीनी , और दूसरे। चरित्र सेट, यूनिकोड और यूटीएफ -8 को समझें।

आप एक प्रोग्रामर हैं, पास्ता फैक्ट्री नहीं। स्पेगेटी लिखना बंद करो।

  • अपने चरों का नाम उन चीजों के नाम पर रखें जो समझ में आते हैं।
  • अपने कोड का दस्तावेज़ दें। मुझे परवाह नहीं है अगर आप rhino द्वारा संचालित JSDoc का उपयोग कर रहे हैं या आपके पास स्क्रिबल्स का एक गुच्छा है। प्रलेखन लिखें जो उस व्यक्ति की मदद करता है जो आपके कोड का उपयोग करने जा रहा है। अपने कोड को बेहतर बनाने या बनाए रखने के लिए किसी ऐसे व्यक्ति के लिए दस्तावेज़ लिखें। उपयोगी टिप्पणियाँ शामिल करें। "This fizzes the bizz"आधी-अधूरी आधी-अंग्रेज़ी जैसी टिप्पणियाँ मददगार नहीं होतीं। बताएं कि एक फंक्शन क्या करता है। कोड के जटिल वर्गों का वर्णन करें।
  • कोड के पुनरावृत्ति को सीमित करने का तरीका जानें। मॉड्यूलर डिजाइन या कार्यात्मक पैटर्न के लिए देखें। देखें कि आप क्या सार कर सकते हैं। आपको एक ही काम करने के लिए कोड के बड़े सेगमेंट को काटना + चिपकाना + टालना कभी खत्म नहीं करना चाहिए।
  • आपको DOM API को समझना होगा। DOM और विंडो ऑब्जेक्ट बहुत सी शानदार चीज़ों के लिए प्रावधान करते हैं। यह बहुत काम की तरह लगता है, लेकिन ऐसा इसलिए है क्योंकि यह एक बड़ा डरावना है। आप में से बहुत सारे जावास्क्रिप्ट निन्जा जैसे कोड लिखना पसंद करते हैं <a href="javascript:alert("foo")">एफएफएस मत करो। पूर्ण दस्तावेज़ लोड होने की प्रतीक्षा करें, अपने जावास्क्रिप्ट कोड को HTML दस्तावेज़ से अलग करें। यह मूल OOP प्रैक्टिस 101 है, बस अपने JS या CSS को अपने html डॉक्यूमेंट में कभी इन-लाइन न करें। यह पता लगाएं कि इसे ठीक से कैसे करें या किसी ऐसे व्यक्ति को ढूंढें जो आपको यह दिखाना जानता है कि यह कैसे करना है। फिर से, सवाल पूछें।
  • Javascript:foo("buz")एक psudeo प्रोटोकॉल यह पूरी तरह से समर्थित नहीं है है, और आप में लाइन नहीं है यदि जावास्क्रिप्ट आप पहली जगह में इसे प्रयोग नहीं किया जाएगा। मैं आपको अपने दिल के नीचे से वादा करता हूं कि इस धरती पर या ब्रह्मांड में कहीं भी ऐसा कोई कारण नहीं है कि आपने अपने जावास्क्रिप्ट को एक HTML तत्व के अंदर डालने की आवश्यकता की। कभी। तो यह मत करो। मैं भी लोगों को मदद ऐसा है कि किसी भी अधिक, यह नहीं होगा कि बुरा।

इस तरह से कोड लिखने के लिए यह समझें कि यह हर समय नहीं टूटता।

  • वैश्विक चर सबसे बड़ी समस्याओं में से एक हैं। जावास्क्रिप्ट में कार्यात्मक प्रोग्रामिंग कैसे काम करती है, इसका पता लगाएं। फहराओ क्या है बाहर चित्रा। वैश्विक चर से बचने का तरीका जानें।
  • स्थिर कोड विश्लेषण उपकरण का उपयोग करें। ये आपको आपके कोड को लिखते समय आपके द्वारा किए गए सभी छोटे "उफ़" के लिए तुरंत अलर्ट करेंगे। कहीं अर्धविराम भूल गए? ओह, यह वहाँ है। कहीं ग्लोबल है? ओह, यह वहाँ है। जब आप इसे चलाने का प्रयास करते हैं तो कोड रहस्य त्रुटियों का एक गुच्छा फेंक सकता है? ओह! लो वो आ गए! घंटे के लिए कोड के ढेर में घूरने और घूरने की कोई बात नहीं है, जो केवल एक सिंटैक्स त्रुटि है। (ठीक है, शायद ही कोई, आपने ऐसा कुछ किया होगा जो इसे पकड़ नहीं सकता है, लेकिन यह आमतौर पर बहुत बढ़िया है)।
  • अध्याय परीक्षा। नहीं होने का कोई कारण नहीं है। वहाँ बाहर परीक्षण उपकरणों के टन इकाई है। मूल रूप से, यूनिट परीक्षण "यहां मेरा कार्य है" और "मैं चाहता हूं कि यह आउटपुट वाई के लिए" "यहां कुछ परीक्षण इनपुट हैं" और परीक्षण "क्या वे सभी काम करते हैं?" कई जेएन टेस्टिंग फ्रेमवर्क हैं, जैसे लोकप्रिय क्विंट। अपने पसंदीदा खोज इंजन के माध्यम से भ्रमण करें और देखें कि आपके फैंस को क्या गुदगुदी होती है। लेकिन उनका उपयोग करें।
  • स्रोत नियंत्रण प्रबंधन, जिसे संस्करण नियंत्रण भी कहा जाता है। गिट के लोकप्रिय, और अच्छे कारण के साथ। तो एसवीएन और कुछ अन्य हैं। आपको इसे बहुत ही त्वरित रूप से बंद करने की आवश्यकता है जो उत्पादन कोड को संपादित कर रहा है। आपको फ़ाइलों का नाम बदलने से रोकने की आवश्यकता है main_backup_20110911.js.bak.1आप सामान खो देते हैं, आपकी निर्देशिका गड़बड़ हो जाती है, आप आसानी से समय में पिछले बिंदु पर "रिवाइंड" नहीं कर सकते। आप देख नहीं सकते कि क्या चल रहा है, आप कोड पैच नहीं बना सकते। तो, बस जीआईटी सीखना शुरू करें, इसमें आपको एक घंटा लगना चाहिए और आप कभी भी पीछे नहीं हटेंगे।
  • सहकर्मी समीक्षा। तुम नहीं हो कि अच्छा है, न तो हूँ मैं मैं के रूप में मैं यह कर सकते हैं जितना प्रतिक्रिया के लिए पूछ रहा से बेहतर हो। ऐसा ही आपको भी करना चाहिए।

जावास्क्रिप्ट लिखें कि लोग प्यार करते हैं

  • पता लगाएँ कि आपका कोड धीमा क्यों है। Jspref का प्रयोग करें और परीक्षण बनाएँ।
  • एक डोम तत्व के लिए घटनाओं को रोकना, यह धीमा है, और गंभीर घटना बुदबुदाई मुद्दों को बनाता है जो आपके बहुत समय को बर्बाद कर देगा। जावास्क्रिप्ट में अनुसंधान "घटना प्रतिनिधिमंडल"।
  • DOM को संपादित करने के लिए आंतरिक HTML का उपयोग करते हुए रोकें। यह सीखने के लिए वापस आता है कि HTML क्या है, और DOM क्या है, यह सीखना। HTML सर्वर से भेजा गया डेटा है जो आपके ब्राउज़र रेंडरिंग इंजन का उपयोग प्रोग्रामिंग ऑब्जेक्ट्स का एक गुच्छा बनाने के लिए करता है जो एक डॉक्यूमेंट ऑब्जेक्ट होने का अंत करता है। जब आप आंतरिक HTML का उपयोग करते हैं तो आप अपने ब्राउज़र को पूरी चीज़ को फिर से प्रस्तुत करने के लिए कह रहे होते हैं। शुक्र है, जैसे 10 साल पहले, हमने DOM API बनाया, और यह आपको पूरी बात को अपडेट किए बिना "बच्चे को जोड़ना" या "टेक्स्ट नोड बनाना" की सुविधा देता है। innHTML एक अपमान है जिसे Microsoft ने आविष्कार किया था - यदि आप इसका उपयोग करते हैं, तो आप IE6 के बारे में सभी विशेषाधिकार खो देते हैं क्योंकि यह भयानक है क्योंकि आप इसे हमेशा के लिए कचरा छड़ी बनाने में मदद कर रहे हैं। डोम जानें।
  • इसे हर जगह काम करने की जरूरत है। अगर कुछ समर्थित नहीं है, तो इसे शान से नीचा दिखाने की जरूरत है ताकि अनुभव बेकार न हो - आप अपने उपयोगकर्ताओं को चेहरे और दुर्घटना में थप्पड़ नहीं मार सकते।
  • कॉपीराइट और लाइसेंस महत्वपूर्ण हैं। दूसरे लोगों की मेहनत को चीर-फाड़ न करें। अगर कोई कहता है कि "पुनर्विक्रय के लिए नहीं," तो आप इसे बेच नहीं सकते। एक झटका मत बनो, या हम कड़ी मेहनत वाले लोगों को चीर देने के लिए आपके कोड से नफरत करेंगे।
  • जेएस प्रोटोटाइप है, कक्षाएं नहीं। यह करना बंद करो। यदि आपको समझ में नहीं आता है कि प्रोटोटाइप कैसे काम करता है, तो आपको इसकी आवश्यकता है। यह गूगल। जावास्क्रिप्ट वर्ग-आधारित नहीं है, कक्षाएं बनाने की कोशिश करना बंद करें, यह बहुत कम ही अच्छी तरह से काम करता है। लोग एक प्रोटोटाइप भाषा में शास्त्रीय कोड लिखने की कोशिश करते हैं और इसका उपयोग करते हैं कि "क्यों भाषा बेकार है" के लिए एक मामले के रूप में, मैं रूबी के लिए एक ही मामला बना सकता था जो प्रोटोटाइप का समर्थन करने में सक्षम नहीं था। कुछ नया सीखें और गलत करना बंद करें।

बेसिक्स पर ध्यान दें, हमेशा।

  • आप गलत हैं, और यह भयानक है, क्योंकि आप अभी कुछ जानते हैं। कुछ भी गलत नहीं है, जो गलत होने के लिए स्वीकार नहीं करता है और खराब कोड को गलत तरीके से बाहर निकालता रहता है जैसे कि वे कुछ पाखण्डी रॉक-स्टार सुपरहीरो निंजा हैं। वे सिर्फ मूर्ख हैं। आप गलत हो सकते हैं, स्वीकार करें कि आप गलत हो सकते हैं, मदद के लिए पूछें।
  • आपको हमेशा jQuery की आवश्यकता नहीं है। jQuery बहुत धीमा कोड बनाता है और ऐसे लोगों की मदद करता है जो JS को JS लिखना नहीं जानते हैं। यह आगे एक समस्या है क्योंकि JS को JS लिखने के लिए JS की आवश्यकता नहीं है। जाओ पता लगाओ। एक बार जब आप ऊपर बताई गई कुछ चीजों को समझ लेते हैं जैसे कि सीखने की घटनाएं, DOM सीखना, इनर HTML के बारे में सीखना, तो आप देखेंगे कि jQuery आपके कोड के लिए हानिकारक क्यों हो सकता है। यह बहुत से स्थानों में सही तरीके से उपयोग किया जा सकता है, लेकिन अक्सर आप एक छोटी सी लाइब्रेरी का उपयोग कर सकते हैं या यहां तक कि मानक जावास्क्रिप्ट को हांफ सकते हैं जो आपके ब्राउज़र के साथ कुछ पूरा करने के लिए आता है। आपको कुछ भी करने के लिए jQuery की आवश्यकता नहीं है, यह कुछ कोड लिखने में आसान बनाता है जो अगर आप सीख रहे हैं तो शांत हैं लेकिन आपको बेहतर करना शुरू करना होगा और अधिक सीखना होगा - जब आप अधिक जानते हैं, तो आप यह पता लगाएंगे कि कैसे वैसे भी jQuery में बेहतर कोड लिखें।कुछ अन्य जावास्क्रिप्ट लाइब्रेरियों को देखें और बंद होने के बारे में सोचें।
  • आपको कट + पेस्ट + ट्वीक की आवश्यकता नहीं है, डीआरवाई कोड बनाएं। मैंने पहले भी इसका उल्लेख किया है, लेकिन यह यहाँ भी महत्वपूर्ण है। यदि आपका कोड आधार अपमानजनक है तो आप गुणवत्ता कोड नहीं लिख सकते।
  • सरणियों / ऑब्जेक्ट अंतर का दुरुपयोग न करें, जानें कि कैसे लूप करें। जानें कि आप एक का उपयोग क्यों करते हैं for (;;)और आप एक for( in )लूप का उपयोग क्यों करते हैं । थोड़ी देर के लूप का उपयोग कब करें। जब आप बस स्विच केस का उपयोग कर सकते हैं तो नेस्टिंग को रोकें। ऑब्जेक्ट ऑर्डर को संरक्षित नहीं करते हैं, इसलिए उन्हें एक सरणी के रूप में उपयोग न करें; पुराने Opera / FF, पुराने MISE, कभी-कभी फ़्लैश आपकी वस्तुओं के आदेश का सम्मान नहीं करेगा। एक सरणी का उपयोग करें यदि आप चीजों का क्रम रखना चाहते हैं, तो एक वस्तु का उपयोग करें यदि आप एक वस्तु चाहते हैं (कुछ ऐसा जिसमें तत्वों का क्रम नहीं है)।
  • निर्णय संरचना आपके लाभ के लिए कैसे उपयोग की जा सकती है, अपने कोड में जटिलता नहीं जोड़ें। नेस्टिंग आईएफएस को रोकें, यह पता लगाएं कि बूलियन तार्किक ऑपरेटर कैसे काम करते हैं। पता लगाएँ कि स्विच-केस कैसे काम करता है।
  • RTFM। बेहतर कोड के बारे में जानने के लिए सबसे अच्छी जगह वास्तविक कल्पना को पढ़कर है। कोड के उस हिस्से पर RFC चश्मा पढ़ें जिसे आप उपयोग करने का प्रयास कर रहे हैं। ECMAScript दस्तावेज़ पढ़ें। W3C DOM युक्ति पढ़ें। W3C XHTML / HTML / HTML5 कल्पना पढ़ें। चश्मा पढ़ें, वे अच्छे हैं।

लंबे खेल पर ध्यान केंद्रित करें, त्वरित फ़्लैश नहीं और मरें।

  • आपको समुदाय की मदद करनी चाहिए, आपको कोड लिखना चाहिए जो लंबे समय तक बना रहेगा। अपने कोड और समुदाय के बारे में कुछ जुनून रखें। यदि आपने बुरा ज्ञान कहीं छोड़ दिया है, तो नरक वापस जाओ और इसे ठीक करो। खराब जानकारी वास्तव में शुद्ध करना और हमेशा के लिए चिपक जाना मुश्किल है। क्या तुम हिस्सा हो। वेब को बदतर बनाने में w3schools की मदद न करें।
  • कहीं से भी मत कूदो और कहो "अरे मुझे एक महान विचार मिला कि कैसे उपयोग करें which" कोड का एक गुच्छा ड्रॉप करें जिसे कोई भी उपयोग नहीं कर सकता है और गायब हो सकता है। आपने कुछ भी योगदान नहीं दिया। जैसे चर का उपयोग न करें aऔर chezburger
  • बुरे कोड और अच्छे कोड को जानना सीखें, इसे अपने कोड में खोजें, अपने बुरे कोड को अच्छे कोड में बनाएँ।
  • कुछ बनाएं, कुछ सीखें, कुछ सिखाएं।
  • अपनी संभावनाओं का विकास करो। आप केवल जावास्क्रिप्ट को हमेशा के लिए नहीं लिख सकते हैं - किसी और चीज में दिलचस्पी लें, जिसमें आपकी रुचि हो, वापस आएँ, जो आपने सीखा है उसे साझा करें और देखें कि क्या आप समुदाय में इसके लिए जगह पा सकते हैं। दूसरी दुनिया को यह दिखाने की कोशिश करें कि आपके बाहर होने के दौरान जावास्क्रिप्ट का क्या मूल्य है।
  • आप तब भी गलत हैं, जब आप सब कुछ जानते हैं। सही होने के लिए एक प्रमाण का उपयोग करें, न कि आपकी स्थिति / अधिकार। आप कभी सही नहीं हो सकते, लेकिन आपका प्रमाण हमेशा सही होता है। पिसिंग मैचों में मत जाओ, जितना मुश्किल कभी-कभी से बचना है। या तो वहाँ सबूत है या वहाँ नहीं है। लपटें किसी की मदद नहीं करतीं।

दिलचस्पी रखने वाले किसी व्यक्ति के लिए, मैंने वास्तव में व्यक्तिगत नोट्स से इसे एक ट्यूटोरियल पर लिया है जो मैंने कहीं नहीं लिखा है।


आपका उत्तर, शीर्ष की ओर, ने HTTP और HTML को पूरी तरह से भ्रमित कर दिया है।
ब्रायन बोएचर

@ आइंस्टा मैं यह कहने के साथ काफी इरादतन हूं कि आपको HTTP समझने की जरूरत है। जैसा कि मैंने कहा, "मेरे द्वारा देखे जाने वाले सबसे सामान्य नए प्रश्नों में से एक है" मैं जेएस को अपने कोड में एक परिवर्तन कैसे कर सकता हूं? "। वे उस प्रोटोकॉल को नहीं समझते हैं जो HTTP सामग्री, कुकीज़ और हेडर से होता है। ग्राहक के लिए सर्वर। मैं कहने की कोशिश कर रहा हूं कि परतों को जानने की जरूरत है ताकि वे इन चीजों से भ्रमित न हों। कार्यात्मक रूप से व्यक्त करने के लिए, मैं कहूंगा: TCPIP(HTTP(ClientServerRelationship(), Cookies(), HTML(JavaScript(Knowledge))))
गुप्त

1
"क्या आप वास्तव में HTTP प्राप्त करते हैं? निश्चित रूप से, आप यह जान सकते हैं कि टैग कैसे काम करते हैं और घोंसला बनाते हैं, लेकिन क्या आप वास्तव में doctype और quirks मोड को समझते हैं? क्या आप समझते हैं कि आपको एक सूची तत्व के चारों ओर पैराग्राफ टैग नहीं लगाने चाहिए?" उस उद्धरण में कुछ भी परिवहन प्रोटोकॉल शामिल नहीं है, इसके दुरुपयोग के मामले के बाहर।
ब्रायन बोटेचर

1
@ आइंता आह क्षमा करें, मैंने पूरी तरह से ऐसा नहीं देखा, मैंने इसे HTML में बदल दिया है। धन्यवाद :)।
गुप्त

1
+1 स्वीकार किए गए एक से बेहतर उत्तर है
टॉम स्क्वायर्स

7
  1. डगलस क्रॉकफोर्ड की जावास्क्रिप्ट पढ़ें : अच्छे भाग । यह काफी टिप है, लेकिन ईमानदारी से, इसकी सबसे अच्छी सलाह जो मैंने कभी अच्छी जावास्क्रिप्ट लिखने के लिए सुनी है।

  2. संबंधित, जावास्क्रिप्ट पर डगलस क्रॉकफोर्ड के लेख पढ़ें ।


9
लेकिन इसे धार्मिक रूप से न लें। इसे देखें और सुनिश्चित करें कि यह आपके लिए समझ में आता है। प्रश्न पूछें जहां आप उद्देश्य को नहीं समझते हैं।
गुप्त '

3
alert('This illustrates how JavaScript has first-class functions');
alert('It also illustrates how to use closures.  Try running this code in your browser.');

var funky = function(s) {
    alert("We're getting funky with " + s);
};

var makeFunkyObject = function(funkyFunction) {
    var numberOfTimesAlerted = 0;
    var fn = { };
    fn.alertFunky = function(s) {
        funkyFunction(s);
        numberOfTimesAlerted++;
    }
    fn.getNumberOfTimesAlerted = function() {
        return numberOfTimesAlerted;
    }
    return fn;
}

var funkyObject = makeFunkyObject(funky);

funkyObject.alertFunky('Alice'); // alerts We're getting funky with Alice
funkyObject.alertFunky('Bob'); // alerts We're getting funky with Bob
alert(funkyObject.getNumberOfTimesAlerted()); // alerts 2

alert('Also, be sure to distinguish between learning about JavaScript and learning about the DOM');
alert('The former is awesome; the latter, not so awesome.');

+1: एक बार जब आप इसे टटोलेंगे, तो आप एक निंजा निंजा बन जाएंगे।
Spoike

2

यहां कुछ सवाल दिए गए हैं जो आपको जावास्क्रिप्ट पर जाने चाहिए।

  1. JSON कैसे काम करता है और यह किसके लिए अच्छा है?

  2. जावास्क्रिप्ट में फ़ंक्शन ऑब्जेक्ट्स क्यों हैं?

  3. मुझे eval का उपयोग क्यों नहीं करना चाहिए?

  4. मैं जावास्क्रिप्ट में ईवेंट कैसे बनाऊं?

  5. मैं जावास्क्रिप्ट में पता कैसे लगा सकता हूँ?

बहुत अधिक आप जावास्क्रिप्ट में करने की जरूरत है कि ज्यादातर चीजें शामिल हैं।


1
  1. हमेशा अर्धविराम का उपयोग करें। निहित अर्धविराम (जेएस में) एक भयानक विचार है, विशेष रूप से आम उपयोग में दिलचस्प कुछ सिंटैक्स के साथ। वे आम तौर पर किसी भी जेएस मिनिफ़ायर द्वारा आवश्यक होते हैं।
  2. निष्कासन () से बचें । यह सभी प्रकार की समस्याओं का कारण बनता है, और आपके आवेदन को धीमा करने का एक बहुत ही त्वरित तरीका है। अधिकांश उपयोग वास्तव में गालियाँ हैं। हर बार जब आपको लगता है कि आपको eval()दूसरे तरीके के लिए डबल और ट्रिपल चेक का उपयोग करने की आवश्यकता है ; लगभग हमेशा एक क्लीनर, आसान तरीका है जब तक आप वास्तव में जावास्क्रिप्ट के पूरे स्ट्रिंग को निष्पादित करने की कोशिश नहीं कर रहे हैं।
  3. (function() {/* stuff */})()कोड का एक सेट को एनसेस् करने और उसके लिए एक स्थानीय स्कोप बनाने का एक अच्छा तरीका है। वस्तुओं का उपयोग करना एक और, अक्सर बेहतर, तरीका है; इस तरह से उपयोग किए जाने पर ऑब्जेक्ट अन्य भाषाओं के नामस्थानों के अनुरूप होते हैं। बस देखने के लिए this। अधिकांश अन्य भाषाओं के विपरीत, thisहमेशा संदर्भ नहीं देता है कि आप सहज रूप से ऐसा क्या सोचते हैं। यह भी याद रखें कि जब तक कि सभी जेएस चर को निर्दिष्ट नहीं किया जाता है, फ़ंक्शन और अन्य ऑब्जेक्ट सभी वैश्विक हैं, यहां तक ​​कि कई .jsफाइलों में भी।
  4. किसी अच्छे JS लाइब्रेरी को खोजें और सीखें / उपयोग करें। jQuery अधिक लोकप्रिय लोगों में से एक है। ये आपके लिए बहुत भारी उठाने का काम करेंगे जिसमें फीचर का पता लगाना और डोम हेरफेर को अमूर्त करना और विभिन्न ब्राउज़रों में अलग-अलग चीजों को लागू करने जैसी कई चीजें शामिल हैं।
  5. हमेशा अर्धविराम का उपयोग करें। गंभीरता से। एक आईडीई प्राप्त करें जो आपको भूल जाने पर आपको चेतावनी देता है। मैं भद्दी आवाज नहीं करना चाहता, लेकिन कुछ समय ऐसा रहा है जहां बग को सिर्फ अर्धविराम की कमी के लिए पेश किया गया है और ब्राउज़र आपको इन के बारे में चेतावनी नहीं देगा।

आपको हमेशा अर्धविराम की जरूरत नहीं है , हालांकि मैं मानूंगा कि यह अच्छा अभ्यास है।
सलेम 29'11 को

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

Eval से बचने के लिए +1, अर्धविराम व्यामोह के लिए -1। जावास्क्रिप्ट के अर्धविराम सम्मिलन के विशेष नियम हैं, जिनका पालन करते समय, बहुत तार्किक होते हैं। इसे बाहर की जाँच करें
रयान कीन

@ इन्कॉगनिटो +1I'd say it's more important to understand ASI and whitespace rules than it is "always use semicolons."
14

हर कोई जो कहता है कि आपको हमेशा अर्धविराम की ज़रूरत नहीं है; जब आप जावास्क्रिप्ट में वास्तविक क्रॉस-ब्राउज़र विकास कर चुके हों (IE6, 7, और 8 देखें)।
Spoike

0

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

वहाँ से, मैं सुझाव है कि आप कितना लागू करने के बारे में जानकारी इकट्ठा करने की कोशिश ठोस , सूखी , GRASP , KISS और YAGNI , और अधिक महत्वपूर्ण बात कैसे स्थितियों, जहां वे संघर्ष करने लगते हैं के बारे में जाने के लिए (वे ऐसा कभी नहीं, उनमें से केवल अपनी समझ या हाथ में समस्या है)। स्टैकएक्सचेंज पर भी इसे ढूंढना काफी आसान है।

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


-7

मैं यह अनुमान लगा रहा हूं कि आप वेब-एप्लिकेशन में क्लाइंट-साइड UI विकास के लिए जावास्क्रिप्ट का उपयोग कर रहे हैं।

1) क्या यह क्लाइंट साइड होना चाहिए या यह सर्वर साइड होना चाहिए? मुझे पता है कि मैं चला गया हूं और कोड के गंभीर अंशों को लिखा है जो वास्तव में सर्वराइड पर होना चाहते हैं और इसके विपरीत। बहुत बार मैं कुछ के लिए एक AJAX कॉल करने के लिए तैयार हो जाता हूँ जो कि सर्वर कोड में बेहतर तरीके से रखा जाता है। विशेष रूप से ऐसी चीजें जो प्रकृति में स्थिर हैं लेकिन नियमित रूप से बदलती हैं (उदाहरण के लिए श्रेणियों की सूची)।

2) क्या कोई प्लगइन है जो पहले से ही ऐसा करता है? मैं JQuery का उपयोग करता हूं और इसका उत्तर लगभग हमेशा ही होता है! मैं अक्सर प्लगइन कोड लेता हूं कि किसी ने लिखा है और इसे मेरी ज़रूरतों के लिए अनुकूलित करें (आमतौर पर चीजों में अतिरिक्त कक्षाएं जोड़ रहा है, आदि) लेकिन शायद ही कभी मुझे खरोंच से शुरू करने की आवश्यकता होती है।

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

4) क्या मुझे एक अलग टूल का उपयोग करना चाहिए? यह कुछ ऐसा है जिसे मैं हाल ही में पकड़ रहा हूं। कॉफी स्क्रिप्ट जैसे कुछ जावास्क्रिप्ट विकल्प हैं जो मेरे स्टैक (रेल 3.1) में अच्छी तरह से संभाले हुए हैं और मैं इस बात पर विचार कर रहा हूं कि मेरे कोड का ज्यादा हिस्सा वहां जाए या नहीं।

5) क्या यह जावास्क्रिप्ट कोड अच्छा कोड है? जावास्क्रिप्ट किसी अन्य कोड की तरह कोड है। क्या यह कोड मेरे बाकी कोड जितना अच्छा है? यदि नहीं, तो क्यों नहीं? क्या यह फेक है? क्या मैं आलसी हूँ?


4
अच्छे जावास्क्रिप्ट लिखने के आपके सुझावों में "डोंट राइट जावास्क्रिप्ट" और "अच्छा जावास्क्रिप्ट लिखें" शामिल हैं। क्षमा करें, -1
रयान कीन

1
@RyanKinal इसमें "अधिकांश समय jQuery का उपयोग करें" शामिल है। वह अकेली बड़ी समस्या है।
गुप्त

2
@ f0x आप ऐसा क्यों कहते हैं? आप उस काम पर निर्माण क्यों नहीं करना चाहेंगे जो किसी और ने किया है?
ड्रू

2
@ रेयान, आपके "पाँच या उससे कम प्रश्नों की सूची जो मुझे खुद से पूछनी चाहिए" में तीन निर्देशों को शामिल किया गया है, जिसमें "सीखना [ऐसे और ऐसे] ..." के साथ शुरू किया गया है, जो आमतौर पर अच्छी सलाह है, लेकिन ईमानदारी से मैं यहाँ वास्तव में विशिष्ट कुछ पूछ रहा था: जावास्क्रिप्ट कोडिंग करते समय मेरे द्वारा किए जाने वाले प्रत्येक कदम के लिए मुझे स्वयं से प्रश्न पूछने चाहिए। जावास्क्रिप्ट को समझने के लिए "मुझे क्या सीखना चाहिए?" ड्रू एकमात्र व्यक्ति है जिसने पूछे गए सवाल का जवाब दिया।

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