ब्लॉक की परिभाषा एक ऐसा ऑब्जेक्ट है जो कस्टम ब्लॉक के बारे में बताता है. उदाहरण के लिए, यह ब्लॉक के लुक ऐंड फ़ील (टेक्स्ट, फ़ील्ड, कनेक्शन, रंग वगैरह) के साथ-साथ उसके व्यवहार (ब्लॉक-लेवल इवेंट हैंडलर वगैरह) के बारे में भी बताता है.
उदाहरण के लिए, यह ब्लॉक:

इसे JSON या JavaScript में इस तरह तय किया जा सकता है:
JSON
Blockly.common.defineBlocksWithJsonArray([{
"type": "string_length",
"message0": 'length of %1',
"args0": [
{
"type": "input_value",
"name": "VALUE",
"check": "String"
}
],
"output": "Number",
"colour": 160,
"tooltip": "Returns number of letters in the provided text.",
"helpUrl": "http://www.w3schools.com/jsref/jsref_length_string.asp"
}]);
defineBlocksWithJsonArray फ़ंक्शन, JSON ऑब्जेक्ट से ब्लॉक की परिभाषा बनाता है.
JavaScript
Blockly.Blocks['string_length'] = {
init: function() {
this.appendValueInput('VALUE')
.setCheck('String')
.appendField('length of');
this.setOutput(true, 'Number');
this.setColour(160);
this.setTooltip('Returns number of letters in the provided text.');
this.setHelpUrl('http://www.w3schools.com/jsref/jsref_length_string.asp');
}
};
JavaScript का इस्तेमाल करने पर, ब्लॉक की परिभाषा सीधे तौर पर बनाई जाती है.
ब्लॉक की परिभाषाएं कैसे काम करती हैं
ब्लॉक की परिभाषा, मिक्सइन होती है. इसमें फ़ंक्शन-वैल्यू वाली प्रॉपर्टी शामिल होती हैं. नया ब्लॉक इंस्टैंशिएट होने पर, इन प्रॉपर्टी को नए बनाए गए ब्लॉक ऑब्जेक्ट में कॉपी किया जाता है. Blockly, कस्टम व्यवहार को लागू करने के लिए इन फ़ंक्शन को कॉल करता है.
परिभाषा वाले फ़ंक्शन, ब्लॉक ऑब्जेक्ट में मिक्स किए जाते हैं. इसलिए:
- परिभाषा वाले फ़ंक्शन में
thisकीवर्ड, ब्लॉक ऑब्जेक्ट को दिखाता है. इसका मतलब है कि इसका इस्तेमाल, सार्वजनिक तरीकों और प्रॉपर्टी को ऐक्सेस करने के लिए किया जा सकता हैBlock(याBlockSvg) क्लास में मौजूद.
Blockly, कुछ ऐसे फ़ंक्शन तय करता है जिनका इस्तेमाल, ब्लॉक को पसंद के मुताबिक बनाने के लिए किया जा सकता है. इनमें सबसे आम फ़ंक्शन init है. Blockly, किसी ब्लॉक को शुरू करने के लिए इसे कॉल करता है. इसका इस्तेमाल, ब्लॉक के लुक ऐंड फ़ील को तय करने के लिए किया जाता है. पूरी सूची देखने के लिए, फ़ंक्शन-वैल्यू वाली प्रॉपर्टी देखें जो
Block और
BlockSvg क्लास में मौजूद हैं.
ये प्रॉपर्टी, ब्लॉक की परिभाषाओं के लिए एक इंटरफ़ेस बनाती हैं. इनमें से सभी प्रॉपर्टी ज़रूरी नहीं हैं.
ब्लॉक की परिभाषाओं में कस्टम फ़ंक्शन भी हो सकते हैं. हालांकि, Blockly इन्हें सीधे तौर पर कॉल नहीं करेगा. इसके बजाय, इनका इस्तेमाल अन्य फ़ंक्शन लागू करने के लिए किया जा सकता है. उदाहरण के लिए, ब्लॉक-लेवल इवेंट हैंडलर (Block.onchange प्रॉपर्टी), अलग-अलग कस्टम फ़ंक्शन को अलग-अलग इवेंट सौंप सकता है.
ब्लॉक की परिभाषाएं बनाने का तरीका
ब्लॉक की परिभाषाएं बनाने के कई तरीके हैं:
- अपने ब्लॉक के लुक ऐंड फ़ील को तय करने के लिए, Blockly डेवलपर टूल का इस्तेमाल करें. जनरेट किए गए JSON या JavaScript को अपने कोड में कॉपी करें और ज़रूरत के हिसाब से कस्टम कोड जोड़ें. ज़्यादा जानकारी के लिए, Blockly डेवलपर टूल देखें.
- इसी तरह का कोई ब्लॉक ढूंढें, उसकी परिभाषा कॉपी करें, और ज़रूरत के हिसाब से उसमें बदलाव करें. ज़्यादा जानकारी के लिए, मौजूदा परिभाषाओं में बदलाव करना देखें.
- ब्लॉक की परिभाषा खुद लिखें. ज़्यादा जानकारी के लिए, JSON और JavaScript देखें.