点击关注公众号,实用技术文章及时了解

腾讯tmagic-editor是一个所见即所得的页面可视化编辑器,实现零代码/低代码生成页面,可以快速搭建可视化页面生产平台,让非技术人员可以通过拖拽和配置,自助生成H5页面、PC页面、TV页面,大大降低页面生产成本。

以下是腾讯视频会员业务基于tmagic-editor搭建的可视化页面搭建平台示意图。tmagic-editor已经用于腾讯视频会员、爱玩游戏、云视听极光、腾讯会议等十几个腾讯业务,每月生产和发布数百个页面。

基于可视化编辑器的页面生产流程

一、物料开发

主要是指业务组件,比如图片组件、抽奖组件、登录插件等。tmagic-editor本身并不提供业务组件,业务组件由使用tmagic-editor的业务,根据自己的业务需求去自行开发。

业务组件一次开发,在多个页面反复使用,业务组件应该提供一些配置选项,保证灵活性,满足不同页面使用该组件时的定制需求。业务组件可以用不同的前端框架实现,如vue2、vue3、react。

二、编排

这里指通过对组件的拖拽和配置,完成页面编辑,主要由非技术人员完成。

三、保存与发布

这个环节在技术实现上,分为生成DSL、构建、部署。

  • 生成DSL: 编辑器和生成的页面之间,通过DSL解耦。编辑器上配置页面,得到的产物是一个序列化js对象的页面描述文件,这个对象采用js schema描述,描述页面的基本信息、包含的组件信息、以及组件间逻辑。

  • 构建: 构建模块基于runtime代码,对组件进行打包构建,生成html、js、css文件。构建环节使用的runtime可以根据业务的需要,选择不同的前端框架实现,tmagic-editor默认提供了vue2、vue3、react三种runtime。

  • 部署: 将前面环节生成的html、js、css、js schema描述文件,部署到业务自己的服务器上。

tmagic-editor提供了什么

可视化编辑器

如上图所示,就是tmagic-editor可视化编辑器,tmagic-editor基于vue3实现。包括左侧侧边栏、组件列表展示、已选组件的组件树、中间的页面拖拽的画布区域(也叫模拟器)、右侧表单配置区域、正中间上方的画布控制区域(放大缩小、网格线显隐)、预览、保存、查看源码(js schema描述的js对象)、底部区域的页面添加与删除。编辑器具有扩展功能,业务可以根据需要在侧边栏和顶部栏增加版本管理、发布等功能。

runtime

runtime 的概念,是理解tmagic-editor页面运行的重要概念,runtime 是承载tmagic-editor页面的运行环境。可视化页面需要在tmagic-editor编辑器中搭建、渲染,通过模拟器所见即所得。

搭建完成后,保存配置并发布,然后渲染成用户访问的真实页面。其中涉及到两个不同的 runtime:编辑器中的模拟器,终端打开真实页面。

由于tmagic-editor在编辑器中的模拟器是通过 iframe 渲染的,和tmagic-editor平台本身可以做到框架解耦,所以 runtime 也可以用不同框架开发。目前tmagic-editor提供了 vue2/vue3 和 react 的 runtime 。

各个 runtime 的作用除了作为不同场景下的渲染环境,同时也是不同环境的打包构建载体。tmagic-editor示例代码中的打包就是基于 runtime 进行的。

管理端demo

编辑器可以对一个页面进行编辑、配置、发布,我们还需要一个管理端来对页面列表进行管理。我们提供了一个管理端demo,方便业务快速搭建起一个完整的可视化搭建平台。管理端提供了如下能力:

  • 页面列表展示,查询

  • 页面创建,复制

  • 页面编辑以及 AB TEST 配置能力

  • 页面发布以及发布状态查看和管理

使用tmagic-editor的业务需要做什么

开发业务组件

tmagic-editor并不提供业务组件,业务需要根据自己的业务场景,开发相应的业务组件。比如抽奖组件、视频播放组件等。tmagic-editor的通用性设计,使得业务方可以使用不同的前端框架去开发组件。

tmagic-editor官方已经提供了vue2/vue3、react的runtime,意味着业务可以直接使用这些框架开发组件,如果业务想用其它框架开发组件,则需要开发相应的runtime。

开发业务插件(可选)

插件的功能是作为页面逻辑行为的一种补充方式。一般不显式的在模拟器中被渲染出具体内容(除非插件中会生成组件并插入页面),通常我们会用插件实现类似登录,页面环境判断,请求拦截器等功能。跟组件一样,可以用不同前端框架实现。

部署可视化搭建服务

tmagic-editor提供的是开源代码,并不是一个saas服务,因此业务需要自己部署可视化搭建平台的服务。

构建和发布页面

业务需要管理自己的组件库,在发布环节基于拿到的页面js Schema描述文件,基于runtime进行打包构建,并把打包构建的产物部署到自己的服务器/CDN。

其它定制需求

如果对编辑器有一些扩展需求,编辑器已经预留了相应的扩展能力,业务可以开发相应扩展功能。tmagic-editor提供了vue2/vue3、react的runtime,业务可以修改runtime,或者开发其它前端框架的runtime。

tmagic-editor能力项

如何了解tmagic-editor

  • 开源地址:github.com/Tencent/tmagic-editor

  • 在线文档:tencent.github.io/tmagic-editor/docs/

  • 在线体验:tencent.github.io/tmagic-editor/playground/index.html

推荐

Java面试题宝典

技术内卷群,一起来学习!!

PS:因为公众号平台更改了推送规则,如果不想错过内容,记得读完点一下“在看”,加个“星标”,这样每次新文章推送才会第一时间出现在你的订阅列表里。点“在看”支持我们吧!

这个牛逼的低代码生成器,现在开源了!相关推荐

  1. 牛逼闪闪的腾讯开源运维系统平台!

    蓝鲸智云(蓝鲸)是腾讯游戏运营部"腾讯智营"下的一个子品牌,它是一套基于 PaaS 的技术解决方案,提供了完善的前后台开发框架.调度引擎与公共组件等模块,可以帮助业务的产品和技术人 ...

  2. 滴滴技术牛逼吗?看它开源了哪些有意思的项目

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作为卓越的一站式移动出行和生活平台,滴滴在亚洲.拉美和澳洲为超过5 ...

  3. 史上最牛逼的导航网站(开源免费)

    ➡️ www.webstack.cc - 网址导航 项目开源地址: https://github.com/WebStackPage/WebStackPage.github.io 内容均由viggo收集 ...

  4. 成都有哪些牛逼的互联网公司

    以前 Java后端 收集过 武汉 上海的 今天是成都的 武汉有哪些牛逼的互联网公司? 上海有哪些牛逼的互联网公司? 天府三街与天府软件园A.B区交汇处 今天我们一起来看看成都有哪些互联网公司,如果有遗 ...

  5. idea本地跑如何看gc日志_牛逼了!用 IDEA 扒出了开源组件导致FGC的原因

    某天上午收到最近发布的一个服务频繁FGC的告警,这个服务只是给公司内部相关人员使用的,并非给互联网用户提供服务的系统.而且功能也比较简单,就是查看一些统计信息.报表数据.数据导出Excel等,访问量非 ...

  6. idea启动日志在哪里_牛逼了!用 IDEA 扒出了开源组件导致FGC的原因

    点击上方"占小狼的博客",选择"设为星标 最近热文 JDK13的 5个新特性,抢先看,开车都追不上了! 面试官问,使用Dubbo有没有遇到一些坑?我笑了. 蚂蚁面试:字符 ...

  7. 超牛逼!这款开源性能监控系统真强大~

    点击关注公众号,回复"1024"获取2TB学习资源! 当网站上线后,流量增加或短暂功能故障,都会造成使用者体验相当不好,而这时该怎么快速找到性能的瓶颈呢?通常 CPU 达到 100 ...

  8. 牛逼,竟然有人开源躺平学习资料!

    点击关注公众号,回复"1024"获取2TB学习资源! 最近「躺平」这个词火了,先看看躺平的概念吧. 网络流行词语,指年轻人出于对压抑的工作文化的失望,与其跟随社会期望坚持奋斗,不如 ...

  9. Android牛逼开源项目分类汇总 .

    [+] 第一部分 个性化控件View 一ListView 二ActionBar 三Menu 四ViewPager Gallery 五GridView 六ImageView 七ProgressBar 八 ...

最新文章

  1. C++并发编程之std::async(), std::future, std::promise, std::packaged_task
  2. 密码学基础知识(六)Hash函数与消息认证
  3. java map赋值给model_Map,Model,ModelMap使用方法
  4. HDU 4405 Aeroplane chess(期望DP)
  5. 删除表报正在使用_U盘拔出要不要点quot;安全删除USB硬件quot;退出?
  6. Python 数据分析三剑客之 Matplotlib(七):饼状图的绘制
  7. Flink JDBC Connector:Flink 与数据库集成最佳实践
  8. matlab中ifelse能嵌套吗,MATLAB嵌套if-else语句
  9. 2017/08/07 工作日志
  10. 添加打印机无法搜索计算机,添加打印机搜索不到打印机怎么办
  11. 计算机 桌面显示桌面图标不见了,显示桌面图标不见了怎么办,小编教你电脑显示桌面图标不见了怎么解决...
  12. 如何有效提升留存率促进用户活跃?
  13. CVPR 2021 | 自监督学习新思路!S2-BNN:基于蒸馏的自监督学习算法
  14. 手把手教你用深度学习做物体检测(四):模型使用
  15. 推荐三款动态壁纸软件,足够让你的桌面惊艳!
  16. 用树结构描述和计算数据
  17. 【北亚服务器数据恢复】华为OceanStor系列服务器重装系统导致分区不可访问的数据恢复
  18. C#读写调整UVC摄像头画面-饱和度
  19. 华为国际快递被转运至美国 联邦快递致歉:误送
  20. 2018年首届豌豆杯WriteUp

热门文章

  1. 【Python】scipy之艾里函数
  2. el-select 在iOS手机上,无法唤起软键盘以及二次点击问题
  3. Bootstrap(五) 导航条、分页导航
  4. 绿色软件:飞鸽传书使用指南
  5. 宽带离网用户分析(5) Lasso和Group Lasso
  6. jq实现页面滑动到一定位置显示返回顶部按钮,点击回到页面顶部
  7. RescoPhotoViewer图片查看v5.0_s60v3破解汉化版by八神
  8. McAfee阻止邮件发送功能
  9. 数据结构--顺序表、链表、栈、队列、树、文件(visual studio可运行)
  10. ROS routerOS 软路由