CSS सिंगल-लाइन टिप्पणियों की अनुमति क्यों नहीं देता है? [बन्द है]


14

मैं समझता हूं कि सीएसएस केवल इस तरह की बहु-पंक्ति टिप्पणियों का समर्थन करता है

/* foobar */

सिंगल लाइन टिप्पणियों के लिए समर्थन क्यों नहीं है।

// foobar

वे प्रोग्रामिंग में आम हैं और सीएसएस जैसी भाषा के लिए विशेष रूप से उपयोगी हैं, जहां प्रत्येक नियम स्वयं की रेखा पर है।

यदि इस निर्णय के लिए कोई विशेष ऐतिहासिक कारण नहीं था, तो किसने ब्राउज़रों को इसका समर्थन करने से रोका है?


3
वह घटिया फैसला है। उन्हें एकल पंक्ति टिप्पणियों की अनुमति देनी चाहिए।
ट्यूलेंस कोर्डोवा

1
@Goose: आप पर ध्यान दिया है sass-lang.com ?
केविन क्लाइन


1
@ TulainsCórdova मैंने जवाबों का समर्थन नहीं किया, बस बताया कि यह चर्चा पहले ही हो चुकी है।
एरिक किंग

2
उस प्रश्न को एक उत्तर मिला, जो यहाँ के उत्तरों से अधिक तकनीकी है। "सीएसएस अन्य सभी व्हाट्सएप की तरह नए सिरे से व्यवहार करता है, और एक समाप्ति परिसीमन के बिना टिप्पणी के अंत का निर्धारण करने में सक्षम नहीं होगा।"
हंस

जवाबों:


9

पिछेड़ी संगतता

CSS सिंटैक्स में एकल-लाइन टिप्पणियों का परिचय फ़ाइलों का अर्थ बदल सकता है जो वर्तमान में टोकन का उपयोग करता है //। ब्राउज़र विक्रेता परिवर्तनों को पेश करने के लिए बहुत अनिच्छुक हैं जो संभावित रूप से मौजूदा पृष्ठों को तोड़ सकते हैं।

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

सीएसएस को इस तरह से डिज़ाइन किया गया है कि पुराने ब्राउजर को तोड़े बिना नए सिंटैक्स की शुरुआत की जा सके। पुराने ब्राउज़र सिर्फ घोषणा को छोड़ देंगे जिसमें असमर्थित सिंटैक्स होता है, और उसके बाद जारी रहता है।

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

एक उदाहरण:

P { font: 12px//16px; }
... hundreds of additional lines of CSS...

यहां मैंने गलती से स्लैश को दोगुना कर दिया। परिणाम यह है कि फ़ॉन्ट-घोषणा को अनदेखा किया गया है, लेकिन बाकी सभी ठीक काम करते हैं। यदि //-comments का समर्थन शुरू किया गया था, तो अचानक समापन ब्रेस पर टिप्पणी की जाएगी, संभवतः सभी स्टाइल शीट को तोड़कर।

अब आप कह सकते हैं कि यह मेरी अपनी गलती है क्योंकि मैंने गलती की है, लेकिन यह नहीं बदलता है कि इंटरनेट पर अज्ञात संख्या में पेज अस्पष्ट कारणों के लिए अजीब रूप से टूट या प्रस्तुत कर सकते हैं।

ऐसा कोई भी परिवर्तन जो पीछे की ओर की संगतता को तोड़ता है, बहुत सावधानी से विचार किया जाना चाहिए, और एकल-पंक्ति टिप्पणियां संभवतः जोखिम के लिए पर्याप्त नहीं हैं, क्योंकि एकमात्र लाभ यह है कि यह आपको कुछ कीस्ट्रोक्स बचाता है।

तो अगर CSS में singe- लाइन कमेंट्स होने चाहिए तो शायद उसे शुरुआत से ही पेश किया जाना चाहिए। लेकिन सीएसएस एक बहुत ही सरल भाषा के रूप में शुरू हुआ और दो अलग-अलग टिप्पणी वाक्य रचनाओं को उस समय अनावश्यक जटिलता के रूप में देखा गया होगा। (यहां तक ​​कि ANSI C के पास एकल-पंक्ति टिप्पणियाँ भी नहीं हैं।)


ओह, // CSS में एक टोकन है? जरुर बताएं।
माइकल ब्लैकबर्न

वर्तमान //में व्याकरण में कहीं भी दो "डेल टोकन" के साथ पार्स नहीं किया जाएगा। देखें w3.org/TR/css-syntax-3/#tokenization जानकारी के लिए।
जैक्सबी

MainMa के लिए +1 यह क्यों शुरू हुआ /**/, लेकिन इसे स्वीकार करने के कारण यह पता चलता है कि यह क्यों नहीं बदला है।
हंस

8

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

यदि यह भाषा के लिए आवश्यक होगा, अर्थात डेवलपर्स के जीवन को बहुत आसान बना दें, तो यह किया जा सकता है। उदाहरण के लिए, सीएसएस में किसी भी प्रकार की टिप्पणी नहीं होगी, और यह विशिष्ट वाक्यविन्यास तत्वों को जोड़ने के प्रयास के लायक होगा, जो टिप्पणियों का परिसीमन करते हैं। //-स्टाइल टिप्पणी दूसरी ओर? ... मैं बात नहीं देख रहा हूँ। देखें /* Hello, World! */,: एक-पंक्ति टिप्पणी।

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

इसी तरह, पायथन प्रोग्रामर यह दावा करेगा कि CSS में #-स्टाइल टिप्पणियाँ भी होनी चाहिए ; तो अब, क्या हमें दोनों शैलियों का समर्थन करने की आवश्यकता है? फिर हास्केल दुनिया का एक आदमी शामिल करने के लिए --और {- -}साथ ही पूछेगा, और आप खुद से पूछेंगे कि आप सीएसएस कोड को किसी भी समय क्यों नहीं पहचानते हैं।

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

वे [...] सीएसएस जैसी भाषा के लिए विशेष रूप से उपयोगी लगते हैं जहां प्रत्येक नियम स्वयं की रेखा पर है।

जैसा कि मैंने समझाया था, वे केवल थोड़े उपयोगी होते हैं, प्रोग्रामर के एक छोटे उपसमुच्चय के लिए, पाठ संपादकों के एक छोटे उपसमुच्चय का उपयोग करते हुए। अपनी लाइन पर प्रत्येक नियम के बारे में आपकी टिप्पणी के रूप में (मैं आपकी टिप्पणी से असहमत हूं, वैसे), इससे मुझे एक और बिंदु के बारे में सोचना पड़ा: टिप्पणियों का वास्तव में उपयोग कैसे किया जाता है।

यहां सीएसएस टिप्पणियों का उपयोग किया जा सकता है जिनके बारे में मैं सोच सकता हूं:

  • फ़ाइल हेडर के रूप में (कॉपीराइट जानकारी, वैनिटी सामान, आदि)
  • शैलियों के एक समूह के एक सीमांकक के रूप में।
  • एक हैक के स्पष्टीकरण के रूप में।
  • एक विशेष शैली या संपत्ति के बारे में विस्तार से।

पहले तीन मामलों में, आप वैसे भी बहु-शैली की टिप्पणियों का उपयोग करेंगे। यह फ़ाइल हेडर और एक हैक के स्पष्टीकरण के लिए स्पष्ट है (अधिकांश हैक्स को कम से कम एक वाक्य और स्टैकऑवरफ़्लो या एक ब्लॉग लेख के लिए हाइपरलिंक की आवश्यकता होती है); सीमांकक के रूप में:

/**
 * Footer and sitemap styles.
 */

C- शैली की टिप्पणी की तुलना में बहुत अधिक दृश्यमान है:

// Footer and sitemap styles.

पाठ में दफन।


जावास्क्रिप्ट एकल-लाइन //टिप्पणियों का भी समर्थन करती है ।
ट्यूलेंस कोर्डोवा

मेरा तर्क है कि //यह कई भाषाओं में बहुत आम है और इसके पीछे की अवधारणा यह सिंटैक्स से अधिक है, यह अलग तरह से भी काम करता है। उस ने कहा, यह अभी तक सबसे गहराई से जवाब है।
हंस

मुझे नहीं लगता कि यह एक छोटा सा सबसेट है। कच्चे में CSS लिखने वाले किसी के बारे में भी // के साथ टिप्पणी जोड़ना आसान होगा। लेकिन पीछे की ओर अनुकूलता बिंदु इसे मूट बनाता है।
ओ'रॉनी

-5

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

हां, मिनिफ़ायर मौजूद हैं, और हाँ, जावास्क्रिप्ट इस प्रकार की टिप्पणी की अनुमति देता है। जावास्क्रिप्ट भी eval () की अनुमति देता है इसलिए मुझे नहीं लगता कि हम इसे एक मॉडल के रूप में लेना चाहते हैं।


3
इस जवाब का कोई मतलब नहीं है। "टिप्पणी को छीनने का कोई अवसर नहीं है" - निश्चित रूप से, टिप्पणी किसी अन्य भाषा की तरह पार्सर द्वारा छीन ली गई है। अन्यथा CSS में /* */टिप्पणियां कैसे हो सकती हैं ?
जैक्सबी

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

तो //जब यह बाहर पट्टी कर सकता है तो बाहर की टिप्पणी क्यों नहीं कर सकता /* */?
जैक्सबी

1
यह हो सकता है, लेकिन फिर इसे // और लाइन फ़ीड दोनों के लिए देखना होगा, और लाइन फ़ीड मुख्य रूप से अर्थ सामग्री है, वाक्यविन्यास नहीं। सीएसएस जैसा कि डिज़ाइन किया गया है, सभी व्हाट्सएप को समान मानते हैं। // का समर्थन करने के लिए अब आपके पास "विशेष" व्हाट्सएप है और इसके अलावा, "विशेष" व्हाट्सएप एक चरित्र (\ n) हो सकता है और यह दो (\ r \ n) हो सकता है।
माइकल ब्लैकबर्न

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