亚洲熟妇av一区二区三区,久久久久久精品观看sss,免费观看四虎精品国产永久,国产成人精品一区二三区熟女,天堂网在线最新版www资源网

我們?yōu)镹ode.js設(shè)計(jì)了一個(gè)低代碼框架(我們?yōu)閚ode.js設(shè)計(jì)了一個(gè)低代碼框架英語(yǔ))

我們?yōu)镹ode.js設(shè)計(jì)了一個(gè)低代碼框架(我們?yōu)閚ode.js設(shè)計(jì)了一個(gè)低代碼框架英語(yǔ))

作者丨Can Mingir

譯者丨仇凱

  我們創(chuàng)建了一個(gè)項(xiàng)目,它可以自動(dòng)化處理Node.js中的數(shù)據(jù)和邏輯,從而有效減少代碼工作量。

  低代碼框架Nucleoid在底層聲明性運(yùn)行時(shí)環(huán)境中使用,并通過(guò)重新渲染非常相似的JavaScript代碼在圖中建立連接,并最終保存JavaScript狀態(tài),因此它不需要外部數(shù)據(jù)庫(kù)。

  特性

  • 讓開(kāi)發(fā)人員在AI的幫助下構(gòu)建API(大量的圖)
  • 在底層聲明性運(yùn)行時(shí)環(huán)境中使用
  • 運(yùn)行時(shí)環(huán)境內(nèi)置有數(shù)據(jù)存儲(chǔ)

  Hello World

> npm i nucleoidjs1.

  安裝后,通過(guò)Express.js啟動(dòng)或運(yùn)行代碼。

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);1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.

  差不多就是這樣,多虧了運(yùn)行時(shí)環(huán)境中的AI,能且僅能在AI的幫助下,才能在沒(méi)有外部數(shù)據(jù)庫(kù)的情況下將對(duì)象持久化。

理論

  在運(yùn)行時(shí)中運(yùn)用聲明式編程,能夠?qū)崿F(xiàn)在同一進(jìn)程中對(duì)數(shù)據(jù)進(jìn)行管理。

  換句話(huà)說(shuō),該項(xiàng)目的主要目標(biāo)是在同一運(yùn)行時(shí)中管理數(shù)據(jù)和邏輯,同時(shí),我們還可以將數(shù)據(jù)流/導(dǎo)出數(shù)據(jù)存儲(chǔ)在類(lèi)似NoSQL一樣的外部數(shù)據(jù)庫(kù)中。

CRUD

快速設(shè)置

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

Create

  首先,從創(chuàng)建用戶(hù)類(lèi)和用戶(hù)對(duì)象開(kāi)始。

class User {constructor(name) { this.name = name;}}nucleoid.register(User);app.post("/users", (req) => {const name = req.body.name;return new User(name);});1.2.3.4.5.6.7.8.9.10.11.12.

  不需要外部數(shù)據(jù)庫(kù)的原因是Nucleoid運(yùn)行時(shí)管理和存儲(chǔ)JavaScript狀態(tài)。每當(dāng)有語(yǔ)句在運(yùn)行時(shí)環(huán)境運(yùn)行的時(shí)候,Nucleoid運(yùn)行時(shí)都會(huì)調(diào)整AI圖并將其存儲(chǔ)在運(yùn)行時(shí)管理的fs中。

Read

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

  當(dāng)有User這樣的類(lèi)注冊(cè)時(shí),運(yùn)行時(shí)會(huì)為其實(shí)例創(chuàng)建快捷方式數(shù)組,可以查詢(xún)或使用實(shí)例的id(var name)以在后續(xù)訪問(wèn)類(lèi)?;蛘?,也可以這樣做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];});1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.

  與上面的示例類(lèi)似,它使用原生JavaScript,運(yùn)行時(shí)重新渲染和管理JavaScript狀態(tài)。此外,還可以在JavaScript中編寫(xiě)一些業(yè)務(wù)邏輯。例如,如果想對(duì)用戶(hù)名進(jìn)行限制,可以這樣寫(xiě) if (user.name.length < 3) { throws "INVALID_USER" }。

Query

  nucleoidjs包還打開(kāi)了一個(gè)終端通道來(lái)運(yùn)行SQL之類(lèi)的語(yǔ)句

我們?yōu)镹ode.js設(shè)計(jì)了一個(gè)低代碼框架(我們?yōu)閚ode.js設(shè)計(jì)了一個(gè)低代碼框架英語(yǔ))

工作原理

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

  當(dāng)變量被定義為 var a = 1時(shí),運(yùn)行時(shí)會(huì)做三件事情。首先,它將var a放在圖中,并在因變量之間建立聯(lián)系。

我們?yōu)镹ode.js設(shè)計(jì)了一個(gè)低代碼框架(我們?yōu)閚ode.js設(shè)計(jì)了一個(gè)低代碼框架英語(yǔ))

變量圖

其次,使用新值更新?tīng)顟B(tài),以使其生效。

我們?yōu)镹ode.js設(shè)計(jì)了一個(gè)低代碼框架(我們?yōu)閚ode.js設(shè)計(jì)了一個(gè)低代碼框架英語(yǔ))

狀態(tài)表

但是,由于變量會(huì)在圖中被追蹤,因此實(shí)際執(zhí)行情況是不同的。

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

  最后將語(yǔ)句存儲(chǔ)在運(yùn)行時(shí)管理的fs中。

OpenAPI與Nucleoid IDE集成

  我們還在構(gòu)建一個(gè)在線(xiàn)的OpenAPI編輯器,它有助于通過(guò)用戶(hù)界面構(gòu)建完全相同的API。它專(zhuān)為OpenAPI集成而設(shè)計(jì),并且還連接到CodeSandbox,以便能夠輕松地在沙箱中運(yùn)行項(xiàng)目。

我們?yōu)镹ode.js設(shè)計(jì)了一個(gè)低代碼框架(我們?yōu)閚ode.js設(shè)計(jì)了一個(gè)低代碼框架英語(yǔ))

IDE截圖

多虧了聲明式編程,我們有了一種全新的數(shù)據(jù)和邏輯方法。

  原文鏈接:

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

  仇凱,51CTO社區(qū)編輯,北京宅急送快運(yùn)股份有限公司信息安全工程師。

責(zé)任編輯:張潔來(lái)源: 51CTO技術(shù)棧

版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶(hù)自發(fā)貢獻(xiàn),該文觀點(diǎn)僅代表作者本人。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請(qǐng)發(fā)送郵件至 舉報(bào),一經(jīng)查實(shí),本站將立刻刪除。