ব্লক লাইব্রেরি প্রকাশ করুন

ব্লক ডেফিনিশনের লাইব্রেরি প্রদানকারী প্লাগইনগুলি ব্লকলি সম্প্রদায়ের সাথে আপনার পুনঃব্যবহারযোগ্য ব্লকগুলি ভাগ করার একটি দুর্দান্ত উপায়। আপনার ব্লক লাইব্রেরিটিকে যতটা সম্ভব বহুমুখী এবং উপযোগী করতে, আমরা এই নির্দেশিকাগুলি তৈরি করেছি৷

নির্দেশিকা

  • ব্যবহারকারীদের জন্য আপনার সমস্ত ব্লক ইনস্টল করা সহজ করুন, এবং ব্যবহারকারীদের জন্য শুধুমাত্র নির্দিষ্ট কিছু ব্লক বা ব্লকের টুকরোগুলি ইনস্টল করা সম্ভব করুন।
    • সবকিছু ইনস্টল করা সহজ করুন: আপনি একটি ফাংশন প্রদান করে এটি করতে পারেন যা একটি একক ব্লক সংজ্ঞার জন্য প্রয়োজনীয় প্রতিটি অংশ ইনস্টল করে (যেমন মিউটেটর, এক্সটেনশন, মিক্সিন, ক্ষেত্র ইত্যাদি)। আপনি একটি ফাংশন প্রদান করতে পারেন যা আপনার প্লাগইন দ্বারা প্রস্তাবিত সমস্ত ব্লক একবারে ইনস্টল করবে।
    • নির্দিষ্ট অংশগুলি বেছে নেওয়া সম্ভব করুন: আপনার একটি ব্লক সংজ্ঞার সমস্ত টুকরো আলাদাভাবে রপ্তানি করা উচিত, যাতে ব্যবহারকারীর পক্ষে তাদের নিজস্ব অনুরূপ কাস্টম ব্লক তৈরি করার জন্য তাদের প্রয়োজনীয় অংশগুলি আমদানি করা সম্ভব হয়।
  • আপনার প্লাগইনে পার্শ্বপ্রতিক্রিয়া ব্যবহার করা এড়িয়ে চলুন।
    • ব্লক, ক্ষেত্র, এক্সটেনশন, এবং অন্যান্য টুকরা আপনার প্লাগইন লোড করার একটি পার্শ্ব প্রতিক্রিয়া হিসাবে ইনস্টল করা উচিত নয়। কোন জিনিসগুলি কখন ইনস্টল করা হবে তার উপর ব্যবহারকারীদের নিয়ন্ত্রণ বজায় রাখা উচিত। এটি ব্যবহারকারীদের যে টুকরোগুলি ইনস্টল করা হবে না তা চিন্তা না করেই তাদের প্রয়োজনীয় টুকরোগুলি আমদানি করতে দেয়৷
  • সরাসরি নতুন ফিল্ড ইনস্ট্যান্টিয়েট করার পরিবর্তে 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 ফাংশনে নিবন্ধন করুন৷
    • শীঘ্রই, ব্লকলি এমন সরঞ্জাম সরবরাহ করবে যা আপনাকে ত্রুটি ছাড়াই ইতিমধ্যে-নিবন্ধিত আইটেমগুলি নিবন্ধন করতে দেয়। ততক্ষণ পর্যন্ত, আপনি একটি এক্সটেনশন, মিউটেটর, মিক্সিন বা ফিল্ড নিবন্ধন করার আগে ইতিমধ্যে কী নিবন্ধিত হয়েছে তা পরীক্ষা করতে চাইতে পারেন।
    • আপনার প্লাগইন বা ব্লক সংজ্ঞা দ্বারা প্রয়োজনীয় যে কোনো পূর্বশর্ত বা নির্ভরতা সম্পর্কে পরিষ্কার থাকুন।
  • আপনার প্রদান করা প্রতিটি ব্লকের জন্য জেনারেটর ফাংশন প্রদান বিবেচনা করুন।

    • বক্সের বাইরে কাজ করে এমন জেনারেটর ফাংশন সরবরাহ করা ব্যবহারকারীদের জন্য তাদের গঠন এবং নকশা না বুঝেই আপনার ব্লকগুলি ব্যবহার করা সহজ করে তোলে। যদি তাদের নিজস্ব জেনারেটর ফাংশন লিখতে হয়, তাহলে প্রতিটি ব্যবহারকারীর দ্বারা অপ্রয়োজনীয় কাজ করা হতে পারে।
    • জাভাস্ক্রিপ্ট হল ব্লকলিতে সবচেয়ে বেশি ব্যবহৃত ভাষা, তাই আপনি যদি প্রদান করার জন্য শুধুমাত্র একটি ভাষা বেছে নেন, তাহলে আমরা জাভাস্ক্রিপ্ট সুপারিশ করি, যদি না আপনার ব্লকগুলি একটি নির্দিষ্ট ভাষার জন্য তৈরি করা হয় যেমন একটি পাইথন লাইব্রেরি বাস্তবায়ন করা।
    • যে ভাষাগুলির জন্য আপনি জেনারেটর ফাংশনগুলি বাস্তবায়ন করতে অক্ষম হন তাদের জন্য 'হেল্প ওয়ান্টেড' সমস্যাগুলি পোস্ট করার কথা বিবেচনা করুন এবং যদি কোনও ব্যবহারকারী তাদের অবদান রাখে তবে সেগুলির জন্য পুল অনুরোধগুলি গ্রহণ করুন৷
    • আপনি যদি আপনার ব্লকের জন্য একটি ইনস্টল ফাংশন প্রদান করেন, আপনি একটি ঐচ্ছিক 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});
      

প্রতিক্রিয়া

কীভাবে আপনার প্লাগইনে এই নির্দেশিকাগুলিকে সর্বোত্তমভাবে অনুসরণ করবেন সে সম্পর্কে আপনার যদি প্রশ্ন থাকে, তাহলে ফোরামে আমাদের জানান! আমরা আপনার ব্লক লাইব্রেরি দেখতে এবং সেগুলিতে প্রতিক্রিয়া জানাতে চাই।

মনে রাখবেন যে সমস্ত প্রথম পক্ষের প্লাগইনগুলি যেগুলি ব্লক সংজ্ঞা প্রদান করে সেগুলি বর্তমানে এই নির্দেশিকাগুলি অনুসরণ করে না, তবে নতুন প্লাগইনগুলি হবে এবং আমরা বিদ্যমান প্লাগইনগুলি স্থানান্তর করার পরিকল্পনা করি৷