注意,该栏资料仅适用于需要对软件核心功能进行开发与调整的开发者。过程涉及开发环境搭建,源代码编译等复杂操作,没有对软件底层功能修改的需求阅读此资料。
工程整体以 Node.js 开发,根据功能划分为多个子工程,并将代码以 npm 包的方式发布。其中核心的几个 npm 包为:
openblock-gui
基于 React 框架的前端用户界面。
openblock-vm
管理状态和运行后台逻辑代码,接收 GUI 的操作请求并发送状态和事件给 GUI。简要来说就是 GUI 中积木块执行或是于硬件交互等功能均是由 vm 来进行实际逻辑处理和发送到接口服务器的。
openblock-blocks
从 Google Blockly 项目创建的分支。这个仓库用于实现积木块的 UI 显示、逻辑功能以及代码生成功能。
openblock-link
通过为 openblock 提供本地硬件接口转发服务,以及运行本地的工具链与固件上传程序。
openblock-resource
通过为 openblock 提供本地的可动态修改与添加的扩展和设备等资源。
根据软件桌面版和在线版两个不同的部署方式,他们又被以两种方式进行打包和发布。
在桌面版中,所有软件包都在 openblock-desktop 中被调用,并通过 electron 打包为一个在本地独立运行的软件。
在线版部署方式是通过在服务器端部署 openblock-gui 内容,而后通过与在用户端安装的 openblock-agent 通讯来实现完整功能。其整体结构分为两个部分,他们之间通过网络连接。