介绍
Jiess基础库,是实践的总结,是基于Jiess核心库的拓展
注:本库依赖@jiess/plus,并结合UI框架搭配使用
基础库的设计
与通常的理解不同,基础库并没有发布到npm仓库,而是置于项目本地的目录中
为什么不是npm包
早期的Jiess基础库也是npm依赖包,但逐渐暴露出以下问题:
- 需要支持单页的html页面
- 不方便调试代码和排查问题
- 偶尔定制化调整库中代码
总结就是,Jiess基础库需要应对各种天马行空的需求,所以需要给使用者适当的调整空间
命名与放置
Jiess基础库,对命名没有限制;仅约定在项目中以.jiess
命名目录
- 在html单页中:该环境不支持以
.
开头的文件夹,所以不做命名约定 - 在项目中命名:建议以
.jiess
命名,因为Jiess自动化插件会读取该目录名
Jiess自动化插件
- 该插件是可根据不同的项目环境安装Jiess基础库
- 如果项目中存在
src
目录,则在src/.jiess
目录下安装 - 如果项目中不存在
src
目录,则在根目录/.jiess
下安装
项目启动时会自动查看基础库目录是否存在,如果不存在则会从仓库中拉取基础库
特点
支持多种研发环境
Jiess基础库使用export
导出,所以在html单页中支持import
导入
注:html单中导入设置script标签:
type=module
结合UI框架
结合主流,Jiess基础库选择了三种UI框架,与三种技术栈做搭档
- vue2项目:使用 element-ui
- vue3项目:使用 element-plus
- react项目:使用 antd-ui
研发中,咱们搭配UI框架,省去了重复造轮子;所以,Jiess基础库同样搭配UI使用
使用其他的UI框架?
Jiess基础库与UI框架需要严格的匹配,才能使用其提供的拓展能力, 如果确有必要的话,那就结合自己的UI,重构一份吧配置吧
- 举例 vue技术栈下使用antd
首先在.jiess/vue3/antd下构建目录,然后参考内置的.jiess/vue3/element目录中的文件, 针对弹框,布局和列表三大模块进行重构,便可以为自己量身打造一份配置
功能与应用
Jiess基础库,针对以下三类问题,给出简化方案
除了这三类问题,Jiess基础库还提供了一些常用组件哦
布局与渲染
思考一下?
页面的一行,放几个元素?每个元素占据多大的宽度?诸如此类需求(尤其是表单页)很常遇到吧? 需求其实很简单,可如何让常见的需求做到通用,你会如何处理呢?
以下是Jiess基础库,布局与渲染模块的功能:
快速布局
- 页面中构建一块区域,每块区域有单独的Form,Card和Row,区域内容嵌套于区域内部
- 每块区域可以方便的定义标题和头部按钮,并对其内部表单进行表单校验,以及数据控制
- 每块区域单独定义内部组件的宽度,同时也可对内部组件的宽度单独控制,实现快速布局
快捷渲染
- 为简化实际开发种对表单多层嵌套的问题,对常用的表单组件提供了快捷渲染的方法
- 快捷渲染方法种,对组件外层包裹了FormItem和Col,实现了对组件的数据控制和布局控制
- 在简化组件嵌套的同时,对表单的校验也给出简洁的优化方案,进一步降低代码冗余
全局弹框
思考一下
弹框是每个项目的刚性需求,然而弹框的复用性通常是很低的,在需要用到的地方往往都需要单独的定义; 那么能不能做一个全局的弹框,满足整个项目任意的弹框需求?
以下是Jiess基础库,布全局弹框模块的功能:
- 基于Jiess组件,支持弹框中任意内容的渲染
- 实现无限级弹层,实现了对任意弹框需求的支持
- 在弹框操作种可以方便的使用Jiess语法以及Jiess组件
列表模块
思考一下
列表页面,常用于作为每个模块的“门面”,一般包含筛选,列表,分页三个部分,三者间的字段存在高度的相似性, 那能否将三者统一维护,从而降低开发与维护的复杂度呢?
以下是Jiess基础库,列表模块的功能:
- 列表模块由筛选区,列表主体区,和分页区三个部分构成,支持灵活布局以及自由组合
- 实现了列表表头,筛选区,以及新增区,编辑区,四区间的有机整合,有助于字段统一