本文详解如何通过标准 html 结构加载 blockly 库、注入自定义积木定义(由 blockly factory 生成),并正确配置工作区与工具箱,避免因脚本加载顺序、dom 元素 id 不匹配或 toolbox 格式错误导致的运行时异常。
本文详解如何通过标准 html 结构加载 blockly 库、注入自定义积木定义(由 blockly factory 生成),并正确配置工作区与工具箱,避免因脚本加载顺序、dom 元素 id 不匹配或 toolbox 格式错误导致的运行时异常。
要在网页中成功使用 Blockly Factory 生成的自定义积木(如 color_rgb),关键在于确保三要素协同工作:Blockly 运行时库正确加载、积木定义代码提前执行、工作区注入时 toolbox 配置格式合规。以下是经过验证的完整实现方案:
<!DOCTYPE html><html><head> <meta charset="utf-8"> <title>Blockly Custom Block Demo</title> <!-- 1. 优先加载 Blockly 核心库 --> <script src="https://unpkg.com/blockly/blockly.min.js"></script> <!-- 2. 加载自定义积木定义(必须在 Blockly 后、inject 前) --> <script src="index.js"></script> <style> html, body { height: 100%; margin: 0; } body { background-color: #fff; font-family: sans-serif; overflow: hidden; } #blocklyDiv { height: 90vh; /* 推荐使用 vh 单位替代 %,避免父容器高度未定义问题 */ width: 100%; } </style></head><body> <!-- 3. 唯一且匹配的容器 --> <div id="blocklyDiv"></div> <!-- 4. 初始化工作区(务必在 DOM 加载后执行) --> <script> const toolbox = { kind: 'flyoutToolbox', contents: [{ kind: 'block', type: 'color_rgb' // 此 type 必须与 index.js 中 define 的 type 完全一致 }] }; const workspace = Blockly.inject('blocklyDiv', { toolbox: toolbox, scrollbars: true, trashcan: true }); </script></body></html>
遵循以上结构,即可稳定加载 Blockly Factory 生成的自定义积木,为后续扩展图形化编程能力奠定坚实基础。