共计 3437 个字符,预计需要花费 9 分钟才能阅读完成。
原文链接:基于开源大数据调度零碎 Taier 的 Web 前端架构选型及技术实际
课件获取:关注公众号 “数栈研习社”,后盾私信“Taier” 取得直播课件
视频回放:点击这里
Taier 开源我的项目地址:github 丨 gitee
上两期,咱们为大家分享了 Taier 入门及控制台的介绍,本期咱们为大家分享 Taier 的 Web 前端架构介绍。本次分享咱们将从 Taier 的前端技术栈选型,到技术实现以及将来布局为大家解说。
一、Taier 的 Web 前端技术栈介绍
首先咱们来为大家介绍 Taier 的 Web 前端架构图,如下图所示:
咱们的我的项目以 UmiJS 作为底层脚手架,在此基础上,引入 TailwindCSS、Sass、React 三个插件,在 UI 组件库中引入 Molecule 和 Ant Design,辅以 esbuild 作为编译打包的工具,最初的产物是 HTML 和 JavaScript。
1、前端脚手架选型介绍
在前端泛滥的脚手架、框架中咱们抉择了 UmiJS 作为咱们的底层脚手架,之所以抉择 UmiJS 的起因,次要是基于以下几点的思考:
- 上手成本低,启动我的项目快
- 较少的配置需要,须要疾速搭建页面
- 须要整合 Ant Design
- 有团队保护,后续开发有保障
2、UI 组件库选型介绍
在 UI 组件库的抉择上,除了引入 Ant Design 外,咱们还引入了 Molecule。
Molecule 是我司开源的一个轻量级 Web IDE UI 框架。通过实现插件(Extensions)的机制,咱们能够疾速地从一个 Workbench 实现一个功能齐全的 IDE 我的项目,具备轻量级,可扩大,易上手等特点。点此进入 molecule 介绍
在 Taier 的界面中,整个 IDE 的界面就是基于 Molecule 所提供的 Workbench 所做的自定义,这一部分是 Taier 界面至关重要的一部分。
二、Taier 前端技术实现详解
在理解完前端技术栈选型之后,接下来咱们对其中的技术实现做深刻的介绍。
1、目录架构
首先,咱们以 Taier 的目录作为切入点来理解 Taier 前端最重要的三个技术点,别离是 Pages、Extensions、Services 文件夹。
- Pages 文件夹
基于 React 实现的 JSX 文件,咱们将其定义为 View 层
- Extensions 文件夹
基于 Molecule 所提供的性能,次要实现了 Model 和 Controller 层的内容
- Services 文件夹
次要实现 Controller 层的内容
2、技术架构介绍
基于上述的剖析和了解,咱们能够看出 Taier 前端是一个比拟典型的 MVC 架构。
接下来,咱们详细分析这三者组成的 MVC 架构是如何在我的项目中发挥作用,三者之间是如何分割并撑持起 Taier 我的项目。
- React
React 是 Facebook 开源的一个用于构建用户界面的 JavaScript 库,较高的性能和较为简单的代码逻辑使得自公布以来,越来越多的人关注和应用它,而在此我的项目中咱们应用的是 React 的 SPA、申明式及组件化这 3 个特点,其对应到页面的长处别离是晋升用户体验、组件状态简洁及组件逻辑服复用。
- Molecule
接着,咱们介绍一下 Molecule 在 Taier 中的利用。Molecule 以 Workbench 作为根底,通过 Extensions 能够扩大 Workbench 的性能,通过 Components 丰盛 Workbench 的交互。这对于服务端的同学来说,可能会比拟形象,咱们能够把 Extensions 的性能了解为 Java 中的 Implement,把 Components 了解为 Extends。
- Services
Services 的作用是封装通用的对数据模型的操作。譬如针对编辑器的 actions,咱们须要针对不同的工作展现不同的 actions,同时在快捷操作中,咱们须要判断当前任务所具备的 actions。那这种扩散在不同组件,具备雷同逻辑的代码,咱们将其提取进去,形象出一个 EditorActionBarService
- React 和 Molecule 的分割
基于咱们方才介绍的 Molecule 的个性,这里咱们只须要将基于 React 实现的 JSX/TSX 组件通过扩大的模式,对 Workbench 进行自定义即可。
如图所示,咱们通过调用 molecule.editor.setEntry 来自定义 Workbench 的入口页,通过 molecule.activityBar.add 以及 molecule.sidebar.add 来将数据源核心增加到左侧流动面板之中。
咱们能够察看到,只须要调用 molecule.x.y 如上模式的代码,将 React 组件传入即可。其中 x 代表以后要对哪一块面板进行操作,能够是 editor,能够是 sidebar 等,y 代表了要进行什么操作,包含 add,remove,update 的操作。
- Molecule 与 Services 的分割
咱们通过 Extensions 中调用 Services 办法,而后在 Services 中调用 Molecule 导出对象的办法即可。具体如下:
图中所示是通过删减的 CatalogueService,次要负责 Taier 中工作目录的实现。
其中有一个办法是 loadRootFolder,这里的逻辑是从服务端获取到目录信息,而后进行解决,将解决后的目录节点信息通过调用 molecule.folderTree.add 办法增加到工作开发目录中。在申明出如上的 Service 后,咱们须要初始化该 Service,而后在 extensions 中调用即可。
- Service 和 React 的分割
比拟相熟前端的同学可能曾经晓得能够通过 HOC 来实现,那这里咱们给不相熟的同学简略介绍 HOC 的作用。
高阶组件(HOC)是 React 中用于复用组件逻辑的一种高级技巧。HOC 本身不是 React API 的一部分,它是一种基于 React 的组合个性而造成的设计模式。
在前端大部分的状态管理工具中,都有一个 connect 就是一个 HOC。在 Taier 中,咱们同样也基于 HOC 去实现 Service 和 React 的分割。
咱们申明一个 RightBarService,次要负责渲染右侧的侧边栏,将其初始化之后,咱们通过如下形式将实例和 React 组件分割上。
咱们能够察看到,connect 作为一个函数,第一个参数是咱们初始化后的 Service 实例,第二个参数是咱们须要与 Service 分割的具体组件。同时咱们察看到该组件的参数(即 props)中能够获取到 Service 中存储的数据结构,在简略地应用后,就能够在组件内容获取到 Service 的数据。
然而仅仅获取到数据是不够的,在大多数状况下,咱们须要该数据的扭转来引起组件的重渲染。而这一块的实现得意于 Molecule 提供的一个 Component Class,在遵循某种标准下,继承该 Class 的 Service 中的数据产生扭转后会引入与该 Service 相关联的组件重渲染。
三、Taier 前端将来布局
对于 Taier 前端的将来布局,咱们将遵循以下三个方面;
– 更稳固
首先,咱们要做到更稳固。目前 Taier 我的项目的稳定性还不够,更稳固是咱们始终谋求的指标,将来咱们要做到:
- 晋升测试覆盖率,确保稳定性
- 优化谬误提示信息,以确保产生谬误后能够通过谬误排查问题
- 反对埋点平台或其余监控平台接入,确保所有谬误都可被捕捉被检测
易扩大
其次,咱们要做到易扩大。将来咱们将在以下这几点发力:
- 反对更多的工作类型,目前 Taier 所反对的 5 种工作类型在大数据开发中仍是不够的,咱们后续会继续迭代,反对更多的类型
- 反对针对不同工作代码解析出纲要,纲要的作用是让大数据开发更容易在大段的代码片段中定位到所需代码的地位
- 对二次开发用户敌对,这一点与前一期提到的一样,不止是服务端须要反对,同样前端也须要反对自定义组件的开发
易上手
最初,咱们要做到易上手。目前 Taier 的上手次要依附用户本身对大数据开发的教训,那么对于大数据开发教训较少的用户只能依附为数不多的文档进行相熟,将来咱们会针对以下方面进行改善:
- 丰盛 coding 的语法补全性能,即 snippet 性能
- 优化文案提醒
- 优化代码体验
以上就是 Taier Web 前端架构的介绍和将来的一些布局方向,也欢送大家来一起交换探讨,Taier 技术团队心愿和大家一起成长,一起更好的建设 Taier。
原文起源:VX 公众号“数栈研习社”
袋鼠云开源框架钉钉技术交换群(30537511),欢送对大数据开源我的项目有趣味的同学退出交换最新技术信息,开源我的项目库地址:https://github.com/DTStack