å¿«éå¼å§
åç½®ç¥è¯â
æä»¬åå®ä½ å·²ç»å¯¹ HTML å JavaScript 齿¯è¾çæäºãå³ä¾¿ä½ ä¹å使ç¨å ¶ä»ç¼ç¨è¯è¨ï¼ä½ ä¹å¯ä»¥è·ä¸è¿ç¯æç¨çã餿¤ä¹å¤ï¼æä»¬åå®ä½ ä¹å·²ç»çæäºä¸äºç¼ç¨çæ¦å¿µï¼ä¾å¦ï¼å½æ°ãå¯¹è±¡ãæ°ç»ï¼ä»¥å class çä¸äºå 容ã
å¦æä½ æ³å顾ä¸ä¸ JavaScriptï¼ä½ å¯ä»¥é 读è¿ç¯æç¨ã注æï¼æä»¬ä¹ç¨å°äºä¸äº ES6ï¼è¾æ°ç JavaScript çæ¬ï¼çç¹æ§ãå¨è¿ç¯æç¨éï¼æä»¬ä¸»è¦ä½¿ç¨äºç®å¤´å½æ°ï¼arrow functionsï¼ãclassãlet è¯å¥å const è¯å¥ãä½ å¯ä»¥ä½¿ç¨ Babel REPL å¨çº¿é¢è§ ES6 çç¼è¯ç»æã
ç¯å¢åå¤â
WSLï¼Windows çµèï¼â
Window ç¯å¢éè¦ä½¿ç¨ WSL å¨ windows ä¸è¿è¡ä½ä»£ç 弿ç¸å
³çå¼åãå®è£
æç¨ â¡ï¸ WSL å®è£
æç¨ã
å¯¹äº Window ç¯å¢æ¥è¯´ï¼ä¹åææéè¦æ§è¡å½ä»¤çæä½é½æ¯å¨ WSL ç»ç«¯æ§è¡çã
Nodeâ
node çæ¬æ¨è 16.18.0ã
æ¥ç Node çæ¬â

éè¿ n æ¥ç®¡ç node çæ¬â
å¯ä»¥å®è£ n æ¥ç®¡çååæ´ node çæ¬ã
å®è£ nâ
npm install -g n
åæ´ node çæ¬â
n 14.17.0
Reactâ
ä½ä»£ç å¼æçæ©å±è½å齿¯åºäº React æ¥ç åçï¼å¨ç»§ç»é 读ä¹åæå¥½æä¸å®ç React åºç¡ï¼React å¦ä¹ æç¨ â¡ï¸ React å¿«éå¼å§æç¨ã
ä¸è½½ Demoâ
å¯ä»¥åå¾ githubï¼https://github.com/alibaba/lowcode-demoï¼å° DEMO ä¸è½½å°æ¬å°ã
git cloneâ
HTTPSâ
éè¦ä½¿ç¨å° git å·¥å ·
git clone https://github.com/alibaba/lowcode-demo.git
SSHâ
éè¦é ç½® SSH keyï¼å¦ææ²¡æé ç½®å¯ä»¥
git clone git@github.com:alibaba/lowcode-demo.git
ä¸è½½ Zip å â

éæ©ä¸ä¸ª demo 项ç®â
å¨ ä»¥ demo-general 为ä¾ï¼
cd demo-general
å®è£ ä¾èµâ
å¨ lowcode-demo/demo-general ç®å½ä¸æ§è¡ï¼
npm install
å¯å¨ demoâ
å¨ lowcode-demo/demo-general ç®å½ä¸æ§è¡ï¼
npm run start
ä¹åå°±å¯ä»¥éè¿ http://localhost:5556/ æ¥è®¿é®æä»¬ç DEMO äºã
è®¤è¯ Demoâ
æä»¬ç Demo æ¯ä¸ä¸ªä½ä»£ç å¹³å°ç设计å¨ã宿¯ä¸ä¸ªä½ä»£ç å¹³å°ä¸æéè¦çä¸ç¯ï¼ç¨æ·å¯ä»¥å¨è¿ééè¿ææ½ãé ç½®ãå代ç ççæ¥å®æä¸ä¸ªé¡µé¢çå¼åãç±äºç¨æ·ç人群ä¸åãåºæ¯ä¸åãè¯æ±ä¸åççï¼è¿ä¸ªé¡µé¢çåè½å°±ä¼ææå·®å¼ã
è¿éè®°ä½è®¾è®¡å¨è¿ä¸ªè¯ï¼å®æè¿°çå°±æ¯ä¸é¢çè¿ä¸ªé¡µé¢ï¼å颿们ä¼ç»å¸¸çå°å®ã

åºæ¯ä»ç»â

Demo æ ¹æ®ä¸åçè®¾è®¡å¨æéè¦çç©æä¸åï¼å为äºä¸é¢ç 8 ä¸ªåºæ¯ï¼
- 综ååºæ¯
- åºç¡ fusion ç»ä»¶
- åºç¡ fusion ç»ä»¶ + åèªå®ä¹ç»ä»¶
- åºç¡ antd ç»ä»¶
- èªå®ä¹åå§å弿
- æ©å±èç¹æä½é¡¹
- åºäº next å®ç°çé«çº§è¡¨åä½ä»£ç ç©æ
- antd é«çº§ç»ä»¶ + formily 表åç»ä»¶
å¯ä»¥ç¹å¼ä¸åçåºæ¯ï¼ççä»ä»¬ä½¿ç¨çç©æã

ç®å½ä»ç»â
ä»åºä¸æ¯ä¸ª demo-xxx-xxx ç®å½é½æ¯ä¸ä¸ªå¯ç¬ç«è¿è¡ç demo å·¥ç¨ï¼åå«å¯¹åºå°ååä»ç»çåºæ¯ã

ä¸ååºæ¯çç®å½ç»æå®é ä¸é½æ¯ç±»ä¼¼çï¼è¿éæä»¬ä¸»è¦ä»ç»ä¸ä¸ç»¼ååºæ¯çç®å½ç»æå³å¯ã

ä»ç»ä¸å ¶ä¸ä¸»è¦çå 容
- 设计å¨å
¥å£æä»¶
src/index.tsè¿ä¸ªæä»¶åäºä¸è¿°å ä¸ªäºæ ï¼- éè¿ plugins.register 注ååç§æä»¶ï¼å
æ¬å®æ¹æä»¶ (å·²åå¸ npm å
å½¢å¼çæä»¶) å
pluginsç®å½ä¸å ç½®çç¤ºä¾æä»¶ - éè¿ init åå§åä½ä»£ç 设计å¨
- éè¿ plugins.register 注ååç§æä»¶ï¼å
æ¬å®æ¹æä»¶ (å·²åå¸ npm å
å½¢å¼çæä»¶) å
- plugins ç®å½ï¼åæ¾ç齿¯ç¤ºä¾æä»¶ï¼æ¹ä¾¿ç¨æ·ä»ä¸çå°ä¸ä¸ªæä»¶æ¯å¦ä½å®ç°ç
- services ç®å½ï¼æ¨¡ææ°æ®è¯·æ±ãæä¾é»è®¤ schemaãé»è®¤èµäº§å çï¼æ¤ç®å½ä¸å 容å¨çå®é¡¹ç®ä¸åºæ¿æ¢æçå®ç䏿å¡ç«¯äº¤äºçæå¡ã
- é¢è§é¡µé¢å
¥å£æä»¶
preview.tsx
å©ä¸çåä½çå®å¯ä»¥éè¿æºç æ¥è¿ä¸æ¥äºè§£ã
åäºè¿äºäºæ ä¹åï¼æä»¬çä½ä»£ç 设计å¨å°±å·²ç»æäºåºæ¬çè½åäºãä¹å°±æ¯æå¼å§æä»¬çå°çè¿æ ·ã

æ¥ä¸æ¥æä»¬å°±æ ¹æ®æä»¬èªå·±çè¯æ±éè¿å¯¹è®¾è®¡å¨è¿è¡æ©å±ï¼æ¹å¨ææä»¬éè¦ç设计å¨åè½ã
å¼åä¸ä¸ªæä»¶â
æ¹å¼ 1ï¼å¨ DEMO ä¸ç´æ¥æ°å¢æä»¶â

å¯ä»¥å¨ demo/sample-plugins ç´æ¥æ°å¢æä»¶ï¼è¿éææ°å¢çæä»¶ç®å½æ¯ plugin-demoã并䏿°å¢äº index.tsx æä»¶ï¼å°ä¸é¢ç代ç ç²è´´å° index.tsx ä¸ã
import * as React from 'react';
import { IPublicModelPluginContext } from '@alilc/lowcode-types';
const LowcodePluginPluginDemo = (ctx: IPublicModelPluginContext) => {
return {
// æä»¶å¯¹å¤æ´é²çæ°æ®åæ¹æ³
exports() {
return {
data: 'ä½ å¯ä»¥ææä»¶çæ°æ®è¿æ ·å¯¹å¤æ´é²',
func: () => {
console.log('æ¹æ³ä¹æ¯ä¸æ ·');
},
};
},
// æä»¶çåå§å彿°ï¼å¨å¼æåå§åä¹åä¼ç«å»è°ç¨
init() {
// ä½ å¯ä»¥æ¿å°å
¶ä»æä»¶æ´é²çæ¹æ³å屿§
// const { data, func } = ctx.plugins.pluginA;
// func();
// console.log(options.name);
// å¾å¼æå¢å 颿¿
ctx.skeleton.add({
area: 'leftArea',
name: 'LowcodePluginPluginDemoPane',
type: 'PanelDock',
props: {
description: 'Demo',
},
content: <div>è¿æ¯ä¸ä¸ª Demo 颿¿</div>,
});
ctx.logger.log('æä¸ªæ¥å¿');
},
};
};
// æä»¶åï¼æ³¨åç¯å¢ä¸å¯ä¸
LowcodePluginPluginDemo.pluginName = 'LowcodePluginPluginDemo';
LowcodePluginPluginDemo.meta = {
// ä¾èµçæä»¶ï¼æä»¶åæ°ç»ï¼
dependencies: [],
engines: {
lowcodeEngine: '^1.0.0', // æä»¶éè¦é
å ^1.0.0 ç弿æå¯è¿è¡
},
};
export default LowcodePluginPluginDemo;
å¨ src/index.ts 䏿°å¢ä¸é¢ä»£ç

è¿æ ·å¨æä»¬ç设计å¨ä¸å°±æ°å¢äºä¸ä¸ª Demo 颿¿ã

æ¹å¼ 2ï¼å¨æ°çä»åºä¸å¼åæä»¶â
åå§å
npm init @alilc/element your-plugin-name
éæ©è®¾è®¡å¨æä»¶ï¼pluginï¼

æ ¹æ®æä½å®åä¿¡æ¯

æä»¶é¡¹ç®å°±åå§å宿äº

卿件项ç®ä¸å®è£ ä¾èµ
npm install
å¯å¨é¡¹ç®
npm run start
è°è¯é¡¹ç®

å¨ Demo ä¸è°è¯é¡¹ç®
å¨ build.json ä¸é¢æ°å¢ "inject": trueï¼å°±å¯ä»¥å¨ https://lowcode-engine.cn/demo/demo-general/index.html?debug 页é¢ä¸è¿è¡è°è¯äºã

å¼åä¸ä¸ªèªå®ä¹ç©æâ
åå§åç©æâ
npm init @alilc/element your-material-demo
éæ©ç»ä»¶/ç©ææ

é ç½®å ¶ä»ä¿¡æ¯

è¿æ ·æä»¬å°±åå§å好äºä¸ä¸ª React ç©æã

å¯å¨å¹¶è°è¯ç©æâ
å®è£ ä¾èµâ
npm i
å¯å¨â
npm run lowcode:dev
æä»¬å°±å¯ä»¥éè¿ http://localhost:3333/ ç尿们çç åçç©æäºã

å¨ Demo ä¸è°è¯â
npm i @alilc/build-plugin-alt
ä¿®æ¹ build.lowcode.js

å¦å¾ï¼æ°å¢å¦ä¸ä»£ç
[
'@alilc/build-plugin-alt',
{
type: 'component',
inject: true,
library,
// é
ç½®è¦æå¼ç页é¢ï¼å¨æ³¨å
¥è°è¯æ¨¡å¼ä¸ï¼ä¸é
ç½®æ¤é¡¹çè¯ä¸ä¼æå¼æµè§å¨
// æ¯æç´æ¥ä½¿ç¨å®æ¹ demo 项ç®ï¼https://lowcode-engine.cn/demo/index.html
openUrl: 'https://lowcode-engine.cn/demo/index.html?debug',
},
],
æä»¬éæ°å¯å¨é¡¹ç®ï¼å°±å¯ä»¥å¨ Demo 䏿¾å°æä»¬çèªå®ä¹ç»ä»¶ã

åå¸â
é¦å è¿è¡æå»º
npm run lowcode:build
åå¸ç»ä»¶
npm publish
è¿éæåå¸çç»ä»¶æ¯ my-material-demoãå¨åå¸ä¹åæä»¬å°±ä¼æä¸¤ä¸ªéè¦çæä»¶ï¼
- ä½ä»£ç æè¿°ï¼https://unpkg.com/my-material-demo@0.1.0/build/lowcode/meta.js
- ç»ä»¶ä»£ç ï¼https://unpkg.com/my-material-demo@0.1.0/build/lowcode/render/default/view.js
æä»¬ä¹å¯ä»¥ä» https://unpkg.com/my-material-demo@0.1.0/build/lowcode/assets-prod.json æ¾å°æä»¬çèµäº§å æè¿°ã
{
"packages": [
{
"package": "my-material-demo",
"version": "0.1.0",
"library": "BizComp",
"urls": [
"https://unpkg.com/my-material-demo@0.1.0/build/lowcode/render/default/view.js",
"https://unpkg.com/my-material-demo@0.1.0/build/lowcode/render/default/view.css"
],
"editUrls": [
"https://unpkg.com/my-material-demo@0.1.0/build/lowcode/view.js",
"https://unpkg.com/my-material-demo@0.1.0/build/lowcode/view.css"
],
"advancedUrls": {
"default": [
"https://unpkg.com/my-material-demo@0.1.0/build/lowcode/render/default/view.js",
"https://unpkg.com/my-material-demo@0.1.0/build/lowcode/render/default/view.css"
]
},
"advancedEditUrls": {}
}
],
"components": [
{
"exportName": "MyMaterialDemoMeta",
"npm": {
"package": "my-material-demo",
"version": "0.1.0"
},
"url": "https://unpkg.com/my-material-demo@0.1.0/build/lowcode/meta.js",
"urls": {
"default": "https://unpkg.com/my-material-demo@0.1.0/build/lowcode/meta.js"
},
"advancedUrls": {
"default": [
"https://unpkg.com/my-material-demo@0.1.0/build/lowcode/meta.js"
]
}
}
],
}
使ç¨â
æä»¬å°åååå¸çç»ä»¶ç assets-prod.json çå 容æ¾å° demo ç src/universal/assets.json ä¸ã
æå¥½æ¾å°æåï¼é²æ¢å ä¸ºèµæºå 载顺åºé®é¢å¯¼è´åºç°æ¥éã
å¦å¾ï¼æ°å¢ packages é
ç½®

å¦å¾ï¼æ°å¢ components é ç½®

è¿æ¶ååå¯å¨ DEMO 项ç®ï¼å°±ä¼ææ°çä½ä»£ç ç©æäºãæ¥ä¸æ¥å°±æç §ä½ 们çéæ±ï¼ç»§ç»æ©å±ç©æå§ã
æ»ç»â
è¿éåªæ¯ç®åçä»ç»äºä¸äºä½ä»£ç 弿çåºç¡è½åï¼å¸¦å¤§å®¶ç®åç对ä½ä»£ç DEMO è¿è¡æ©å±ï¼å®å¶ä¸äºæ°çåè½ãä½ä»£ç 弿çè½åè¿æå¾å¤å¾å¤ï¼å¯ä»¥ç»§ç»å»æ¢ç´¢æ´å¤çåè½ã