Blok tanımı kitaplıkları sağlayan eklentiler, yeniden kullanılabilir bloklarınızı Blockly topluluğuyla paylaşmanın mükemmel bir yoludur. Blok kitaplığınızın mümkün olduğunca çok yönlü ve faydalı olmasını sağlamak için bu yönergeleri geliştirdik.
Yönergeler
- Kullanıcıların tüm bloklarınızı yüklemesini kolaylaştırın ve kullanıcıların yalnızca seçtikleri belirli blokları veya blok parçalarını yüklemelerini mümkün hale getirin.
- Her şeyin yüklenmesini kolaylaştırın: Bunu, tek bir blok tanımının gerektirdiği her parçayı (değişkenler, uzantılar, karmalar, alanlar vb.) yükleyen bir işlev sağlayarak yapabilirsiniz. Ayrıca, eklentiniz tarafından sunulan tüm blokları tek seferde yükleyen bir işlev de sağlayabilirsiniz.
- Belirli parçaların seçilmesini sağlayın: Bir blok tanımının tüm parçalarını ayrı ayrı dışa aktarmanız gerekir. Böylece, kullanıcıların kendi benzer özel bloklarını oluşturmak için yalnızca ihtiyaç duydukları parçaları içe aktarması mümkün olur.
- Eklentinizde yan efekt kullanmaktan kaçının.
- Bloklar, alanlar, uzantılar ve diğer parçalar, eklentinizi yüklemenin yan etkisi olarak yüklenmemelidir. Kullanıcılar, hangi öğelerin ne zaman yükleneceği üzerinde kontrol sahibi olmalıdır. Bu sayede kullanıcılar, taşınmayacak parçalardan korkmadan ihtiyaç duydukları parçaları içe aktarabilirler.
Yeni alanları doğrudan oluşturmak yerine JSON alan sicil defterini kullanın.
Önerilmez: Yeni bir alanı doğrudan örneklendirme:
const myCustomBlock = { init: function() { this.appendDummyInput() .appendField(new Blockly.FieldNumber(123), 'NAME'); } }
Önerilen - JSON alan sicil dairesi:
export const myCustomBlock = { init: function() { this.appendDummyInput() .appendField(Blockly.fieldRegistry.fromJson({ name: 'field_number', value: 123, }), 'NAME'); } }
Alan sicil defterini kullanmak, kullanıcıların blok tanımını değiştirmek zorunda kalmadan bloklarında kullanılan alanın uygulamasını değiştirmesini kolaylaştırır.
Kullanıcının önceden yüklediği uygulamalar hakkında varsayımlarda bulunmayın.
- Eklentiniz için özel bir alan veya başka bir eklenti gerekiyorsa bu alanları sağladığınız
install
işlevinde kendiniz kaydedin. - Blockly, yakında daha önce kayıtlı öğeleri hatasız bir şekilde kaydettirmenize olanak tanıyan araçlar sunacak. O zamana kadar, uzantı, değiştirici, karma veya alan kaydetmeden önce halihazırda kayıtlı olanları kontrol edebilirsiniz.
- Eklentiniz veya blok tanımlarınız için gereken tüm ön koşullar veya bağımlılıklar açıkça belirtilmelidir.
- Eklentiniz için özel bir alan veya başka bir eklenti gerekiyorsa bu alanları sağladığınız
Sağladığınız her blok için üretken işlevler sağlayabilirsiniz.
- Hazır olarak çalışan oluşturucu işlevleri sunmak, kullanıcıların yapılarını ve tasarımlarını anlamak zorunda kalmadan bloklarınızı kullanmasını kolaylaştırır. Kendi jeneratör işlevlerini yazmaları gerekirse her kullanıcının gereksiz işler yapmasına neden olabilir.
- JavaScript, Blockly'de en sık kullanılan dildir. Bu nedenle, yalnızca bir dil seçerseniz bloklarınız Python kitaplığı uygulamak gibi belirli bir dil için oluşturulmadığı sürece JavaScript'i kullanmanızı öneririz.
- Oluşturucu işlevlerini uygulayamadığınız diller için "yardım iste" sorunları yayınlayabilir ve kullanıcılar bu dillere katkıda bulunursa bu dillerle ilgili çekme isteklerini kabul edebilirsiniz.
Blokunuz için bir yükleme işlevi sağlarsanız isteğe bağlı bir
generators
parametresi kabul edebilirsiniz. Bir kullanıcı, desteklediğiniz bir oluşturucu örneği gönderirse blok kodu oluşturucu işlevini otomatik olarak yükleyebilir ve ayrılmış kelime ekleme gibi ilgili işlemleri yapabilirsiniz:// 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});
Geri bildirim
Eklentinizde bu yönergelere en iyi şekilde nasıl uyacağınız konusunda sorularınız varsa forumda bize bildirin! Blok kitaplıklarınızı görmek ve bunlarla ilgili geri bildirimde bulunmak isteriz.
Şu anda blok tanımları sağlayan tüm birinci taraf eklentilerinin bu yönergelere uymadığını ancak yeni eklentilerin bu yönergelere uyacağını ve mevcut eklentileri taşımayı planladığımızı unutmayın.