# 自定义连接检查器

使用 Blockly 的一个核心收益,是它能保证生成代码在语法层面正确。

连接检查器(Connection Checker)负责执行 Blockly 关于“哪些连接可兼容”的规则。
默认检查器使用的是一个简单类型系统,见连接检查

# 检查层级

Blockly 会应用三层检查:安全检查、类型检查、拖拽检查。

# 安全检查

安全检查用于保证块位于同一工作区、连接来自不同块等基础约束,避免 Blockly 进入错误状态。

它也会阻止明显不合理的组合,例如把两个 next 连接直接相连。

# 类型检查

开发者可以给连接打上类型标签。
类型检查会基于这些标签执行类型约束,例如阻止“期望数字的位置接入字符串”。

# 拖拽检查

拖拽检查只在“通过拖拽连接块”时生效,不影响程序化连接。
例如拖拽时只会考虑一定半径内的候选连接。

# 覆盖默认连接检查器

如果你希望自定义类型检查或拖拽检查逻辑,可以注册一个实现 IConnectionChecker 接口的替代检查器对象。

要自定义安全检查:重写 doSafetyChecks
doSafetyChecks (opens new window)

警告

一般不建议覆盖 Blockly 默认安全检查。

要自定义类型检查:重写 doTypeChecks
doTypeChecks (opens new window)

要自定义拖拽检查:重写 doDragChecks
doDragChecks (opens new window)

# 示例代码

可参考官方的 strict connection checker 插件示例:
strict connection checker plugin (opens new window)