Blockly API'lerini kullanma

Giriş

Bu sayfada, işlevleri çağırma ve erişme ile ilgili en iyi uygulamalar açıklanmaktadır. özellikleri hakkında daha fazla bilgi edinin. Bu ilkeler, veya Blockly'nin bağımsız bir uygulamaya entegre edilmesi.

Alt sınıflandırma ve genişletme

Blockly'nin işlev eklemek için birden fazla paradigması vardır. Örneğin:

  • Alt sınıflar (ör. yeni oluşturucu oluşturma)
  • Karışımlar (ör. blok uzantısı veya mutatör ekleme)
  • Blok tanımları (ör. prosedür bloku tanımları)

Bu belgenin amaçları doğrultusunda, üç husus da eşdeğerdir alt sınıflama.

Alt sınıf ekleme

Belirli sınıfların Blockly.inject yöntemiyle değiştirilmesini destekliyoruz. Bu alt sınıflar ya temel sınıfı genişletmeli ya da karşılık gelen arayüzü.

Alt sınıfınızı inject yöntemine aktarabilirsiniz.

Blockly.inject('blocklyDiv', {
  plugins: {
    'metricsManager': CustomMetricsManagerClass
  }
}

Dilerseniz sınıfınızı Blockly.registry uygulamasını kullanarak kaydettirebilir ve sınıfa eklenecek kayıt defteri adı. Bu, yerleştirme verilerinizi depoluyorsanız yararlı olur yalnızca JSON biçimindedir.

Blockly.registry.register(Blockly.registry.Type.METRICS_MANAGER, 'YOUR_NAME', SubClass);

Blockly.inject('blocklyDiv', {
  plugins: {
    'metricsManager': 'YOUR_NAME'
  }
}

Aşağıdaki sınıflar değiştirilebilir:

Kayıt Adı Arayüz/Temel Sınıf
blockDragger Blockly.IBlockDragger
connectionChecker Blockly.IConnectionChecker
connectionPreviewer Blockly.IConnectionPreviewer
flyoutsVerticalToolbox Blockly.IFlyout
flyoutsHorizontalToolbox Blockly.IFlyout
metricsManager Blockly.IMetricsManager
renderer Blockly.blockRendering.Renderer
toolbox Blockly.IToolbox

Arayüzleri kullanma hakkında daha fazla bilgi için arayüzler bölümüne bakın inceleyebilirsiniz.

Görünürlük

TypeScript erişim değiştiricileri tuşuna basarak temel kitaplıktaki görünürlüğü public, private veya protected olarak işaretleyin. Bazı mülklerde @internal ek açıklaması olabilir TsDoc yorumları.

Tüm public ve protected özellikleri Blockly web sitesinin Referanslar bölümü. Ayrıca transkriptinizi görünürlüğü kontrol etmek için kodu okuyun.

herkese açık

public olarak işaretlenen her şey, herkese açık API'mizin bir parçasıdır. Bir modüldeki herhangi bir mülk reklamlar herkese açık olarak değerlendirilir.

Genel API'mizi sık sık veya geçerli bir neden olmaksızın değiştirmemeye ve uyarı. İstisna: Yeni bir API'yi bir sürümde herkese açık hale getirebilir, erken geri bildirimlere yanıt olarak bir sonraki sürümde değiştirebilirsiniz. Bu tarihten sonra kamu yararına çalışan bir görevi veya mülkü olan

Herkese açık işlevler herhangi bir yerden çağrılabilir ve alt sınıflarda (İmza değişmediği sürece)

korumalı

Korumalı işlevlere ve özelliklere yalnızca tanımlayıcı sınıf veya alt sınıftır.

Alt sınıfların, korumalı işlevleri ve özellikleri geçersiz kılmasına izin verilir. ve farklı tür imzaları değiştirebilirsiniz.

Örneğin, temel oluşturucu sınıfını genişleten bir özel oluşturucu, sahip olmayabilir.

Her durumda, işlevin veya özelliğin nasıl çalıştığını anladığınızdan kodun geri kalanında kullanılır.

gizli

Bunlara yalnızca tanım ile aynı dosyadaki kodla erişilebilir. Doğrudan bu özelliklere erişmek tanımlanmamış davranışlara neden olabilir.

Alt sınıfların, özel işlevleri ve özellikleri geçersiz kılmasına izin verilmez.

Özel mülkler uyarı olmaksızın değiştirilebilir. Blockly'nin herkese açık API'sinin bir parçası olarak kabul edilir.

Blockly'deki bazı işlevlerde görünürlük ek açıklamaları bulunmaz, çünkü dışa aktarılmıyor. Bu işlevler aslında ve tanımlayıcı modülünün dışında kullanılamaz. Değerlendirme araçları, özel mülklere eşdeğerdir.

internal

Dahili işlevler ve özelliklerin çekirdek uygulamanın içinde kullanılması erişilebilir ancak harici olarak değil. Bu sayfalar TsDoc ile tanımlanmıştır @internal ek açıklaması da yer alır.

Dahili özellikler önceden uyarı yapılmaksızın değiştirilebilir. Blockly'nin herkese açık API'sinin bir parçası olarak kabul edilir.

Dahili mülklere çekirdek içindeki herhangi bir yerden erişilebilir ve temelde alt sınıflara yer verir. Farklı olmalıdır temel kitaplığın dışından erişilir.

desteği sonlandırıldı

@deprecated olarak işaretlenen hiçbir şey kullanılmamalıdır. Kullanımdan kaldırma işlemlerinin çoğu şunları içerir: tercih edilen koda ilişkin talimatları, bir konsol uyarısında veya TSDoc'ta paylaşın.

Mümkün olduğunda, kullanımdan kaldırılan işlevler şunu içeren bir uyarı kaydeder: amaçlanan silme tarihi ve çağrılacak yerine kullanılacak bir işlev önerisi.

SSS

Kullanmak istediğim işlev herkese açık değilse ne olur?

Özellik isteğinde bulunma temel Blockly'de. Kullanım alanınızın açıklamasını ekleyin ve herkese açık hale getirmemizi istiyorsunuz.

Bu özelliği, videonun herkese açık mı yoksa herkese açık mı olacağıyla ilgili istekte bulunmak için kullanırız. için başka yollar olup olmadığına bakın.

Bu içeriği herkese açık hale getirmeye karar verirsek siz veya Blockly ekibi ve bir sonraki Blockly sürümünde yayınlanır.

Bir eklentide herkese açık olmayan bir üye kullanmayı tercih ederseniz eklentisini beta sürümünde kullanıp README dosyanıza bilgileri dahil edebilirsiniz.

Maymun yamasıyla ilgili ne diyebiliriz?

Monkeypatching hakkında daha fazla bilgi edinin.

Yamalar önceden haber verilmeksizin çalışmayı durdurabileceğinden Monkey yama uygulaması güvenli değildir herkese açık olmayan parçalarını kullanmaya devam edebilirsiniz. Eklentiye yama yapmak kodunuz, başka yazılımlarla kötü etkileşim kurabileceğinden eklentisidir. Bu nedenle, biz kesinlikle uygulamalarda ve üçüncü taraf eklentilerinde monkeypatching'e karşı tavsiyede bulunursanız ve , birinci taraf eklentilerinde kabul etmez.

Herkese açık işlevleri geçersiz kılabilir miyim?

Alt sınıflandırma yaparken: evet. Diğer bir deyişle: hayır, maymun yama yapmak anlamına gelir.

Korunan işlevleri geçersiz kılabilir miyim?

Alt sınıflandırma yaparken: evet. Diğer bir deyişle: hayır, maymun yama yapmak anlamına gelir.

Dahili veya özel işlevleri geçersiz kılabilir miyim?

Hayır, maymun yamalama.

Mülklere doğrudan ne zaman erişebilirim? Ne zaman bir alıcı veya setter kullanmalıyım?

Bir alıcı veya belirleyici yayınlıyorsak, lütfen doğrudan yerine Mülke erişmek. Tesis herkese açık değilse kesinlikle alıcıları kullanın ve belirleyiciler.

Bir mülkte ek açıklama yoksa ne olur?

Varsayılan olarak herkese açıktır, ancak belirleyici çift olacaktır.

Bir işlevin ek açıklaması yoksa ne olur?

Varsayılan olarak herkese açıktır.

Hâlâ emin değilsem ne olur?

Forumda soru sorma Genellikle bir iş günü içinde size geri döneriz.