簡介
本頁說明呼叫函式和存取的最佳做法 管理 Deployment這些原則適用於建立 封鎖或整合 Blockly 至獨立應用程式。
進行子類別和擴充
Blockly 有多個新增功能的模式,包括:
- 子類別 (例如:建立新的轉譯器)
- 混合 (例如加入區塊擴充功能或異動器)
- 封鎖定義 (例如程序區塊定義)
就本文件的目的而言,這三種情況等同於 以及子類別
插入子類別
建議您透過 Blockly.inject
方法取代特定類別。這些
子類別必須擴充基礎類別,或實作其相應的
存取 API
您可以將子類別傳遞至插入方法。
Blockly.inject('blocklyDiv', {
plugins: {
'metricsManager': CustomMetricsManagerClass
}
}
您也可以使用 Blockly.registry
註冊課程,然後使用
插入類別的註冊資料庫名稱。如果您要儲存插入內容
做為純 JSON 格式
Blockly.registry.register(Blockly.registry.Type.METRICS_MANAGER, 'YOUR_NAME', SubClass);
Blockly.inject('blocklyDiv', {
plugins: {
'metricsManager': 'YOUR_NAME'
}
}
下列類別可取代:
註冊名稱 | 介面/基礎類別 |
---|---|
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 |
如要進一步瞭解如何使用介面,請參閱介面相關章節 其他文件
顯示設定
我們會使用 TypeScript 存取修飾符
將核心程式庫中的瀏覽權限標示為 public
、private
或 protected
。
部分屬性在屬性中可能會以 @internal
加註
TsDoc 註解。
所有 public
和 protected
屬性都已記錄在
Blockly 網站的「References」部分。你也可以
讀取程式碼以檢查瀏覽權限
公開
任何標示為 public
的項目都屬於我們的公用 API 的一部分。模組中的任何屬性
沒有瀏覽權限修飾符會視為公開。
我們盡量不頻繁或在缺乏理由的情況下變更公用 API。 警告。例外狀況:我們可能會在一個版本中公開新的 API,然後 並根據早期意見回饋在下一個版本中進行修改。接著, 視為公共函式或屬性穩定
公開函式可從任何位置呼叫,並於子類別中覆寫為 只要簽名沒有變更
受保護的
受保護的函式和屬性僅能由定義的類別或 子類別
子類別可以覆寫受保護的函式和屬性, 變更類型簽名。
舉例來說,擴充基本轉譯器類別的自訂轉譯器或許能夠存取 受保護的屬性。
無論是在何種情況下,您都必須瞭解函式或屬性的運作方式 其餘部分使用這項資訊
不公開
您只能使用定義所在檔案中的程式碼存取這些檔案。直接 存取這些屬性可能導致未定義的行為。
子類別不得覆寫不公開函式和屬性。
私有地產如有變更,恕不事先通知。 做為 Blockly 的公用 API 的一部分
Blockly 中的某些函式不會顯示可視註解,因為 不會從模組匯出這些函式基本上是本機變數 且無法在其定義的模組之外使用這些情況應納入考量 相當於私有財產
內部
內部函式和屬性適合在核心中使用
但非外部已透過 TsDoc @internal
標示
註解。
內部資源如有變更,恕不事先通知。 做為 Blockly 的公用 API 的一部分
您可以從核心內的任何位置存取內部資源,並覆寫位於 子類別,只要簽章不會變更即可。不得 從核心程式庫外部存取
已淘汰
不應使用標示為 @deprecated
的任何項目。大多數的淘汰項目包括
並列在控制台警告或 TSDoc 中。
已淘汰的函式會盡可能記錄包含 預定的刪除日期,以及用來呼叫替換函式的建議。
常見問題
如果我想使用的函式不是公開,該怎麼辦?
提出功能要求 核心方塊上的所有內容請提供用途說明及內容說明 您希望我們設為公開
我們會使用這項功能要求討論是否要公開產品; 你可以透過其他方式取得相同的資訊
一旦決定公開影片,您或 Blockly 小組都會將 並將於下次的 Blockly 版本中上線。
如果您選擇在外掛程式中使用非公開的成員,請考慮將
做為 Beta 版外掛程式,並在 README
中加入資訊。
那機器猿族呢?
閱讀 Monkeypatching 相關說明。
Monkeypatch 並不安全,因為修補程式可能會在未通知的情況下停止運作 使用 Blockly API 的非公開部分外掛程式中的修補功能 特別是您的程式碼可能與任何其他物件互動 不過都很危險 安裝相同程式碼的 Monkey 外掛程式。因此,我們強烈 建議不要在應用程式和第三方外掛程式中使用 Monkeypatching 不接受第一方外掛程式。
我可以覆寫公開函式嗎?
建立子類別時:是。否則:不算,那是猴子修補
我可以覆寫受保護的函式嗎?
建立子類別時:是。否則:不算,那是猴子修補
可以覆寫內部或私人函式嗎?
不,那是太空猿族。
何時可以直接存取資源?何時該使用 getter 或 setter?
如果我們發布 getter 或 setter,請使用 getter 或 setter,不要直接 存取資源。如果不是公開房源,則一定會使用 getter 和 setter
如果屬性沒有註解,該怎麼辦?
這個欄位會預設為公開,但為了方便我們 getter/setter 配對
如果函式沒有註解,該怎麼辦?
這項資訊預設為公開。
如果我還是不確定,該怎麼辦?
在論壇中提問 我們通常會在一個工作天內回覆您。