我想在 Node.js 上 block 运行,让代码直接在服务器上执行(包括逐 block 执行),而不需要先保存 XML 然后在后台运行它;我尝试了 npm 上的一些模块,但没有一个能满足我的要求,或者它只是运行预先生成的 XML。
有什么想法吗?
最佳答案
以下是在服务器上执行的步骤:
1) 安装node.js的xmldom
模块:
$ npm install xmldom
2) 克隆谷歌的 Closure 库 ( github )。确保克隆的目录名为“closure-library”,并且与您的 block 项目位于同一目录级别,如下所示:( image link )
3) 在您的 blockly 项目文件夹中添加一个 javascript generate.js
。注意这里我使用blockly xml来生成python代码。您需要根据您使用的发电机类型调整第 7-10 行。
global.DOMParser = require('xmldom').DOMParser;
global.Blockly = require('./blockly_uncompressed.js');
require('./blocks/math.js');
require('./blocks/text.js');
require('./blocks/lists.js');
require('./generators/python.js');
require('./generators/python/math.js');
require('./generators/python/text.js');
require('./generators/python/lists.js');
require('./msg/messages.js');
var fs = require('fs');
var xmlText = process.argv[2];
try {
var xml = Blockly.Xml.textToDom(xmlText);
// Create a headless workspace.
var workspace = new Blockly.Workspace();
Blockly.Xml.domToWorkspace(workspace, xml);
var code = Blockly.Python.workspaceToCode(workspace);
console.log(code);
} catch (e) {
console.log(e);
}
4) 最后,使用预先生成的 XML 字符串在 generate.js
上运行 node.js:
$ node generate.js '<xml>...</xml>'
引用:
关于javascript - Blockly 在 Node.js 上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39385916/