ब्लॉक लाइब्रेरी पब्लिश करना

ब्लॉक डेफ़िनिशन की लाइब्रेरी उपलब्ध कराने वाले प्लगिन, शेयर करने का शानदार तरीका होते हैं ब्लॉकली कम्यूनिटी में, फिर से इस्तेमाल किए जा सकने वाले ब्लॉक शामिल करें. आपकी ब्लॉक लाइब्रेरी को ज़्यादा से ज़्यादा काम का और बेहतर बनाने के लिए, हमने ये दिशा-निर्देश बनाए हैं.

दिशा-निर्देश

  • उपयोगकर्ताओं के लिए, आपके सभी ब्लॉक इंस्टॉल करना आसान बनाएं. साथ ही, उन्हें सिर्फ़ कुछ ब्लॉक या अपने चुने गए ब्लॉक के हिस्से इंस्टॉल करने की सुविधा दें.
    • सभी चीज़ों को इंस्टॉल करना आसान बनाएं: ऐसा करने के लिए, फ़ंक्शन है जो सिंगल ब्लॉक डेफ़िनिशन के हर टुकड़े को इंस्टॉल करता है (जैसे कि म्यूटेटर, एक्सटेंशन, मिक्सिन, फ़ील्ड वगैरह). आपके पास ऐसा फ़ंक्शन भी उपलब्ध कराने का विकल्प है जो आपके प्लग इन के सभी ब्लॉक को एक साथ इंस्टॉल करेगा.
    • वीडियो के खास हिस्से भी चुने जा सकें: आपको ऐसा करने के लिए के हिस्सों को अलग-अलग रखना चाहिए, ताकि उपयोगकर्ता को सिर्फ़ उन हिस्सों को इंपोर्ट करना होगा जिनकी ज़रूरत उन्हें अपना खुद का वर्शन बनाने के लिए है मिलता-जुलता कस्टम ब्लॉक.
  • अपने प्लग इन में साइड इफ़ेक्ट का इस्तेमाल करने से बचें.
    • आपके प्लगिन को लोड करने के असर के तौर पर, ब्लॉक, फ़ील्ड, एक्सटेंशन, और अन्य चीज़ें इंस्टॉल नहीं होनी चाहिए. उपयोगकर्ताओं को इन चीज़ों पर कंट्रोल रखना चाहिए कब और कौनसी चीज़ें इंस्टॉल होंगी. इससे उपयोगकर्ताओं को वे चीज़ें जो वे पा सकते हैं, लेकिन उन्हें इस बात की चिंता नहीं करनी पड़ेगी कि वे सामान कहां मिलेंगे इंस्टॉल किया गया.
  • नए फ़ील्ड को सीधे इंस्टैंशिएट करने के बजाय, JSON फ़ील्ड रजिस्ट्री का इस्तेमाल करें.

    • इसका सुझाव नहीं दिया जाता - सीधे नया फ़ील्ड इंस्टैंशिएट करना:

        const myCustomBlock = {
          init: function() {
            this.appendDummyInput()
                .appendField(new Blockly.FieldNumber(123), 'NAME');
          }
        }
      
    • सुझाई गई - JSON फ़ील्ड रजिस्ट्री:

        export const myCustomBlock = {
          init: function() {
            this.appendDummyInput()
                .appendField(Blockly.fieldRegistry.fromJson({
                    name: 'field_number',
                    value: 123,
                  }), 'NAME');
          }
        }
      
    • फ़ील्ड रजिस्ट्री का इस्तेमाल करने से उपयोगकर्ता के लिए में इस्तेमाल किए गए फ़ील्ड में बदलाव किए बिना ब्लॉक की परिभाषा.

  • इस बारे में अनुमान न लगाएं कि उपयोगकर्ता ने पहले क्या इंस्टॉल किया है.

    • अगर आपके प्लगिन को कस्टम फ़ील्ड या किसी दूसरे प्लगिन की ज़रूरत है, तो अपने दिए गए install फ़ंक्शन में उन फ़ील्ड को खुद रजिस्टर करें.
    • Blockly जल्द ही ऐसे टूल उपलब्ध कराएगा जिनकी मदद से, पहले से रजिस्टर किए गए आइटम को बिना किसी गड़बड़ी के रजिस्टर किया जा सकेगा. तब तक, एक्सटेंशन, म्यूटेट करने वाले टूल, मिक्सिन या फ़ील्ड को खुद रजिस्टर करने से पहले, यह देखें कि क्या पहले से ही कोई रजिस्टर किया गया है.
    • अपने प्लग इन या ब्लॉक की परिभाषाओं के लिए ज़रूरी शर्तों या डिपेंडेंसी के बारे में साफ़ तौर पर बताएं.
  • अपने हर ब्लॉक के लिए जनरेटर फ़ंक्शन उपलब्ध कराएं.

    • ऐसे जनरेटर फ़ंक्शन उपलब्ध कराने से, उपयोगकर्ताओं को आपके ब्लॉक का स्ट्रक्चर और डिज़ाइन समझे बिना, उन्हें इस्तेमाल करने में आसानी होती है. अगर उन्हें अपना जनरेटर लिखना पड़े फ़ंक्शन का उपयोग नहीं करते हैं, तो इससे प्रत्येक उपयोगकर्ता के निरर्थक काम कर सकते है.
    • Blockly में JavaScript का सबसे ज़्यादा इस्तेमाल किया जाता है. इसलिए, अगर कोई एक भाषा चुनें. हालांकि, हम JavaScript का सुझाव देते हैं, बशर्ते एक खास भाषा के लिए बनाए गए हों, जैसे कि Python लाइब्रेरी लागू करना.
    • जिन भाषाओं के लिए जनरेटर फ़ंक्शन लागू नहीं किए जा सकते उनके लिए, 'मदद चाहिए' वाली समस्याएं पोस्ट करें. साथ ही, अगर कोई उपयोगकर्ता इनके लिए योगदान देता है, तो उनके लिए पुश रिक्वेस्ट स्वीकार करें.
    • अगर आपने अपने ब्लॉक के लिए इंस्टॉल फ़ंक्शन दिया है, तो generators पैरामीटर ज़रूरी नहीं है. अगर कोई उपयोगकर्ता आपके साथ काम करने वाला जनरेटर इंस्टेंस पास करता है, तो ब्लॉक-कोड जनरेटर फ़ंक्शन अपने-आप इंस्टॉल हो सकता है. साथ ही, इससे जुड़े काम भी किए जा सकते हैं, जैसे कि रिज़र्व किए गए शब्द जोड़ना:

        // Your plugin's install function
        export const installMyCustomBlock(generators = {}) {
          Blockly.common.defineBlocks({my_custom_block: myCustomBlock});
          if (generators.javascript) {
            generators.javascript.forBlock['my_custom_block'] = myCustomGeneratorFunction;
            generators.javascript.addReservedWords('specialReservedWord');
          }
        }
      
        // How a user may install your block
        import {javascriptGenerator} from 'blockly/javascript';
        import {installMyCustomBlock} from 'blockly-cool-blocks-plugin';
        // installs the block definition and the javascript block-code generator
        installMyCustomBlock({javascript: javascriptGenerator});
      

सुझाव/राय दें या शिकायत करें

अगर अपने प्लगिन में इन दिशा-निर्देशों का सबसे अच्छे तरीके से पालन करने के बारे में आपके सवाल हैं, तो हमें फ़ोरम में बताएं! हमें आपकी ब्लॉक लाइब्रेरी देखने में खुशी होगी और उन पर सुझाव/राय देने में भी.

ध्यान दें कि फ़िलहाल, ब्लॉक की परिभाषाएं देने वाले सभी पहले पक्ष के प्लग इन, इन दिशा-निर्देशों का पालन नहीं करते. हालांकि, नए प्लग इन इनका पालन करेंगे. साथ ही, हम मौजूदा प्लग इन को माइग्रेट करने की योजना बना रहे हैं.