Molecule实现数栈至简前端开发新体验
Keep It Simple, Stupid.
这是开发人耳熟能详的 KISS 原则,也像是一句有调侃意味的善意提醒,提醒每个前端人,简洁易懂的用户体验和删繁就简的搭建逻辑就是前端开发的至简大道。
这也是袋鼠云数栈前端开发团队追求的目标。
数栈是一个专注一站式产品体系,覆盖数据全链路开发流程,全面国产化兼容,核心源码自主可控的云原生一站式大数据开发治理平台。
2021年12月16日,基于数栈多年大数据开发经验的基础沉淀出的轻量级 Web IDE 组件库,Molecule 开源。2022年2月22日,将Molecule 作为其中一个重要 UI 组件搭建出的分布式可视化的 DAG 任务调度系统——Taier,也紧锣密鼓加入了开源社区。
在Taier经过数百家企业客户的生产环境实战检验之后的今天,我们想用今天这篇文章跟大家分享一些在 Taier 的搭建过程中时遇到的Molecule 与antd如何适配的解决经验和它们在 Web IDE 开发中的实战表现。
一、介绍
Taier 是数栈搭建的一个可视化 DAG 任务调度系统,其搭建初衷是为了让大数据开发工程师可以将精力集中在业务逻辑的开发上,而不用被任务错综复杂的依赖关系捆住手脚。这一目标就要靠其中 Web IDE 的部分实现。
而在数栈平台日积月累的迭代中沉淀而来的Molecule ,作为轻量级的 Web IDE UI 框架,能极大地减少搭建编辑器的时间,其具有的扩展(Extension)机制也使它可以轻易地应对各种需求增长。Molecule抽象自数栈产品中离线任务的在线编辑配置功能,同时反哺支撑了各个产品中都存在的在线编写 SQL 代码。Molecule在各方面的不俗表现使我们很快意识到,用Molecule来承担Taier系统中的IDE组件角色几乎是顺理成章。
二、优势
Molecule之前,前端苦Web IDE久矣。
Web IDE的开发从来是整个大数据平台开发中非常繁复和笨重的一环,从零搭建一个 Web IDE 通常意味着大量的殚精竭虑和苦思冥想,时间成本更是不可计数。传统的 IDE 框架熟悉门槛高,维护费用大,对维护人员的技术一直都有很高要求。数栈的研发团队对此深有体会,我们开源的 Molecule 从最开始就对“开箱即用,维护方便”这个目标非常坚定,从开源以来它也在不断完善,现在我们可以自信的说,Molecule 将 Web IDE UI 框架做到了轻量级,高延展,在不牺牲需求可能性的前提下极大地提升了前端开发体验,是一套具备完整的解决方案的开发组件框架。
三、应用与实践
将 Molecule 加入 Taier 的过程不是一帆风顺的。为了解决 Taier 中需要开发 Web IDE 和大量传统表单表格的问题,我们不得不同时引入 Ant Design 和 Molecule。

而一个前端项目里两个组件库同时使用立刻出现了样式冲突的问题,Molecule的加入让原本仅由antd参与的开发界面“破坏”得让我们哭笑不得。我们不得不思考,将多个 UI 组件库用于同一个前端项目,如何解决样式风格冲突问题?不同的组件有不同的设计体系,不同体系间又该如何交互?经过无数次摸索实践和不断调整,我们找到了解决办法:
3.1 如何解决风格冲突
首先,整体风格颜色的冲突可以通过自定义主题色来解决,而 Ant Design 和 Molecule 都具备通过配置的方式来实现修改整体主题色,如:

配置完上述属性后,Ant Design 所有组件用到的主品牌色就被修改成了 #3f87ff 这个颜色。除此之外,我们还修改了其他一些样式使 Ant Design 的整体风格更偏向 Molecule,如圆角属性,超链接属性等。
除了主题色的修改以外,还需要解决动态主题色的适配问题。Molecule 强大的功能之一就是可以基于自己的喜好切换不同的主题,例如:Dark Default 主题或 Light Default 主题。而 Molecule 可以方便地切换主题的原因简单来说是基于 CSS 变量实现的。而目前 Ant Design 的动态主题功能仍处于实验性的功能,故我们另辟蹊径。通过 Molecule 提供的监听主题色改变的事件,动态地加载不同主题风格的 Ant Design 样式文件。如:

以上代码的大致意思是,当 Molecule 的主题发生改变的时候,如果改变后的主题是暗黑主题,那么我们就加载 Ant Design 的暗黑主题风格的样式文件,否则我们移除 Ant Design 的暗黑风格主题样式文件。
下面两张图就是适配前和做完调整之后可以自由选择的开发界面:


3.2 如何适配交互体系
在传统的大数据平台中,当我们修改某个任务并提交代码后,我们需要跳转页面至任务管理或调度管理查看一些相关运行信息或调度信息。有时我们并不想离开当前的编辑页面,同时又想进入调度管理页面查看相关信息的时候,就不得不的来回切换页面或打开新的页面来回切换。
得益于 Molecule 提供的强大的扩展(extension)机制,我们可以在扩展中根据自身需求高度定制化页面中任何可见或不可见的元素。例如在开发任务管理时,为了解决页面之间来回切换跳转的问题,我们通过将任务管理添加到 Molecule 的菜单栏中,并且监听菜单栏的事件后打开 Ant Design 的抽屉组件渲染不同组件内容。

3.3 其他优化
除了可以对菜单栏自定义以外,我们还可以对任意区域自定义。例如在处理数据源中心的过程中,我们将数据源中心添加到了活动面板(ActivityBar)处,同时借助 Molecule 提供的 API 将新增或编辑数据源窗口添加到 Molecule 的 IDE 区域。使得数据源中心同样也不需要来回切换页面,而是通过当前在页面切换面板,打开 Tab 等方式进行修改。
除了上述提到菜单栏和活动面板以外,Molecule 支持对所见的所有区域均可自定义。具体细节可以通过 Molecule 的官方文档进行查看。
在引入 Molecule 后,在 Taier 上的开发不再需要从零开始布局,对单个组件进行一一搭建, 而是可以直接将不同的组件填充到对应的布局区域中。Molecule 的加入极大地减少了前期的开发时长,同时将开发人员从组件的维护和代码的底层逻辑清理中解放出来,能把精力集中到业务本身。
同时, Molecule 的 引入优化了 Taier 的交互方式,在不舍弃已有的 Ant Design 的前提下,数栈设法兼容了 Molecule 的风格,提升了一站式大数据开发平台的用户体验。
四、总结
数栈技术团队一直相信开源文化的生命力。“人人为我,我为人人”的理想火种也一直在每个数栈开发人的心里燃烧。数栈这个大家庭汇聚了一帮志同道合的战友,将开源协同这种高能效,跨边界的软件开发模式从起步始,一直贯彻至今。我们对开源路线始终坚定的原因,除了数栈对技术优化的重视,也出于我们处为行业领先水平后,对社区责任感的充分意识,想尽自己绵薄微力,为整个软件行业的技术水平提升添砖加瓦。
Molecule从我们的日常开发工作中沉淀而来,是一个“专用于一线开发人员实际开发场景”的UI框架,而我们相信开源之后,它会在提高广大开发同仁工作效率,提升开发体验的同时,也能在实际使用中暴露出它还可以继续改良优化的问题。我们真诚欢迎同社区的朋友进行交流和探索,我们做分享,也在分享中不断向强者学习。数栈惟愿和社区的研发者共同进步,繁荣国内开源的生态圈
Molecule实现数栈至简前端开发新体验的更多相关文章
- 开放融合易用@门户移动开发新体验-逐浪CMS v8.0.1全面发布
北京时间2019年8月30日消息: 领先的web内核研发厂商--上海Zoomla!逐浪CMS团队发布最新CMS版本:Zoomla!逐浪CMS v8.0.1,这是继上个版本v8.0后功能最具完强大与精彩 ...
- .NET界面开发新体验!DevExpress v19.2.4全新来袭
DevExpress Universal Subscription(又名DevExpress宇宙版或DXperience Universal Suite)是全球使用广泛的.NET用户界面控件套包,De ...
- Web前端开发大系概览 (前端开发技术栈)
前言 互联网建立50多年了,网站开发技术日新月异,但web前端始终离不开浏览器,最终还是HTML+JavaScript+CSS这3个核心,围绕这3个核心而开发出来大量技术框架/解决方案. 我从2000 ...
- 基于.Net进行前端开发的技术栈发展路线(二)
前言 上一篇<我的技能树>文章分享了我的技能成长过程,还未完成,今天继续跟大家分享. 01 我的技能树 我的当前的技能树: 其中,标注为黄色旗帜的是基本掌握,标注为红色旗帜的为使用熟练.未 ...
- 基于.Net进行前端开发的技术栈发展路线(一)
前言 今天想讲讲的是我的技术树.我最初是做CS开发的,第一阶段的技术经历是以Powerbuilder来做CS开发,第二阶段开始基于C#做winform开发,眼看前端开发越来越流行,需要更广泛的技术栈势 ...
- 基于.Net进行前端开发的技术栈发展路线(三)
前言 上一篇<我的技能树二>文章分享了我的技能中的前端技能和Java技能,今天继续跟大家分享的就是后端技能了. 我的技能树 我当前的技能树: 其中,标注为黄色旗帜的是基本掌握,标注为红色旗 ...
- python 全栈开发,Day90(Vue组件,前端开发工具包)
昨日内容回顾 1. Vue使用 1. 生成Vue实例和DOM中元素绑定 2. app.$el --> 取出该vue实例绑定的DOM标签 3. app.$data --> 取出该vue实例绑 ...
- BAT 前端开发面试 —— 吐血总结
更好阅读,请移步这里 聊之前 最近暑期实习招聘已经开始,个人目前参加了腾讯和阿里的内推及百度的实习生招聘,在此总结一下 一是备忘.总结提升,二是希望给大家一些参考 其他面试及基础相关可以参考其他博文: ...
- 淘宝前端工程师:国内WEB前端开发十日谈
一直想写这篇"十日谈",聊聊我对Web前端开发的体会,顺便解答下周围不少人的困惑和迷惘.我不打算聊太多技术,我想,通过技术的历练,得到的反思应当更重要. 我一直认为自己是" ...
随机推荐
- 05网络并发 ( GIL+进程池与线程池+协程+IO模型 )
目录 05 网络并发 05 网络并发
- 《STL源码剖析》学习半生记:第一章小结与反思
不学STL,无以立.--陈轶阳 从1.1节到1.8节大部分都是从各方面介绍STL, 包括历史之类的(大致上是这样,因为实在看不下去我就直接略到了1.9节(其实还有一点1.8.3的内容)). 第一章里比 ...
- Latex公式导出word,Latex转换MathML使用POI导出公式可编辑的Word文件
背景 之前在 使用spire.doc导出支持编辑Latex公式的标准格式word 博客中写过,使用spire.doc来生成word,不得不说spire.doc的api操作起来还是比较方便,但是使用的过 ...
- 02.Oracle之安装与配置
1.Oracle简介 Oracle是世界上最早的商品化的关系型数据库管理系统,是数据库专业厂商ORACLE(中文名字叫甲骨文)公司开发的,也是当前应用最为广泛.功能最强大.具有面向对象特点.采用了客户 ...
- IDEA配置scala
IDEA中配置scala 准备:先下好IDEA和scala安装包,配置好jdk环境 scala不想去官网下载的可以直接去百度网盘下载 链接: 链接:https://pan.baidu.com/s/17 ...
- [Golang]Go语言入门笔记
跟着尚硅谷B站视频记的笔记 入门 go 编译和运行源代码 go build 编译源代码,生成可执行文件 go build -o newName.exe name.go go run 直接编译运行代码 ...
- Python 中 selenium 库
目录 selenium 基础语法 一. 环境配置 1. 安装环境 2. 配置参数 3. 常用参数搭配 4. 分浏览器启动 二. 基本语法 1. 元素定位 2. 控制浏览器操作 3. 操作元素的方法 3 ...
- 4款BI工具功能大对比,这款BI工具你不能错过!
在这个信息爆炸式增长的时代,挖掘数据的潜在价值显得尤为重要.越来越多的人将目光聚集于商业智能领域--BI(Business Intelligence),通过数据分析软件对来自不同的数据源进行统一的处理 ...
- 支持 dd 命令的简单的 GUI 实用程序
Kindd-支持 dd 命令的简单的 GUI 实用程序 "Kindd",一个属于dd 命令的图形化前端.它是自由开源的.用 Qt Quick 所写的工具.总的来说,这个工具对那些对 ...
- 【C# IO 操作 】开篇 IO命名空间的解析
图片模板下载 System.IO命名空间类分为:文件.驱动 .目录.路径.流.比特率流的操作 驱动类:比较简单,所以就不区分静态和实例操作类,所有的操作合并在DriverInfo类中 路径类:比较简单 ...