जावास्क्रिप्ट फ़ाइल नामकरण सम्मेलन क्या है? [बन्द है]


283

क्या फाइलों को कुछ के साथ नाम दिया जाना चाहिए-hyphens.js, camelCased.js, या कुछ और?

मुझे इस प्रश्न का उत्तर यहां नहीं मिला ।


2
एक अच्छा नामकरण सम्मेलन का नाम फिल्नाम में रखना है क्योंकि आप उस इकाई को कोड में देखेंगे। MyPluginकक्षा में जाना होगा MyPlugin.jsMenuItemमें जाना होगा घटक प्रतिक्रिया MenuItem.js। अन्य देवों को 'आपके कूल-मॉड्यूल' को आयात / आयात करना होगा और उसमें से कई प्रतीकों का उपयोग करना होगा, इसलिए इसे नाम दें cool-module.js। -
Dan Dascalescu

1
यह पोस्ट विकल्प-आधारित नहीं है। वास्तव में यह महत्वपूर्ण है। यहां आपके पास Google - google.github.io/styleguide/jsguide.html#file-name द्वारा बनाया गया एक गाइड है । (Google जावास्क्रिप्ट स्टाइल गाइड)
zwitterion

जवाबों:


184

नामकरण योजना jQuery के उपयोग के समान कुछ का उपयोग करने के लिए एक संभावित नामकरण सम्मेलन है। यह सार्वभौमिक रूप से नहीं अपनाया गया है लेकिन यह बहुत आम है।

product-name.plugin-ver.sion.filetype.js

जहां product-name+ pluginजोड़ी एक नाम स्थान और एक मॉड्यूल का भी प्रतिनिधित्व कर सकती है । versionऔर filetypeआम तौर पर वैकल्पिक हैं।

filetypeफ़ाइल की सामग्री कैसे है के सापेक्ष कुछ हो सकता है। अक्सर देखा जाता है:

  • min छोटी फ़ाइलों के लिए
  • custom कस्टम निर्मित या संशोधित फ़ाइलों के लिए

उदाहरण:

  • jquery-1.4.2.min.js
  • jquery.plugin-0.1.js
  • myapp.invoice.js

31
आपने जो कहा, मैं उस पर सहमत हूं। लेकिन एक बात यह है कि मैं वर्तमान में संघर्ष कर रहा हूँ: क्या होगा अगर 'प्लगइन' में दो शब्द हैं? उन्हें डॉट्स द्वारा अलग करें? jquery.myPlugin-1.0.0.js या jquery.my.plugin-1.0.0.js या jquery.my_plugin-1.0.0.js या jquery.myplugin-1.0.0.js या शायद jquery.my-plugin- 1.0.0.js? हो सकता है कि आप उस के साथ अपने उदाहरणों को पूरा कर सकें, धन्यवाद!
12

4
एएमडी मॉड्यूल के बारे में क्या ? यदि आप फ़ाइल नाम में संस्करण का उपयोग करते हैं, तो संस्करण संख्या में परिवर्तन होने पर आपको बहुत सारी फ़ाइलों को बदलना होगा।
नूट

3
@junior, यह एक पुरानी पोस्ट है, लेकिन एक त्वरित बोवर खोज से पता चलता है कि jQuery प्लगइन्स किसी विशेष सम्मेलन का पालन नहीं करते हैं। ऐसा प्रतीत होता है कि (1) शब्दों को एक साथ धकेलना, (2) स्पाइन-केस का उपयोग करना, और (3) कैमलकेस का उपयोग करना सभी का उपयोग लगभग बराबर आवृत्ति के साथ किया जाता है।
भोलेबेन

यह नहीं भूलना चाहिए कि कुछ वर्जनिंग और फाइल सिस्टम में लोअरकेस में एक शब्द के बीच के अंतर को पहचानने में समस्याएं होती हैं और समान शब्द un अपर या कैमलकेस (जैसे: "ThisWord" कुछ वातावरणों में "thisword" के समान है)। कैमलकेस सम्मेलन का उपयोग करते समय कुछ बातों का ध्यान रखें।
मई को amypellegrini

@knut आप संस्करण नामों के माध्यम से लोड नहीं किया जाना चाहिए, लेकिन एक विशिष्ट संस्करण फ़ाइल के लिए मॉड्यूल नाम मैपिंग।
डोरल

132

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

  1. सभी लोअरकेस फ़ाइल नाम का उपयोग करें। कुछ ऑपरेटिंग सिस्टम हैं जो फ़ाइल नाम के लिए संवेदनशील नहीं हैं और सभी लोअरकेस का उपयोग अनजाने में दो फ़ाइलों का उपयोग करने से रोकता है जो केवल उस मामले में भिन्न होते हैं जो कुछ ऑपरेटिंग सिस्टम पर काम नहीं कर सकते हैं।
  2. फ़ाइल नाम में रिक्त स्थान का उपयोग न करें। जबकि यह तकनीकी रूप से काम करने के लिए बनाया जा सकता है, बहुत सारे कारण हैं कि फाइलनाम में रिक्त स्थान समस्याओं का कारण बन सकते हैं।
  3. एक शब्द विभाजक के लिए एक हाइफ़न ठीक है। यदि आप किसी स्थान या ऊंट के बजाय कई शब्दों के लिए किसी प्रकार के विभाजक का उपयोग करना चाहते हैं various-scripts.js, तो एक हाइफ़न एक सुरक्षित और उपयोगी और आमतौर पर उपयोग किया जाने वाला विभाजक है।
  4. अपने फ़ाइल नाम में संस्करण संख्याओं का उपयोग करने के बारे में सोचें। जब आप अपनी स्क्रिप्ट को अपग्रेड करना चाहते हैं, तो ब्राउज़र या सीडीएन कैशिंग के प्रभावों की योजना बनाएं। दीर्घकालिक कैशिंग (गति और दक्षता के लिए) का उपयोग करने का सबसे सरल तरीका है, लेकिन जब आप एक जेएस फाइल को अपग्रेड करते हैं तो तत्काल और सुरक्षित अपग्रेड, तैनात फ़ाइल नाम या पथ में एक संस्करण संख्या शामिल करना है (जैसे jQuery jquery-1.6.2.js के साथ करता है) ) और फिर आप फ़ाइल को अपग्रेड / परिवर्तित करते समय उस वर्जन नंबर को बदल / बदल देते हैं। यह गारंटी देगा कि कोई भी पृष्ठ जो नए संस्करण का अनुरोध नहीं करता है उसे कभी भी पुराने संस्करण को कैश से परोसा जाता है।

56

जावास्क्रिप्ट फ़ाइलों के नामकरण के लिए कोई आधिकारिक, सार्वभौमिक , सम्मेलन नहीं है।

कुछ विभिन्न विकल्प हैं:

  • scriptName.js
  • script-name.js
  • script_name.js

सभी मान्य नामकरण परंपराएँ हैं, हालाँकि मैं पसंद करता हूँ jQuery का सुझाव दिया नामकरण सम्मेलन (jQuery प्लगइन्स के लिए, हालाँकि यह किसी भी JS के लिए काम करता है)

  • jquery.pluginname.js

इस नामकरण सम्मेलन की सुंदरता यह है कि यह स्पष्ट रूप से वैश्विक नामस्थान प्रदूषण को जोड़ने का वर्णन करता है।

  • foo.js जोड़ता window.foo
  • foo.bar.js जोड़ता window.foo.bar

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

  • foo-1.2.1.js
  • foo-1.2.2.js
  • ...
  • foo-2.1.24.js

10
+1 के लिए The beauty to this naming convention is that it explicitly describes the global namespace pollution being added., इस पर कभी गौर नहीं किया गया कि
एड्रिन बी

2
मेरा एकमात्र सवाल यह है कि यदि आपके पास कोई फ़ाइल है जो बनाता है Fooया myFoo, तो क्या आप फ़ाइल को क्रमशः नाम Foo.jsया नाम देंगे myFoo.js?
अर्धविराम

13

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

नामकरण के रूप में, यह शुद्ध रूप से वरीयता और स्वाद का मामला है। मैं हाइफ़न के साथ नामकरण फ़ाइलों को पसंद करता हूं क्योंकि तब मुझे शिफ्ट कुंजी के लिए नहीं पहुंचना पड़ता है, जैसा कि मैं कैमल फ़ाइल नामों के साथ काम करते समय करता हूं; और क्योंकि मुझे Windows और Linux फ़ाइल नामों के बीच अंतर के बारे में चिंता करने की ज़रूरत नहीं है (Windows फ़ाइल नाम केस-असंवेदनशील हैं, कम से कम XP के माध्यम से)।

तो जवाब, इतने सारे की तरह, "यह निर्भर करता है" या "यह आपके ऊपर है।"

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


6
हाइफ़न बनाम कैमलकेस तर्क के लिए +1।
cellepo

6

मैं आम तौर पर कम मामले के साथ हाइफ़न पसंद करता हूं, लेकिन एक बात का अभी तक उल्लेख नहीं किया गया है कि कभी-कभी फ़ाइल नाम बिल्कुल एक मॉड्यूल या तत्काल फ़ंक्शन के नाम से मेल खाने के लिए अच्छा है।

उदाहरण के लिए, मेरे पास एक खुलासा मॉड्यूल है var knockoutUtilityModule = function() {...}जिसे नॉकआउट यूटिलिटीमॉडल.जेएस नामक अपनी स्वयं की फ़ाइल के साथ घोषित किया गया है, हालांकि वास्तव में मैं नॉकआउट-यूटिलिटी-मॉड्यूल.जेएस पसंद करता हूं।

इसी तरह, चूंकि मैं स्क्रिप्ट्स को संयोजित करने के लिए एक बंडलिंग तंत्र का उपयोग कर रहा हूं, इसलिए मैंने अपनी फ़ाइल, सी # शैली में प्रत्येक को बनाए रखने के लिए तात्कालिक कार्यों (टेम्पर्ड व्यू मॉडल आदि) को परिभाषित करने के लिए लिया है। उदाहरण के लिए, ProductDescriptorViewModel ProductDescriptorViewModel.js के अंदर अपने दम पर रहता है (मैं तत्काल कार्यों के लिए ऊपरी मामले का उपयोग करता हूं)।

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