专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

OpenDataV低代码平台新增组件流程

  前天我们发布了OpenDataV低代码开源框架,有很多友友留言想要了解怎么增加组件,为了方便大家快速上手,马上趁热发布一篇。
  OpenDataV计划采用子库的方式添加子组件,即每一个组件都当做一个子库,子库有自己的依赖,而项目本身的依赖只针对框架,因此每一个组件我们都当做一个子库来开发。下面我带着大家一步步详细地开发一个数字展示组件。创建组件目录和文件进入组件库目录下
  所有的可拖拽组件都存放在srcresourcecomponents目录下cdsrcresourcecomponents根据组件名称创建目录
  默认组件目录是以组件的名称命名,当然也可以根据自己的要求命名,组件可以放在components目录下,也可以放在其子目录的目录下。mkdirDigitalText创建组件所需的固定文件
  每个组件必须的文件有vue文件xxx。vue、配置文件config。ts、导出文件index。ts,每个文件有自己的用处,vue文件不用说了是组件渲染的主体,导出文件名称固定为index。ts,主要是导出组件的信息给外部引用,配置文件主要是在编辑页面右侧展示的配置项,这个我们后面再详述。所以这里我们需要创建三个文件:DigitalText。vue、config。ts、index。ts
  以上我们就创建好了组件所需的文件,下面就需要做组件的初始化了初始化组件文件
  因为我们的组件都是以子库的方式引入,所以需要进行包的初始化,执行以下命令cdsrcresourcecomponentsTextDigitalTextnpminit
  这里使用npm初始化包会让我们选择填写部分数据。
  下面我们先初始化一下组件文件DigitalText。vue,先初始化最简单的组件数据template数字展示templatestylelanglessscopedstyle
  然后我们要初始化组件的配置文件config。tsimport{ComponentGroup,FormType}fromenumimporttype{PropsType}fromtypescomponentimport{BaseComponent}fromresourcemodelsexportconstcomponentNameDigitalclassDigitalComponentextendsBaseComponent{constructor(id?:string,name?:string,icon?:string){super({component:componentName,group:ComponentGroup。TEXT,name:name?name:数字文本,id,width:100,height:30,icon})}}exportdefaultDigitalComponent
  这里要说明的点:componentName是组件在项目中的注册名称,因此必须保证唯一,group是给组件分组,这里的分组主要是展示在组件拖拽页面,其类型的ComponentGroup是固定好的,可以自己增加,展示位置如下:
  name是组件在拖拽页面上显示的名称,width和height是组件拖拽到画布上显示的初始大小
  配置完组件后数据后,就可以配置导出文件index。ts了,主要是导出组件名、组件对象和配置项。importDigitalTextComponent,{componentName}from。configexportdefault{componentName,component:()import(。DigitalText。vue),config:DigitalTextComponent}
  初始化到这一步,我们的组件已经可以在编辑页面正常使用了,看一下效果:
  在右边的编辑页面我们看到有样式和属性,所有的组件都包含基础样式位置大小,包括组件的上下边距和宽高,属性包含公共属性,其中组件和组件ID无法修改,主要是展示来看的,名称可以修改,名称属性主要是展示在图层上,修改名称后图层上会响应的显示修改后的名称。
  这是最基础的组件,只能展示固定数据,不能进行任何配置,下面我们要做组件的配置项。组件配置项样式配置
  作为文字显示组件,最基础的字体相关属性配置应该要有,比如字体、字体颜色、字体大小、字体宽度,配置项依然是在配置文件中添加,继承自基础组件类的私有属性styleclassDigitalTextComponentextendsBaseComponent{constructor(id?:string,name?:string,icon?:string){。。。。。。}style:PropsType〔〕〔{label:字体设置,prop:font,children:〔{prop:color,label:颜色,type:FormType。COLOR,componentOptions:{defaultValue:skyblue}},{prop:fontSize,label:字体大小,type:FormType。NUMBER,componentOptions:{defaultValue:20}},{prop:fontWeight,label:字体宽度,type:FormType。FONTWEIGHT,componentOptions:{defaultValue:200}},{prop:fontFamily,label:字体,type:FormType。FONTSTYLE,componentOptions:{defaultValue:Arial}}〕}〕}
  样式配置的格式已经定义好了,其中需要注意的是所有children下的子项中prop必须是html元素的css属性,具体的css属性名称并不是我们在style文件中填写的,而是在js中对应的名称,这个可以在网上搜索:css3中文手册,类似如下:
  我们再详述一下各配置项的意义:label:配置显示的分组名prop:唯一的属性区分,此属性要与同级别中的其他配置不同children:此属性组下面的配置项label:每个属性的名称prop:css属性值type:属性编辑时显示的组件类型,目前可显示的组件是固定的,类型都定义在FormType中componentOptions:属性对应的配置项,不同类型的组件有不同的配置项,具体可以在srctypescomponent。d。ts中查看定义,所有配置都有defaultValue配置,作为属性初始化时的默认值
  配置完样式后,我们在编辑页面看一下效果:
  搞清楚了样式的配置,下面我们再说说属性的配置,属性配置与样式配置格式一致,有一些小细节需要注意。属性配置
  属性配置是继承私有变量prop,配置格式与样式相同,我们这里配置一个示例属性:classDigitalTextComponentextendsBaseComponent{constructor(id?:string,name?:string,icon?:string){。。。。。。}prop:PropsType〔〕〔{label:数据配置,prop:dataconfig,children:〔{prop:data,label:数据,type:FormType。NUMBER,componentOptions:{defaultValue:100000,max:99999999,min:0}}〕}〕}
  格式这里就不解释了,这里我们用到了数值类型,因此可以配置最大最小值。
  接下来就是要在vue文件中使用属性配置了,属性不像样式,样式是html元素本身就支持的,因此只要我们配置好,就可以生效了,但是属性是组件专有的,什么属性要产生什么效果全凭我们自己书写逻辑,因此配置好属性我们只会在编辑页面看到属性展示和配置,但是实际配置后是没有任何效果的,具体效果我们在vue中实现。属性使用
  首先我们要添加一个类型定义文件,因为ts最基础的优势就是类型提示,而我们封装的组件基类是通用的,因此需要在每个组件中使用自己的属性类型定义,定义如下:DigitalTexttype。tsexportinterfaceDigitalType{dataconfig:{data:number}}
  为了准确地进行提示,类型定义必须和属性配置一致,具体来讲就是children下面的prop作为属性值,children外面的prop作为属性键,可以对比一下type。ts中的配置和prop的配置。
  组件的配置信息是通过外部传入的,所以所有组件都必须接收外部数据,我们已经定义好了固定的格式constpropsdefineProps{component:DigitalTextComponent}()
  组件相关的所有信息都将通过component传入进来,为了监听属性变化和类型提示,我们封装了一个hook,减少每个组件中通用的处理,useProp的使用如下:constpropChange(prop:string,key:string,value:number){console。log(prop,key,value)}const{propValue}usePropDigitalType(props。component,propChange)
  useProp接收三个参数,一个是component,主要是为了添加类型提示,所以这里也传入了一个泛型定义,就是我们在type。ts中定义的类型,另外两个参数是属性变化回调函数和样式变化回调函数。一般情况下我们只需要处理属性变化回调,样式变化是自动生效的,所以基本上不用处理,如果有特殊需求才需要。属性变化回调函数中有三个参数,prop对应的是属性配置中外层的prop值,key对应的是属性配置中children中的prop值,而value就是属性变化的值。
  最终我们的属性处理结果如下:template{{data}}templatestylelanglessscopedstyle
  看一下页面上的效果:
  上面我们用了属性回调去处理值变化响应,实际上还有其他的方式可以处理,我们要明白属性回调的根本需求是什么?主要就是为了编辑了对应的属性后,我们在组件内能监测到变化反馈到显示上。相同这一点,可用的方法就多了。直接使用props传递的属性值在template中渲染数据template{{propValue。dataconfig。data}}templatestylelanglessscopedstyle属性变化回调的另一种用法template{{data}}templatestylelanglessscopedstyle
  属性变化回调接收任何参数,我们可以选择接收参数,也可以不接收参数,在一些配置项比较多的组件中,我们不想在属性回调中去一个一个判断变化的属性,那么就可以使用这种方式,在这种方式中我们只是把属性回调作为一个通知,即通知我们属性发生变化了,而我们不关心哪一个属性发生了变化,把所有的属性都修改一遍即可,虽然听起来比较麻烦,但是在一些复杂组件中确实很有作用。在这里我们要明白,只要属性发生了变化,那么prop中的数据也必定发生了变化,所以我们随时取prop中的数据它都是最新的。总结
  到这里,一个组件的整个添加过程就讲完了,根据目前的开发进度来看,基本上所有的部分都讲到了,如果有人在使用过程中发现了什么问题或者有哪些地方不够清楚的,可以在项目的issue中提,也可以通过其他方式反馈。

写给心累的自己人生就是一条没有往返的单行线,生命就是一趟旅程,沿途风景再美,也要学会边走边忘。生活就是曲折漫长的征程,人生就像一条曲线,生活中的苦与乐,月圆与月缺,生命才真实而有意义。我耗尽了力寻找快乐宽容别人,成全自己诺贝尔和平奖获得者,南非黑人领袖纳尔逊曼德拉被囚禁长达27年之久。他在出狱的当天说当我走出囚室,迈出通往自由的监狱大门的时候,我已经清楚,自己若不能把悲痛和怨恨留红尘作伴人啊,只有好好的爱自己了,人生的道路上就会越来越好。曾经的时候,总以为能讨得上他人的喜欢了,自己就能有幸福的生活。所以总是拼命的付出了许多,哪怕是自己为此并不是快乐,却也觉得无所谓中国往返马来西亚12月航班计划!入境大马须知各大航空公司12月国际航班计划出炉啦!一起来看看吧!01中国南方航空中国南方航空12月航班计划为,每周五执飞广州吉隆坡往返航线,航班号为CZ349CZ350。另外,也将于每周三和每长骑恩施(D06)丹江口到武当山2014年4月9日,星期三,晴天,西南风23级,丹江口气温1628度。骑向恩施第六天,丹江口市龙河乡土关垭镇浪河镇丁家营镇武当山特区。骑程6793公里。自然成眠的一觉睡得极好,早上夜经济点亮古商城12月9日,游客在湖南怀化洪江古商城游玩直播。近年来,湖南省怀化市洪江区洪江古商城立足洪商文化,推进文旅深度融合,积极开发夜间消费业态创新夜间文旅活动。洪江古商城被誉为湘西明珠,历三合村与吴八老岛(1)奔腾的黑龙江浩浩荡荡,千回百转,从源头洛古河行程480公里,就来到了呼玛县境内的第五个自然村镇三合村。三合村隶属于大兴安岭地区呼玛县鸥浦乡,她是一个美丽的江畔自然村屯。三合小村依山张掖丹霞通用机场飞行量再创新高至2022年11月,张掖丹霞通用机场本年度共飞行235天,26598架次。其中甘肃泛美公司25706架次,公航旅金汇公司724架次,其他公司168架次。飞行架次数已超过去年全年总量广金举办这场论坛,聚焦社会信用体系高质量发展近日,广东金融学院举办第十一届华南信用管理论坛暨第五届全国信用管理学科专业建设研讨会,来自清华大学复旦大学上海财经大学等全国多所高校和各界专家相聚云端,以社会信用体系高质量发展为主世界杯真有假球?网友利益牵涉够大,一切皆有可能!点击右上方关注,第一时间获取每天行情点评炒股技巧时事热点资讯等,有任何问题欢迎留言。近日,世界杯席卷各大媒体头条,足球被称为世界第一运动,具有非常强的商业属性!一场足球盛宴,能刺激海商报业旗下文旅集团与飞猪旅行深度合作海南开展精品体育研学游项目得天独厚商报全媒体讯(椰网海拔新闻记者魏铭纬柯育超摄影报道)12月11日,2022年花YOUNG海南体育研学游推广活动暨海南青少年体育研学游线路发布会在儋州海花岛举行。会上,国际旅游岛商报
卷赢高考后,我从江西乡村到瑞士日内瓦编者按2015年,莫敏第一次参加高考,语文作文不及格2016年二战,她以644分的总成绩考入南京大学,高考作文分数差两分满分,并在四年后成功保研。目前,莫敏在瑞士日内瓦的世界气象组刘石坚前女友是吉克隽逸,她成名后离开我,如今结婚生子很幸福前言说起吉克隽逸,很多人都对她那标志性的黑皮肤印象深刻,出道后也算是中国好声音所有选手中混得最好的,但是成名后她却黑料频出,还蹊跷地卷入了杨丞琳和李荣浩的婚姻中,如今更是彻底成了招11位浪姐背后的老公,有人嫁活佛有人嫁老板,一个比一个幸福自浪姐3开播,30位姐姐便受到了极大的关注。状态极佳的她们在舞台上十分耀眼,唤起了许多人青春的回忆。而支撑她们走下去,无非是自信的自我,和幸福的家庭。其中已有11位姐姐嫁给了爱情,你喝的啤酒,竟是伪国产?昔日民族品牌,为何沦为外资囊中物夏日撸串,哪款啤酒是你的心头爱?随着炎热夏日的到来,在傍晚找个路边小店,吃烧烤喝啤酒是很多人最喜欢的夏日消遣方式,而国内啤酒品牌繁多,味道各不相同,每种品牌都有自身独特的受众。但不四川考王梁实第26次高考428分,未上本科线,准备来年再战2022年高考已经落幕,根据统计,今年的高考报名人数高达1193万人,比2021年同比增长了115万人。不过这个数字并不完全对应应届高考生的人数,这其中还有很多往届毕业生参加高考,陌陌一哥被罚1。08亿背后,陌陌直播收入下滑,撕不下灰色标签撰文陈畅编辑杨洁前不久,又一则网络主播偷税被罚的新闻曝出。江西省抚州市税务局依法对网络主播徐国豪偷逃税案件进行处理,追缴罚没共计1。08亿元。徐国豪是谁?在百度百科上,徐国豪的词条为赛用而生名爵5XPOWERTCR赛车正式亮相6月25日,2022重庆车展正式开幕,行车视线从前方获悉名爵5XPOWERTCR赛车正式首发亮相。新车基于名爵5普通版车型升级打造而来,为赛用化而生,搭载重新调校的2。0T涡轮增压新车文懂车帝原创周桐懂车帝原创2022重庆车展在正在举办的重庆车展上,广汽丰田携旗下全新纯电SUVbZ4X参展。作为开启日系品牌电动化元年的首款产品,新车此前已经开启预售,预售价格区间鬼谷八荒6月30日更新羽化登仙等了一年多终于更新了距离修仙游戏鬼谷八荒的上一次游戏流程更新化神悟道已经过去了一年零三个月的时间,今日鬼谷工作室官方正式宣布作为预定的游戏最后一个境界羽化登仙版本更新将于6月30日上线。鬼谷八荒羽化登乌兰托娅变图雅,这场狸猫换太子的好戏,12年后落下帷幕套马的汉子你威武雄壮这首耳熟能详的歌曲大家再熟悉不过。但是近日不少网友在平台上发布了恶搞视频,视频中乌兰图雅每次在唱到汉子时都会完美跳过,于是被网友造梗躲汉子。正是这个视频发出,不拿着社区证明去取药的父女,错在哪了?丹东这个城市,封了2个多月没有上热搜,却因为一件袭警事件上了热搜,而偏偏大多数网友,对丹东父女的态度比较包容。那么,到底是谁错谁对呢?首先我们来回顾一下事件本身。丹东一位女子驾驶汽
友情链接:快好知快生活快百科快传网中准网文好找聚热点快软网