Forded(Copied) from lowcode-engine/code-generator
出码
所谓出码,即将低代码编排出的 schema 进行解析并转换成最终可执行的代码的过程。本模块提供有 Icejs 和 Rax 两套框架的出码方案,并提供了强大而灵活的扩展机制。
使用方法
1) 通过命令行快速体验
欢迎使用命令行工具快速体验:npx @alilc/lowcode-code-generator -i example-schema.json -o generated -s icejs
--其中 example-schema.json 可以从这里下载
2) 通过设计器插件快速体验
- 安装依赖:
npm install --save @alilc/lowcode-plugin-code-generator
- 注册插件:
import { plugins } from '@alilc/lowcode-engine';
import CodeGenPlugin from '@alilc/lowcode-plugin-code-generator';
await plugins.register(CodeGenPlugin);
await plugins.register(CodeGenPlugin, { disableCodeGenActionBtn: true });
然后运行你的低代码编辑器项目即可 -- 在设计器的右上角会出现一个“出码”按钮,点击即可在浏览器中出码并预览。
3)服务端出码接入
此代码生成器一开始就是为服务端出码设计的,你可以直接这样来在 node.js 环境中使用:
- 安装依赖:
npm install --save @alilc/lowcode-code-generator
- 引入代码生成器:
import CodeGenerator from '@alilc/lowcode-code-generator';
- 创建项目构建器:
const projectBuilder = CodeGenerator.solutions.icejs();
- 生成代码
const project = await projectBuilder.generateProject(
schema,
);
- 将生成的代码写入到磁盘中(也可以生成一个 zip 包)
await CodeGenerator.publishers.disk().publish({
project,
outputPath: '/path/to/your/output/dir',
projectSlug: 'your-project-slug',
});
await CodeGenerator.publishers.zip().publish({
project,
outputPath: '/path/to/your/output/dir',
projectSlug: 'your-project-slug',
});
注:一般来说在服务端出码可以跟 github/gitlab, CI 和 CD 流程等一起串起来使用,通常用于优化性能。
4)浏览器中出码接入
随着现在电脑性能和浏览器技术的发展,出码其实已经不必非得在服务端做了,借助于 Web Worker 特性,可以在浏览器中进行出码:
- 安装依赖:
npm install --save @alilc/lowcode-code-generator
- 引入代码生成器:
import * as CodeGenerator from '@alilc/lowcode-code-generator/standalone-loader';
- 【可选】提前初始化代码生成器:
await CodeGenerator.init();
- 出码
const result = await CodeGenerator.generateCode({
solution: 'icejs',
schema,
});
console.log(result);
注:一般来说在浏览器中出码适合做即时预览功能。
5)自定义出码
前端框架灵活多变,默认内置的出码方案很难满足所有人的需求,好在此代码生成器支持非常灵活的插件机制 -- 欢迎参考 ./src/plugins/xxx 来编写您自己的出码插件,然后参考 ./src/solutions/xxx 将各种插件组合成一套适合您的业务场景的出码方案。
参与共建
欢迎参与共建,如何共建请参阅:./CONTRIBUTING.md