我们为Node.js设计了一个低代码框架

译文 精选
开发
自动化处理Node.js中的数据和逻辑

作者丨Can Mingir

译者丨仇凯

策划丨诺亚

  我们创建了一个项目,它可以自动化处理Node.js中的数据和逻辑,从而有效减少代码工作量。

  低代码框架Nucleoid在底层声明性运行时环境中使用,并通过重新渲染非常相似的JavaScript代码在图中建立连接,并最终保存JavaScript状态,因此它不需要外部数据库。

  特性

  • 让开发人员在AI的帮助下构建API(大量的图)
  • 在底层声明性运行时环境中使用
  • 运行时环境内置有数据存储

  Hello World

> npm i nucleoidjs

  安装后,通过Express.js启动或运行代码。

const nucleoid = require("nucleoidjs");
const app = nucleoid();

class User {
constructor(name) {
this.name = name;
}
}

// 👇 This is it!
app.post("/users", () => {
new User("Daphne");
});

app.listen(3000);

  差不多就是这样,多亏了运行时环境中的AI,能且仅能在AI的帮助下,才能在没有外部数据库的情况下将对象持久化。

理论

  在运行时中运用声明式编程,能够实现在同一进程中对数据进行管理。

  换句话说,该项目的主要目标是在同一运行时中管理数据和逻辑,同时,我们还可以将数据流/导出数据存储在类似NoSQL一样的外部数据库中。

CRUD

快速设置

const nucleoid = require("nucleoidjs"); // npm install nucleoidjs
const app = nucleoid();

Create

  首先,从创建用户类和用户对象开始。

class User {
constructor(name) {
this.name = name;
}
}

nucleoid.register(User);

app.post("/users", (req) => {
const name = req.body.name;
return new User(name);
});

  不需要外部数据库的原因是Nucleoid运行时管理和存储JavaScript状态。每当有语句在运行时环境运行的时候,Nucleoid运行时都会调整AI图并将其存储在运行时管理的fs中。

Read

app.get("/users/:id", (req) => {
const id = req.params.id;
return User[id];
});

  当有User这样的类注册时,运行时会为其实例创建快捷方式数组,可以查询或使用实例的id(var name)以在后续访问类。或者,也可以这样做User.find(user => user.id === id)

Update & Delete

app.post("/users/:id", (req) => {
const id = req.params.id;
const name = req.body.name;

const user = User[id];

if (user) {
user.name = name;
return user;
}
});

app.delete("/users/:id", (req) => {
const id = req.params.id;
delete User[id];
});

  与上面的示例类似,它使用原生JavaScript,运行时重新渲染和管理JavaScript状态。此外,还可以在JavaScript中编写一些业务逻辑。例如,如果想对用户名进行限制,可以这样写 if (user.name.length < 3) { throws "INVALID_USER" }。

Query

  nucleoidjs包还打开了一个终端通道来运行SQL之类的语句

图片

工作原理

nucleoid.run(() => {
var a = 1;
var b = a + 2;
var c = b + 3;
});

  当变量被定义为 var a = 1时,运行时会做三件事情。首先,它将var a放在图中,并在因变量之间建立联系。

图片

变量图

  其次,使用新值更新状态,以使其生效。

图片

状态表

  但是,由于变量会在图中被追踪,因此实际执行情况是不同的。

state.a = 1;
state.b = state.a + 2;
state.c = state.b + 3;

  最后将语句存储在运行时管理的fs中。

OpenAPI与Nucleoid IDE集成

  我们还在构建一个在线的OpenAPI编辑器,它有助于通过用户界面构建完全相同的API。它专为OpenAPI集成而设计,并且还连接到CodeSandbox,以便能够轻松地在沙箱中运行项目。

图片

IDE截图

  多亏了声明式编程,我们有了一种全新的数据和逻辑方法。

  原文链接:

      ​​https://hackernoon.com/nucleoid-a-low-code-framework-for-nodejs​

  仇凯,51CTO社区编辑,北京宅急送快运股份有限公司信息安全工程师。

责任编辑:张洁 来源: 51CTO技术栈
相关推荐

2020-08-07 10:40:56

Node.jsexpress前端

2012-01-10 10:04:43

Node.js

2019-04-15 11:00:46

框架Node.JS开发

2011-12-23 13:58:57

node.js

2011-10-25 09:28:30

Node.js

2020-12-28 19:13:11

Node.js后端框架

2020-05-29 15:33:28

Node.js框架JavaScript

2020-07-15 08:06:04

Node.js框架开发

2018-03-21 18:00:15

NestJS

2019-08-29 10:58:02

Web 开发框架

2011-06-17 10:29:04

Nodejavascript

2022-06-05 13:52:32

Node.jsDNS 的原理DNS 服务器

2021-08-07 07:56:59

Node逻辑对象

2024-03-11 08:11:27

Node.js.NET低代码平台

2020-08-24 08:07:32

Node.js文件函数

2012-02-02 15:14:29

Node.js

2012-03-07 14:32:41

Node.js

2014-10-30 10:28:55

Node.js

2014-08-18 11:06:47

js框架Node.js

2021-10-12 23:45:43

NodeJs事件
点赞
收藏

51CTO技术栈公众号