在另一个javascript引擎(不是node.js平台)中运行noflo.js的可行性

时间:2014-09-23 15:42:28

标签: noflo

我们正在使用简单的javascript引擎评估 noflo 在嵌入式Linux机器上执行,是一个解释器(没有JIT)。在我们的例子中,Node.js引擎(带有嵌入式V8引擎)可能过于耗费资源。

当前的问题是如何在那里运行noflo运行时。检查GitHub存储库(https://github.com/noflo/noflo)并使用grunt,我们使用 grunt build:browser 为浏览器生成了noflo。

作为实际尝试运行生成的 browser / noflo.js 文件的简单示例,我使用d8 shell(V8引擎shell)作为Node.js Universe之外的隔离Javascript引擎,并且将以下代码附加到noflo.js生成的文件中:

var fbpData = "<some FBP language connections>";

var noflo = require('noflo');
noflo.graph.loadFbp(fbpData, function(graph) {
    print("Graph loaded");
});

然后, d8 noflo.js

Linux shell上的

报告

rtm.js:9559: TypeError: undefined is not a function
noflo.graph.loadFbp(fbpData, function(graph) {
            ^
TypeError: undefined is not a function
at rtm.js:9559:13

在不进一步了解的情况下,让我相信noflo.js并非自包含所有核心noflo运行时功能。

这里缺少哪些必要的步骤,让我在一个独立的JS引擎中运行noflo库(V8只是一个例子 - 它可以是任何符合ECMA V5标准的引擎)

noflo项目网站上的所有代码示例都是针对Node.js ...

量身定制的

PS:我尝试过从http://noflojs.org/download/构建基于浏览器的noflo,但这总是会返回&#34;服务器错误&#34;。

祝你好运

Gunther Strube

3 个答案:

答案 0 :(得分:1)

NoFlo-Gnome项目包含noflo-runtime-base存储库(https://github.com/noflo/noflo-runtime-base)的浏览器构建,它本身嵌入了NoFlo。

您可能需要添加一些别名,因为浏览器构建不一定适合您的引擎:https://github.com/noflo/noflo-gnome/blob/master/src/noflo.js#L89

答案 1 :(得分:0)

noflo-gnomeGJS中运行NoFlo,它基于Spidermonkey和GLib / GObject。

它具有一些最小的require()兼容性,允许拉入NoFlo。在./src/libs中有一个已检入的noflo(+ noflo-runtime-base)版本,但我没有立即找到它是如何创建的。

答案 2 :(得分:0)

如果您正在考虑使用浏览器版本来加快启动时间,您可能还需要查看:https://github.com/djdeath/noflo-iot 在某些时候,我试图在I / O非常慢的板上运行NoFlo。事实证明,单个文件压缩的​​NoFlo构建(包括所有需要的组件)明显更快。