এক্সটেনশন এবং মিশ্রণ

এক্সটেনশন হল ফাংশন যা শুরু করার সময় ব্লকে চালানো হয়। এগুলি প্রায়শই একটি ব্লকে কিছু কাস্টম কনফিগারেশন বা আচরণ যুক্ত করে। Mixins আপনাকে একটি ব্লকে বৈশিষ্ট্য বা সহায়ক ফাংশন যোগ করার অনুমতি দেয়, কিন্তু অবিলম্বে সেগুলি চালায় না।

আপনি যখন JSON এর সাথে একটি ব্লক সংজ্ঞায়িত করেন তখন আপনাকে শুধুমাত্র এক্সটেনশন বা মিক্সিন ব্যবহার করতে হবে। আপনি যদি একটি ব্লককে সংজ্ঞায়িত করতে JavaScript ব্যবহার করেন, আপনি init এ সরাসরি ইনিশিয়ালাইজেশন ফাংশন কল করতে পারেন এবং সংজ্ঞায় সরাসরি পদ্ধতি বা বৈশিষ্ট্য যোগ করতে পারেন।

এক্সটেনশন

এক্সটেনশন হল ফাংশন যা ব্লক তৈরি হওয়ার সাথে সাথে প্রদত্ত ধরণের প্রতিটি ব্লকে চলে। উদাহরণস্বরূপ, তারা কাস্টম কনফিগারেশন যোগ করতে পারে (যেমন ব্লকের টুলটিপ সেট করা) বা কাস্টম আচরণ (যেমন ব্লকে একটি ইভেন্ট লিসেনার যোগ করা)।

// This extension sets the block's tooltip to be a function which displays
// the parent block's tooltip (if it exists).
Blockly.Extensions.register(
    'parent_tooltip_extension',
    function() { // this refers to the block that the extension is being run on
      var thisBlock = this;
      this.setTooltip(function() {
        var parent = thisBlock.getParent();
        return (parent && parent.getInputsInline() && parent.tooltip) ||
            Blockly.Msg['MATH_NUMBER_TOOLTIP'];
      });
    });

এক্সটেনশনগুলিকে "নিবন্ধিত" করতে হবে যাতে তারা একটি স্ট্রিং কী এর সাথে যুক্ত হতে পারে। তারপর আপনি ব্লকে এক্সটেনশনটি প্রয়োগ করতে আপনার ব্লক প্রকারের JSON সংজ্ঞার extensions বৈশিষ্ট্যে এই স্ট্রিং কীটি বরাদ্দ করতে পারেন।

{
 //...,
 "extensions": ["parent_tooltip_extension",]
}

আপনি একবারে একাধিক এক্সটেনশন যোগ করতে পারেন। মনে রাখবেন যে extensions সম্পত্তি অবশ্যই একটি অ্যারে হতে হবে, এমনকি যদি আপনি শুধুমাত্র একটি এক্সটেনশন প্রয়োগ করেন।

{
  //...,
  "extensions": ["parent_tooltip_extension", "break_warning_extension"],
}

মিক্সিন

ব্লকলি এমন পরিস্থিতিগুলির জন্য একটি সুবিধার পদ্ধতিও প্রদান করে যেখানে আপনি একটি ব্লকে কিছু বৈশিষ্ট্য/হেল্পার ফাংশন যোগ করতে চান, কিন্তু অবিলম্বে সেগুলি চালান না। এটি আপনাকে একটি মিক্সিন অবজেক্ট রেজিস্টার করার অনুমতি দিয়ে কাজ করে যাতে আপনার সমস্ত অতিরিক্ত বৈশিষ্ট্য/পদ্ধতি রয়েছে। তারপরে মিক্সিন অবজেক্টটি একটি ফাংশনে মোড়ানো হয় যা প্রদত্ত ব্লক টাইপের একটি উদাহরণ তৈরি করা হলে প্রতিবার মিক্সিন প্রয়োগ করে।

Blockly.Extensions.registerMixin('my_mixin', {
  someProperty: 'a cool value',

  someMethod: function() {
    // Do something cool!
  }
))`

মিক্সিনের সাথে যুক্ত স্ট্রিং কীগুলি অন্য যেকোনো এক্সটেনশনের মতোই JSON-এ উল্লেখ করা যেতে পারে।

{
 //...,
 "extensions": ["my_mixin"],
}