Yao 0.10.2 正式發(fā)布 你好零代碼(你好零零后這個(gè)綜藝節(jié)目的演員有誰(shuí))

無(wú)代碼開(kāi)發(fā)平臺(tái)是可以讓程序設(shè)計(jì)者及一般用戶不用傳統(tǒng)程序設(shè)計(jì)語(yǔ)言即可以開(kāi)發(fā)應(yīng)用程序的開(kāi)發(fā)平臺(tái),使用的是圖形用戶界面(GUI)以及配置。(維基百科)

在一些特定場(chǎng)景中, 使用圖形界面開(kāi)發(fā), 確實(shí)可以有效的提升程序開(kāi)發(fā)的生產(chǎn)力, 也有很多優(yōu)秀的實(shí)踐案例。

然而, 這種開(kāi)發(fā)效率提升, 是以犧牲通用性、無(wú)法精確掌控邏輯、應(yīng)用必須與平臺(tái)深度綁定、存在數(shù)據(jù)泄露風(fēng)險(xiǎn)、甚至無(wú)法掌控業(yè)務(wù)數(shù)據(jù)為代價(jià)。

不僅如此, 應(yīng)對(duì)一些常見(jiàn)場(chǎng)景, 通過(guò) ”托拉拽“ 編程更低效。 比如:

  1. 一張數(shù)據(jù)表有 100 個(gè)字段, 使用托拉拽配置一個(gè)數(shù)據(jù)管理表格。
  2. 一個(gè)業(yè)務(wù)系統(tǒng)有 200 張數(shù)據(jù)表, 使用圖形界面配置出管理后臺(tái)。
  3. 在沒(méi)有數(shù)據(jù)分析平臺(tái)的前提下, 一個(gè)業(yè)務(wù)指標(biāo)統(tǒng)計(jì)涉及到多張表查詢和復(fù)雜的數(shù)據(jù)處理。

Yao 沒(méi)有采用大力出奇跡的辦法, 而是換了一個(gè)新思路, 去解決這些問(wèn)題。

Yao v0.10.2 重構(gòu)了界面引擎、新增 Studio CLI、DSL 編寫處理器, 發(fā)布了 Yao BrAIn 平臺(tái) (DEMO 版)。

基于這些新特性, 開(kāi)發(fā)者可以輕松根據(jù)上下文邏輯, 用程序編程序, 開(kāi)發(fā)出 真無(wú)代碼 產(chǎn)品。

Yao Admin

為了演示效果, 我們用 Yao 開(kāi)發(fā)了一個(gè)通用管理后臺(tái) Yao Admin。

無(wú)需 ”托拉拽“, 連接數(shù)據(jù)庫(kù), 你就有了一個(gè)管理后臺(tái)。

稍加完善后, Yao Admin 將作為一個(gè)獨(dú)立的產(chǎn)品發(fā)布, 了解更多特性可以訪問(wèn)代碼倉(cāng)庫(kù)。

代碼倉(cāng)庫(kù): https://Github.com/YaoApp/yao-admin

開(kāi)源協(xié)議: Apache-2.0

Yao 是什么?

Yao 0.10.2 正式發(fā)布 你好零代碼(你好零零后這個(gè)綜藝節(jié)目的演員有誰(shuí))

Yao 是一款開(kāi)源應(yīng)用引擎, 使用 Golang 編寫, 下載即用。適合開(kāi)發(fā)業(yè)務(wù)系統(tǒng)、REST API、管理后臺(tái)、自建低代碼平臺(tái)等。

GitHub 倉(cāng)庫(kù): https://github.com/yaoapp/yao

Github Stars: 4.8K

開(kāi)源協(xié)議: Apache 2.0

官方文檔: https://yaoapps.com/doc

Yao vs 低代碼/無(wú)代碼平臺(tái)

與大部分低代碼平臺(tái)相比, Yao 有更好的通用性、應(yīng)用獨(dú)立發(fā)布(可申請(qǐng)軟著)、非一次性代碼,可持續(xù)迭代升級(jí)、不限于”托拉拽“, 有多種編寫方式等優(yōu)勢(shì)。

應(yīng)用獨(dú)立發(fā)布

Yao 0.10.2 正式發(fā)布 你好零代碼(你好零零后這個(gè)綜藝節(jié)目的演員有誰(shuí))

與大部分低代碼平臺(tái)不同, Yao 是給開(kāi)發(fā)者使用的應(yīng)用開(kāi)發(fā)工具和運(yùn)行時(shí)。

使用 Yao 開(kāi)發(fā)的應(yīng)用, 代碼獨(dú)立發(fā)布(可申請(qǐng)軟著), 無(wú)縫對(duì)接云原生工具鏈, 與使用 PHP, NodeJS腳本語(yǔ)言開(kāi)發(fā)的應(yīng)用無(wú)差別。

非一次性代碼

不同于代碼生成器, Yao DSL 開(kāi)發(fā)者可閱讀、可以編寫, 開(kāi)發(fā)者可精確掌控業(yè)務(wù)邏輯, 應(yīng)用可持續(xù)迭代升級(jí)。

應(yīng)用引擎全量開(kāi)源, 技術(shù)團(tuán)隊(duì)可完全掌控全部代碼。

Table DSL 示例:

{ "name": "::Bind Model", "action": { "bind": { "model": "pet", "option": { "form": "pet" } }, "search": { "process": "scripts.pet.Search", "default": [null, 1, 5] } }}

可替代腳本語(yǔ)言

Yao 內(nèi)建 JavaScript Runtime, 可以使用腳本實(shí)現(xiàn) 95% 以上常見(jiàn)業(yè)務(wù)邏輯。

這使得 Yao 具備腳本語(yǔ)言的基礎(chǔ)能力, 大部分場(chǎng)景下可以代替腳本語(yǔ)言使用。

多種編程方式

Yao 應(yīng)用有多種編程方式,且這些編程方式可以隨意切換。

  1. 支持手工編寫, 開(kāi)發(fā)者可以使用任意編程工具編寫調(diào)試。
  2. 支持程序生成, 根據(jù)上下文邏輯, 自動(dòng)生成 DSL 或腳本代碼, 甚至可以接入 AI 讓人工智能編程序。
  3. 支持可視化編程, 使用 Studio 通過(guò)托拉拽圖形編程工具制作。

新特性

新界面

Yao 0.10.2 正式發(fā)布 你好零代碼(你好零零后這個(gè)綜藝節(jié)目的演員有誰(shuí))

v0.10.2 重構(gòu)了 XGEN 界面引擎, 同時(shí)優(yōu)化界面描述 DSL, 使用 Yao 開(kāi)發(fā)業(yè)務(wù)系統(tǒng)、管理后臺(tái)等類型應(yīng)用更方便。

Bind

在 Table DSL, Form DSL 中與 Model 綁定, 即可自動(dòng)生成一個(gè)數(shù)據(jù)管理模塊。

在表格中使用 Table DSL

Table DSL:

{ "name": "綁定模型", "action": { "bind": { "model": "pet" } }}

{ "name": "綁定模型和表單", "action": { "bind": { "model": "pet", "option": { "form": "pet" } } }}

{ "name": "復(fù)制表格", "action": { "bind": { "table": "user" } }}

在表單中使用

Form DSL:

{ "name": "綁定模型", "action": { "bind": { "model": "pet" } }}

{ "name": "綁定表格", "action": { "bind": { "table": "pet" } }}

{ "name": "復(fù)制表單", "action": { "bind": { "form": "pet" } }}

更多用法參考 Widget 手冊(cè)

Cloud Props

在開(kāi)發(fā)界面交互時(shí), 經(jīng)常需要為一些組件提供查詢接口。比如, 某個(gè)資源所屬類目的下拉列表, 在用戶點(diǎn)擊時(shí), 需要請(qǐng)求一個(gè)接口, 獲取類目數(shù)據(jù)。

可以使用 Cloud Props 特性, 將組件參數(shù)與處理器綁定, 應(yīng)用引擎加載時(shí), 自動(dòng)生成查詢接口。

Table/Form DSL:

{ "寵物": { "bind": "where.status.in", "edit": { "type": "Select", "props": { "xProps": { "$remote": { "process": "yao.component.SelectOptions", "query": { "model": "pet", "wheres": [ { "column": "created_at", "op": "ge", "value": "2020-01-02" } ] } } } } } }}

更多用法參考 Widget 手冊(cè)

Compute

通常情況下,在數(shù)據(jù)讀取和寫入時(shí)需要對(duì)字段數(shù)值處理, 來(lái)滿足呈現(xiàn)和存儲(chǔ)的需要。

可以使用 Compute , 在聲明字段使用的組件時(shí), 指定處理器對(duì)數(shù)值進(jìn)行處理。

為便于使用, 新增了一組 Compute處理器,用于常見(jiàn)的數(shù)據(jù)處理, 開(kāi)發(fā)者也可以根據(jù)需要, 使用自定義處理器。

處理器

參數(shù)表

返回值

說(shuō)明

Get

[<字符串參數(shù)>]

<字符串參數(shù)>

讀取數(shù)值 示例

Trim

[<字符串參數(shù)>]

過(guò)濾首尾空格 示例

Concat

[…<字符串參數(shù)>]

"value1value2.."

連接字符串 示例

Hide

[]

"" 空字符串

返回空字符串 示例

Download

將路徑轉(zhuǎn)換為下載地址 示例

Upload

將下載地址轉(zhuǎn)換為路徑 示例

Table/Form DSL:

{ "相關(guān)圖片": { "bind": "images", "view": { "type": "Image", "compute": "Download" }, "edit": { "type": "Upload", "compute": "Upload", "props": { "filetype": "image", "$api": { "process": "fs.system.Upload" } } } }, "是否在線": { "bind": "online", "view": { "bind": "online_view", "type": "Text", "compute": { "process": "scripts.compute.MappingOnline", "args": ["$C(row.online)", "$C(props.mapping)"] }, "props": { "mapping": { "1": "::Online", "0": "::Offline" } } }, "edit": { "type": "RadioGroup", "props": { "options": [ { "label": "::Online", "value": true }, { "label": "::Offline", "value": false } ] } } }}

更多用法參考 Widget 手冊(cè)

Action

在界面描述中, 可以使用 Action 定義按鈕的響應(yīng)行為。 界面引擎提供了多個(gè)場(chǎng)景的行為。

KEY 執(zhí)行動(dòng)作

VALUE 參數(shù)

說(shuō)明

History.push

{ "payload": "<路由地址>"}

跳轉(zhuǎn)到指定路由地址

Service.<名稱>

{ "method": "<函數(shù)名>", "args": [<參數(shù)表>] }

調(diào)用云函數(shù)

Studio.<名稱>

{ "method": "<函數(shù)名>", "args": [<參數(shù)表>] }

調(diào)用 Studio 云函數(shù) 僅開(kāi)發(fā)模式下有效

….

更多用法參考組件文檔

yao get 命令

為了更輕松的復(fù)制項(xiàng)目, 可以在空目錄使用 yao get 命令下載 Yao 應(yīng)用。

可供下載應(yīng)用列表, 未來(lái)支持第三方應(yīng)用上架。

應(yīng)用

簡(jiǎn)介

yaoapp/yao-admin

一個(gè)通用管理后臺(tái)

yaoapp/demo-app

演示應(yīng)用

yaoapp/demo-project

工程項(xiàng)目管理演示應(yīng)用

yaoapp/demo-finance

財(cái)務(wù)管理演示應(yīng)用

yaoapp/demo-plm

生產(chǎn)項(xiàng)目管理演示應(yīng)用

mkdir -p /data/appcd /data/appyao get yaoapp/yao-admin

云函數(shù)

services 目錄下, 創(chuàng)建添加 js 腳本, 這個(gè)腳本中定義的函數(shù)都可直接通過(guò) aciton 訪問(wèn), 也可通過(guò) API 接口調(diào)用。

腳本文件 /data/app/services/foo.js

/** * Cloud Function * * POST /api/__yao/app/service/foo * {"method":"Bar", "args":["hello", "world"]} * * @param {...any} args * @returns */function Bar(...args) { return { message: $L("Another yao application") " (Cloud Function: foo.Bar)", args: args, };}

Form DSL 中調(diào)用

{ "layout": { "primary": "id", "operation": { "preset": { "save": { "back": true }, "back": {} }, "actions": [ { "title": "測(cè)試云函數(shù)", "icon": "icon-cloud", "action": { "Service.foo": { "method": "Bar", "args": ["{{id}}", "{{name}}"] } } } ] } }}

安裝界面

廢棄原 yao init 命令, 使用安裝界面完成應(yīng)用初始化。

mkdir -p /data/appcd /data/appyao start

根據(jù)命令行提示, 進(jìn)入應(yīng)用初始化配置界面完成配置。

Yao 0.10.2 正式發(fā)布 你好零代碼(你好零零后這個(gè)綜藝節(jié)目的演員有誰(shuí))

文件系統(tǒng)處理器 & JS API

新增一組文件系統(tǒng)處理器和 JS API。

查看處理器手冊(cè)

HTTP 請(qǐng)求處理器 & JS API

新增一組 HTTP 請(qǐng)求處理器和 JS API。

查看處理器手冊(cè)

更多處理器

新增編碼解碼、加密解密、證書導(dǎo)入等處理器。

查看處理器手冊(cè)

Studio CLI、 Service、JSAPI

在 studio 目錄下, 創(chuàng)建添加 js 腳本, 這個(gè)腳本中定義的函數(shù)都可直接通過(guò) aciton 訪問(wèn), 也可通過(guò) API 接口調(diào)用。

stuido 目錄下的腳本具有超級(jí)權(quán)限, 可以訪問(wèn) dsl, script 等文件空間, 可用于實(shí)現(xiàn)生成 DSL 和腳本代碼。

/** * Cloud Function * * POST http://<IP>:<Studio Port>/service/hello * {"method":"World", "args":["hello", "world"]} * * @param {...any} args * @returns */function World(...args) { return { message: $L("Another yao application") " (Studio Function: hello.World)", args: args, };}

Studio CLI

cd /data/appyao studio run hello.World hi '::{"foo":"bar"}'

Form DSL 中調(diào)用

{ "layout": { "primary": "id", "operation": { "preset": { "save": { "back": true }, "back": {} }, "actions": [ { "title": "測(cè)試 Studio", "icon": "icon-cloud", "action": { "Studio.foo": { "method": "Hello", "args": ["{{id}}", "{{name}}"] } } } ] } }}

Yao Studio

Yao 即將提供一個(gè)可視化編輯器, 通過(guò)圖形界面的方式編寫 DSL。

當(dāng)前正在開(kāi)發(fā)中, 預(yù)計(jì) 2023 年第一季度上線。

預(yù)覽(屏幕截圖):

Yao 0.10.2 正式發(fā)布 你好零代碼(你好零零后這個(gè)綜藝節(jié)目的演員有誰(shuí))

Yao Brain

最好的工具, 你應(yīng)該感受不到它的存在。

Yao 0.10.2 正式發(fā)布 你好零代碼(你好零零后這個(gè)綜藝節(jié)目的演員有誰(shuí))

我們始終堅(jiān)信, 在未來(lái)的程序開(kāi)發(fā)中, AI 助手可以完成 90% 的工作, 開(kāi)發(fā)者在 AI 的工作成果基礎(chǔ)上微調(diào)即可。

我們也正在積極探索這個(gè)路線, 發(fā)布了 Yao Brain 平臺(tái)。

盡管現(xiàn)在還只是基于確定規(guī)則, 但已經(jīng)可以實(shí)現(xiàn)像 Yao-Admin 這樣的通用管理后臺(tái)。

未來(lái)某天, 只要告訴 Yao Brain 你的需求, 它可以幫你生成一個(gè) CRM, 一個(gè) ERP 或是其他符合你業(yè)務(wù)需求的程序。

相關(guān)新聞

聯(lián)系我們
聯(lián)系我們
公眾號(hào)
公眾號(hào)
在線咨詢
分享本頁(yè)
返回頂部