Uygulama tasarlarken seçebileceğiniz birkaç paradigma vardır ve Blockly'yi kullanır. Bu tercihler göz önünde bulundurularak kullanıcının ihtiyaç duyacağı blokları etkilediği için erkenden çalışır.
Yapılandırma
Birçok Blockly uygulaması, yapılandırmaları tanımlamak için kullanılır. programlardan daha etkilidir. Yapılandırma uygulamaları genellikle Çalışma alanında bir kök düzeyinde blok başlatılıyor. Buna iyi bir örnek Blockly Geliştirici Araçları'nın Block Factory sekmesi:
Blockly.Blocks['factory_base'] = {
init: function() {
this.setDeletable(false);
this.setMovable(false);
this.setEditable(false);
// etc...
}
}
Blockly.serialization.blocks.append({'type': 'factory_base'}, workspace);
Bu, her şeyi içeren silinmeyen, taşınamayan bir blok oluşturur. yapılandırdığınızdan emin olun. Çalışma alanı herhangi bir zamanda seri hale getirilebilir kullanın.
Bu tür uygulamalar, etkinleştirilmeyen tüm blokları otomatik olarak devre dışı bırakmak bağlı olur. Bu, tek bir satırdan yapılabilir:
workspace.addChangeListener(Blockly.Events.disableOrphans);
Seri Program
Blockly uygulamalarının çoğu, büyük ölçekli uygulamaların çoğunda seri oluşturmak üzere programlarında yer alır. Kullanıcılar sırayla yürütülen blokları bir araya getirir.
Çalışma alanındaki her (devre dışı bırakılmamış) engelleme, çok önemli. Birden fazla blok yığını varsa daha yüksek olanlar çalıştırılmalıdır. (İki grup yaklaşık olarak aynı yüksekliğe sahipse soldaki yığınlara (sağdan sola) öncelik verilir.)
Çalışma alanı herhangi bir zamanda yürütülebilir koda aktarılabilir. Bu kod JavaScript'te istemci tarafında yürütülebilir (eval veya JS kullanılarak çevirmen) veya sunucu tarafında oturum açmanız gerekir.
import {javascriptGenerator} from 'blockly/javascript';
var code = javascriptGenerator.workspaceToCode(workspace);
Paralel Program
Bazı Blockly uygulamaları, tüm blok yığınlarını paralel hale getirmektir. Bir müzik uygulaması buna örnek olarak melodi ile eş zamanlı olarak davul döngüsü yürütülüyor.
Paralel yürütme uygulamanın bir yolu, her bir veri türü için kod tek tek engelle:
import {javascriptGenerator} from 'blockly/javascript';
var json = Blockly.serialization.workspaces.save(workspace);
// Store top blocks separately, and remove them from the JSON.
var blocks = json['blocks']['blocks'];
var topBlocks = blocks.slice(); // Create shallow copy.
blocks.length = 0;
// Load each block into the workspace individually and generate code.
var allCode = [];
var headless = new Blockly.Workspace();
for (var i = 0; block < topBlocks.length; i++) {
var block = topBlocks[i];
blocks.push(block);
Blockly.serialization.workspaces.load(json, headless);
allCode.push(javascriptGenerator.workspaceToCode(headless));
blocks.length = 0;
}
Hedef dil JavaScript ise allCode
dizisi
Aynı anda yürütmeye yönelik birden fazla JS Çevirmeni oluşturmak için kullanılır. Eğer
hedef dil Python gibi bir şey olur, ardından allCode
dizisi
iş parçacığı modülü kullanan tek bir programda birleştirilebilir.
Her paralel programda olduğu gibi, program yönetiminde de değişkenler ve işlevler gibi paylaşılan kaynaklar.
Etkinlik Odaklı Program
Etkinlik işleyiciler, yalnızca sistem tarafından çağrılan işlevlerdir. daha fazla bilgi edindiniz. Bu bloklar, veya bir yığının üstünde duran başlıklar olabilir. oluşturuyor.
Bazı geliştiriciler, bu görevleri
ve diğer bloklardan farklı görünüyorlar. Bu, varsayılan görünüm değil
Blockly, ancak oluşturucu sabitini geçersiz kılarak eklenebilir
ADD_START_HATS
- true
(Özel oluşturucular codelab'i - Sabit değerleri geçersiz kıl).
veya blok stilinde şapka seçeneği
ayarlayarak başlayabilirsiniz. Daha fazla
temaların parçası olarak bloklara şapka takmayla ilgili bilgiler bulabilirsiniz
burada bulabilirsiniz.
Etkinlik odaklı modellerde, aynı zamanda bir işleyici de eklemek bahsetmek istiyorum. Bu modelde, çalışma alanındaki hiçbir engelleme bağlı olması yok sayılır ve yürütülmez.
Etkinliklerden yararlanan bir sistem tasarlarken, bu sistemlerin aynı olayın birden fazla örneğini desteklemek mümkün veya istenen gösterir.