Hlang
A Flow-based programming language for universal applications.
Hlang aims to make programming easier, faster and more comfortable. It avoids coding, repetition and frustration.
Feature
-
😊 基于Rxjs
,遵循FBP
范式,因此可以获得强大的逻辑流编排能力,支持sub flow
抽象,支持多Readable
节点构成的Flow
进行拓扑执行,支持循环节点等复杂逻辑节点,可以无缝对接Rxjs Operator
进行复杂网关逻辑
节点的开发 -
🚀 丰富的Node
生态,Node
节点开发流程丝滑顺畅,配套成熟的开发者工具 -
👬 Readable
|Writable
|Transform
三种核心的Node
类型,对熟悉Node.js Stream
的开发者心智友好 -
✊ 生产环境配套支持,支持裸进程flow
部署,配套 Node.js 服务端运行时Parser
,可以支持逼近AKKA
的高可用特性
😊
How To Use
const {
Flow,
ReadableNode,
WriteableNode,
TransformNode,
Port,
} = require("@hspider/runtime");
const flowIns = new Flow();
class OneReadableNode extends ReadableNode {
constructor() {
super();
Port.O("out").attach(this);
}
_read($o) {
$o("out").send({ payload: "hello, world" });
}
}
class OneTransformNode extends TransformNode {
constructor() {
super();
Port.I("in").attach(this);
Port.O("out").attach(this);
}
_transform($i, $o) {
$i("in").on((payload) => {
$o("out").send(payload);
});
}
}
class OneWriteableNode extends WriteableNode {
constructor() {
super();
Port.I("in").attach(this);
}
_write($i) {
$i("in").on(console.log);
}
}
const $R = new OneReadableNode();
const $T = new OneTransformNode();
const $W = new OneWriteableNode();
$R.O("out").connect($T.I("in"));
$T.O("out").connect($W.I("in"));
flowIns.run($R);