当前位置:网站首页>阿里低代码框架 lowcode-engine 之自定义物料篇
阿里低代码框架 lowcode-engine 之自定义物料篇
2022-08-11 02:58:00 【杰出D1】
前言
上一篇文章介绍了umi框架集成阿里低代码框架lowcode-engine,今天我们主要来说下低代码比较核心的东西之一物料,就是我们低代码框架怎么支持和使用我们自己写的组件。
介绍
物料是页面搭建的原料,按照粒度可分为组件、区块和模板:
- 组件:组件是页面搭建最小的可复用单元,其只对外暴露配置项,用户无需感知其内部实现;
- 区块:区块是一小段符合低代码协议的 schema,其内部会包含一个或多个组件,用户向设计器中拖入一个区块后可以随意修改其内部内容;
- 模板:模板和区块类似,也是一段符合低代码协议的 schema,不过其根节点的 componentName 需固定为 Page,它常常用于初始化一个页面;
低代码编辑器中的物料需要进行一定的配置和处理,才能让用户在低代码平台使用起来。这个过程中,需要一份一份配置文件,也就是资产包。资产包文件中,针对每个物料定义了它们在低代码编辑器中的使用描述。
物料开发
项目初始化
- lowcode官方给我们提供了脚手架,我们通过脚手架可以快速创建
npm init @alilc/element lowcode-app-material // lowcode-app-material项目名称
我们选择物料【组件/物料】类型,包的模式选择
react-组件库
,因为这里我们要存放多个组件。安装依赖,启动调试环境
npm & yarn install
安装好依赖之后,就可以启动开发环境
yarn lowcode:dev
开发自己的组件
项目的生成的模板已经为我们提供了俩个组件的例子,我们参考例子,实现我们自己的组件。
其实就更正常写我们的React组件差不多。 在components文件下,创建my-input文件夹,创建
my-input.tsx
文件,编写我们的组件,Props
一定要定义明确,后边会生成可以让我们在低代码平台可以编辑的内容。
import * as React from 'react';
import { createElement } from 'react';
import { Input } from '@alifd/next';
import { bizCssPrefix } from '../../variables';
import './index.scss';
export interface MyInputProps {
color?: 'string';
style?: 'object'
}
const MySelect: React.FC<MyInputProps> = function MySelect({
color,
style = {},
...otherProps
}) {
const _style = style || {};
if (color) {
_style.backgroundColor = color;
}
const _otherProps = otherProps || {};
_otherProps.style = _style;
return (
<Input { ..._otherProps } />
);
};
export default MySelect;
- 在改目录下,创建
index.tsx
文件,导出我们的组件, 记得在根入口要导出我们的组件
import MyInput from './my-input';
export type { MyInputProps } from './my-input';
export default MyInput;
- 脚手架内有热更新,我们演示环境里主要可以看在根目录生成的lowcode文件夹,每个组件下面都有一个
meta.ts
文件,描述着组件一些比较重要的内容,在后续集成的时候我们还需要,之后一点点解析该文件。
我们看到在使用我们的组件,颜色属性是一个字符串,但我们不能更改。怎么办的,这里我们引入一个新的东西,setter
(物料设置器), 官方已经帮我预置了一些设置器,我们先用,后去我们在来说一下怎么自定义setter,来实现我们自定义需求
我们找到meta.ts
, 只需找到configure -> porps -> color -> setter -> componentName
的值改为ColorSetter
即可。
刷新浏览器,在拖动我们的组件,就可以看到,这块变成了颜色选择器
- 发布组件,这里有问题的可以网上找篇文章,看看怎么发布,这里假设我们所有的环境已经准备就绪,直接发布。
yarn lowcode:build // 组件编译
npm publish // 发布npm
在引擎中使用我们的组件
在引擎中使用,主要关注umi项目中的
assets.json
文件,把lowcode-app-material
项目中build -> lowcode -> assets-prod.json
的文件合并到 assets.json 中合并package,主要用来加载资源
[
{
"package": "lowcode-app-material",
"version": "0.1.1",
"library": "BizComps",
"urls": [
"https://unpkg.com/[email protected]/build/lowcode/render/default/view.js",
"https://unpkg.com/[email protected]/build/lowcode/render/default/view.css"
],
"editUrls": [
"https://unpkg.com/[email protected]/build/lowcode/view.js",
"https://unpkg.com/[email protected]/build/lowcode/view.css"
],
"advancedUrls": {
"default": [
"https://unpkg.com/[email protected]/build/lowcode/render/default/view.js",
"https://unpkg.com/[email protected]/build/lowcode/render/default/view.css"
]
},
"advancedEditUrls": {}
}
]
合并
components
内容 ,这里要注意,不能直接把assets-prod.json
的components中合并,需要把根目录的lowcode
文件夹下的meta.ts
文件合并合并
componentList
内容,把snippets
合并到componentsList
内容当中
- 启动我们的umi项目,就可以看到改组件可以使用了
结束语
以上我们完成了物料的开发和使用,之后我们来说一说setter和自定义setter。
代码已上传到github,请查看
如果你觉得该文章不错,不妨
1、点赞,让更多的人也能看到这篇内容
2、关注我,让我们成为长期关系
3、关注公众号「前端有话说」,里面已有多篇原创文章,和开发工具,欢迎各位的关注,第一时间阅读我的文章
边栏推荐
猜你喜欢
[idea error] Invalid target distribution: 17 solution reference
Google search skills - programmer is recommended
The practice of alibaba data synchronization component canal
leetcode: 358. Reorder strings at K distance intervals
google搜索技巧——程序员推荐
JS-DOM元素对象
Official release丨VS Code 1.70
Vulnhub靶机:GEMINI INC_ 2
Idea (优选)cherry-pick操作
入职数字ic设计后的一些工作心得
随机推荐
“京台高铁”亮相百度地图,真能在2035年建成吗?
【idea 报错】 无效的目标发行版:17 的解决参考
深度学习中的模型设计
font
2022制冷与空调设备运行操作考试试题模拟考试平台操作
Geogebra 教程之 04 Geogebra 小程序
"Beijing-Taiwan high-speed rail" debuted on Baidu map, can it really be built in 2035?
Vulnhub靶机:GEMINI INC_ 2
超声三维重建总体架构
Vim and copy and paste from the outside (don't need to install the plugin)
ROS源代码阅读(1)
Window function application of sum and count
mysql 死锁 Deadlock found when trying to get lock; try restarting transaction
Ten Advanced Concepts of SQL Development
DOM树的遍历-----修改样式,选择元素,创建和删除节点
ES6进阶 字符串处理新特性
alibaba数据同步组件canal的实践整理
Logstash日志数据写入异常排查问题总结
SIT221 Data Structures and Algorithms课程辅导
①In-depth analysis of CAS SSO single sign-on framework source code