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

ब्लॉक की परिभाषाओं की लाइब्रेरी उपलब्ध कराने वाले प्लगिन, आपके दोबारा इस्तेमाल किए जा सकने वाले ब्लॉक को Blockly समुदाय के साथ शेयर करने का बेहतरीन तरीका है. आपकी ब्लॉक लाइब्रेरी को कई तरह की सुविधाओं और उपयोगी बनाने के लिए, हमने ये दिशा-निर्देश बनाए हैं.

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

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

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

        // Your plugin's install function
        export const installMyCustomBlock(generators = {}) {
          Blockly.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});
      

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

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

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