如何搭积木式的快速开发H5页面?
设计初衷
最新版编辑器效果预览
表单数据看板和数据分析:
技术栈
umi3.0 + dva + antd4.0
react + react生态
nest + mysql + redis
nginx + pm2
功能点和实现方案
笔者之前的系列文章中有介绍具体功能点和实现方案, 这里我们主要介绍1.0版本已有的新功能.
新增富文本组件, 日历组件, 按钮交互组件, 专栏组件
日历组件也是最近刚加的, 主要是为了实现更丰富的H5页面展示, 如下:
import React, { useState, memo, useEffect, useRef } from 'react';
import { Calendar } from 'zarm';
import styles from './index.less';
import { ICalendarConfig } from './schema';
const CalendarPlayer = memo((props: ICalendarConfig & { isTpl: boolean }) => {
const { time, range, color, selectedColor, round, isTpl } = props;
const realRange = range.split('-');
const [value, setValue] = useState<Date[] | undefined>([new Date(`${time}-${realRange[0]}`), new Date(`${time}-${realRange[1]}`)]);
const [min] = useState(new Date(`${time}-01`));
const [max] = useState(new Date(`${time}-31`));
const boxRef = useRef<any>(null);
return <div className={styles.calenderWrap} style={{borderRadius: round + 'px', pointerEvents: isEditorPage ? 'none' : 'initial'}} ref={boxRef}>
<Calendar
multiple={!!range}
value={value}
min={min}
max={new Date(max)}
disabledDate={(date:any) => /(0|6)/.test(date.getDay())}
onChange={(value:Date[] | undefined) => {
setValue(value);
}}
/>
</div>
});
export default CalendarPlayer;
之前还有个朋友问过我为什么项目使用了这么多组件在预览H5页面的时候速度还是很快, 这里我说明一下具体的实现方式, 如下图:
笔者这里展示一下具体的交互方式: code
这块, 笔者集成了代码编辑库codemirror
, 这样我们就可以自定义实现交互能力了, 如下效果:
新增导入导出json文件功能
JSON
, 另一个人通过导入这个JSON文件就可以立马渲染成一模一样的H5页面, 进而做修改或者完善. 如下: json
, 笔者在之前的文章中也介绍过, 我们可以采用file-saver
这个第三方模块来做. 上传解析json
我们完全可以自己实现, 笔者采用的是 Upload + FileReader API
实现的, 核心代码如下:const uploadprops = useMemo(() => ({
name: 'file',
showUploadList: false,
beforeUpload(file, fileList) {
// 解析并提取json数据
let reader = new FileReader();
reader.onload = function(e) {
let data = e.target.result;
importTpl && importTpl(JSON.parse(data))
};
reader.readAsText(file);
}
}), []);
新增一键截图并生成高清海报图功能
canvas
对dom进行转化, 原理如下: 这里笔者推荐两个好用的canvas
截图工具, html2canvas
和 dom-to-image
. Dooring页面的截图过程如下:
新增右键菜单和自定义键盘快捷键功能
react-contexify
, keymaster
.新增页面配置
SEO
关键字, 页面背景和背景图等, 如下: 界面设计优化
和0.1版本比界面上做了很大的调整和优化, 比如说我们的登录页面:
支持sdk引入
这块也是笔者之前做的一个尝试, 让H5-Dooring能通过sdk
的方式被植入到任何web
系统中,并且提供了定制功能和展示的api
, 主要如下:
后期规划
后期主要做的事情是继续丰富高质量业务组件, 重构github
上已有代码的设计架构, 做好视图, 数据, 逻辑的分层, 抽离页面渲染器和表单渲染器, 提供组件开放能力, 增强后台服务能力等, 欢迎感兴趣的朋友提出宝贵的建议和issue
, 持续迭代和优化.
github地址: https://github.com/MrXujiang/h5-Dooring
欢迎大家fork和star.
轻松一刻