00:04
呃,各位小伙伴们,大家晚上好。然后我这边给大家带来一个关于微的一个分享,就是如何用微接入开源框架自定义组件,然后大家在开课之前可以扫一下我们这个官方的客服群,然后也可以关注我们的公众号。呃,这边本次的内容主要是分为两个部分,第一个就是我介绍一下我们整个微的一个产品,还有一个组件,然后第二个就是我来演示一下怎么去用微实现一个签字组件。嗯,先先看一下我们V吧,然后首先是一个V代码。然后这块是一个比较比较明显的一个动态图,然后我们微的一个产品就是从这边可视化的拖拽一些组件进来,然后就可以生成一个三覆三端的一个应用,然后三端的话就包括有移动端,还有外部端,还有小程序端。
01:15
这所有的应用都只需要简单的一个拖拽动作。嗯,那看了一个整个一个产品的一个大概的一个构成,那为他到底能做什么呢。那达是基于云云原生开发的一个低代码平台,它能够一站式的去提供一些快捷,构建高性能、跨平台且非常稳定的一个云开云原生开发的一个平台。嗯,它主要可以实现几个方面的东西,第一个就是它可以帮助我们快速入门,可以在我们的应用市场上去装一些业门户商城的一程序,也可以去进行一杂系统的一个开发,比如说有行业的经销存供应链管理。
02:12
呃,制造业质量管理等等,然后右边这张图就是我们提供的一些官方的一些模板,然后覆盖了很多行业,大家可以去我们微官网上控制台上去去看一下。嗯,我们我们微大呢,内置了百款很多的能力的一些组件,这些组件是通过一些搭积木的一些拖拉拖拉拽的一些方式,可以很在短期内就可以完成一些中等复杂的一些页面,并且它支持假如我们的官方组件不能不能完全覆盖你想要的一些能力,你也可以去自己去实现一些组件,然后去上传到我们微平台去使用。所以说它既具备一些标准性,也具备很强的一些开放性,并且它与微信生态有一些深度的整合,提供了企业构建数字化转型的一些解决方案。
03:08
比如说我们跟企业微,企业微信跟那个腾讯会议,企业地图,腾讯地图等等都。都可以很方便的去连接到他们的一些应用。这是一个整体的一个产品的一个架构。然后包括有我们的一个底座,就是基于一些微服务与开发等等,然后有我们的一些提供的一些服务,比如说有一些表单服务,流程服务,然后包括中间的,呃,刚刚说的盖了一个三端的一些,呃呃,小程序的一些构建服务,还有我们一些基本的一些系统,比如说用户建群,然后多租户环境等等。然后功能上就分为呃,就是大家可以嗯,一般使用的,比如说有控制台上的一些功能,有编辑器里面的功能,有组件库,然后还包括一些数据的管理,连接器的管理等等。
04:09
然后这块就是我们一个整体的一个产品架构。嗯,那我们就是既然是一个拖拉拽的可视化的一个构建应用的一个码平台,它的一个基本的运行原理是怎么样的?呃,从开发到运行一般是会经过三个步骤。就是我们在我们的编器那边去开发,然后编辑器去编译跟发布,最终会应用在网页或者小程序上。在开发过程中,我们会有一些依赖项,比如说有一些数据源依赖,还有组件的一些方法,还有一些事件变量等等,所有这些东西都可以在编器里面去啊,要么是直接定表达,要么是写一些代码去实现。
05:04
然后所有的这些东西实现过后,其实它最终是生成了一个DSL,就是我们所所所谓的一个领域,特定的一个语言模型,然后这块也是我们微大的一个核心的东西。就是呃,我们所有的编译器生成的东西,其实最终会得到一个阶层配置,然后拿到那个配置过后,就经过我们的一个编译跟发布的一个服务,去把这个配置,去把它给解释成运行态的一些网页。嗯,然后运行态就上传到我们的一些云开发,云函数,云数据库等等,最后就是可以在页面上去直接使用了。所以说我们的组件是一些基础的物料,然后编译器就是我们的加工厂,然后最终的应用页面就是我们的一个产品。
06:00
嗯,刚刚说到那个DS,我这边就跟大家详细聊一下,我们的一个DD其实就是就是个概,然后刚层规置,然后括组,比如有组件,有数据源,有应用所有的这些。所有的所有的这些物料都有,都有属于它各自的一些规范,然后它的规范就是比如说在前端领域,就是一些定义好的一些变量,呃,一些类型,数据类型啊,或者可选的一些范围等等,然后第二个就是包括它UI的渲染。呃,UI渲染的话就是面上大家就是看到那种大纲,它是一个结构,这个结构它其实也是一些层次分明的,比如说右边这张图,它有ID,有type,然后有it it下面又会嵌其他的it,就是一层一层的一个页面数。
07:03
然后属性也是有一些嵌套,或者说一些结构性的关系。然后第三个就是我们的一个事件模型。呃呃,静态页面的话,里面总是会有一些,比如说点击跳转等等这些事件,事件也是有它属于它自己的结构的,然后最后就是一些动态绑定,我们支持目前支持比如说一些。呃,有循环组件里面的循环,然后有有呃条件展示的意等等,都是一些动态绑定,还包括有一些绑定,嗯,绑定全局的一些变量或者的变量,或者甚至是小程序的一些呃,ID这些东西都可以通过动态定表达式的方法去引入。所以说在编器里面,我们是面向这些结构性的D去开发,然后得到D后,我们去把它解成我们想要的页面或者小程序代码。
08:07
这块就比较清楚的去,呃。对DSL跟页面的一个映射做了一个映射关系,左边就是我们最终展示了一个页面,比如说最外层是一个容器,然后这个容器对应到我们的DSR里面,就是最外层的这个对象,就是这个index的一个页面,然后中间是一个比如说轮播图,然后轮播图是我们的一个官方组件。然后它就对应了我们的一个下面的一个就是一个组件。然后下面会有一些,比如说这边点击更多可能会跳转,也可能会是一些加载更多的一些交互,然后这个交互就对应着我们的这边的一个resource,就是一些方法或者一些,呃,一些页面的一些生命周期可能会在这个里面。
09:03
然后下面就有我们的数据,这个是也是从比如说数据模型或连接器里面,或者第三方数据源里面拉取的一些数据展示在这里,这边也是存在我们的这个data source这个结构里面。所以说我们D里面就是每一项都会有对应,在页面中会会有对应的一些对应关系。正是因为这种对应关系,我们的页面可以把它翻译成DSL,然后我们的DS也可以把它解解释成页面,两者应该是一个比较,呃,对等的一个平等关系。嗯。呃,前面说了VV的一个产品体系,还有它的一个运行原理,然后现在就直接给大家看一下我们V的一个编辑器,这块就是一个进入我们的应用过后,这块就是我们的一个编辑器的一个整体的。
10:05
整体的一个展示,然后它分为几个区域,比如说有左侧是一个组件,然后中间是边界区。然后右边是配置区,然后顶部有一个发布区。呃,不同的区域有各自不同的功能,比如说组建区就是呃,会把我们的官方组件,还有自己上传的一些自定义组件展示在这里,然后编辑区域包括两个部分,一个是左,左边的一个就是编辑,还有右边的一个预览编辑态,一般就是会有一些模拟数据放在上面,供大家去呃去选中,然后预览态就是真实的一个加上真加上真实数据过后的一个展示效果。即所见即可所得,然后右边的配置区的话,包括有属性,属属性的配置跟样式配置,然后嗯。
11:03
这一块跟组件相关的话,一般就是组织的一个组件区啊。呃,这块都跟组件有关系,就是左侧组件就是组件的一个列表中,就是组建的一个展示形式,右边就是左侧的一个配置配置项。大家可以看到,假如是以左侧组建的视角来看编器的话,可以长这个样子。嗯,我们可以。对,我们有比如说有组组建的一个平台配置,包括它是三端应用还是两端应用,可以在组件里面配配好,然后也可以给他配置在这个列表里面去有一些描述,描述性描组件的描述。呃,也可以在右侧去配置它的一些属性,比如说这边的文本内容,文本格式,这些都是在组件的组件自身的那个里面去配置的。
12:05
呃,可以上面就直接看一下我们的一个官方组件,我们官方组件这边。主要分为几几大类,比如说有数据容器类。然后数据容容器的话,主要就是给大家提供一个非常快捷,非常便捷的去访问数据的一个能力的一个容器,比如说这边我这边拖了一个数据列表进来,然后这个数据列表的话,他只要去配了一些比如说数据源名称。或者说呃,或者连接器的一些方法,就可以自动的去拉取对应的数据,然后展示在这里。嗯,然后第二个第二大类就是数据容器类,第二大类是布局,比如说有一些普通普通容器。啊,包括有还有这边进来的网格布局。
13:00
轮波容器等等。三、布局等滚动容器,所有的布局容器,它一般自身是没有任何内容的,它的作用就是提供一些比较好的比较好的样规范去,呃承担其他组件的一个容器,就是把可以把其他的其他的组件拖到这里面来。然后第三个是我们的导航类,比如说有有这边有导航,有菜单导航,顶部导航,还有一些九宫格的一些导航等等,这些导航类菜单,它的主要作用就是呃,提供给我们一些页面的,页面之间的跳转,很方便的去绑定一些跳转的事件。还有去更改它的一些图标,呃,图标等等文字。然后第四类就是展示类,展示类的话就比较多,比如说有呃,有文本展示,有图标按钮,图片,就是我们在页面,页面上一般会展示很多内容,然后大部分内容应该都是可以通过这边展示类的东西去进来。
14:08
然后拖进来过后,呃,可以去给他绑定一些变量,然后更改它的值,比如说这边文本内容,我可以给他绑定到页面的一些变量,然后去更改它的一些展示的一些值。第五个是第五种是表单类,表单的话就是常用,常见于我们的增增删查增删查改里面这种这种应用去使用表单类的一些组件,包括有单行多行,下拉多选单选等等表单类的。组件一般它的外观外观都都嗯差不多都是标题带一个表单的输入框,然后它的一些配置属性也基本类似,所以可以可以可以,就是提供一个比较。
15:01
嗯,标准化或者说。样式统一的一个表单,在表单页面出来。然后最后一个是一个图表类,图表类就是目前提供的一些,比如说有统计卡片,有折线图。柱状图、饼图等等。嗯。最后有一些,有一个是小程序专专用的一些一些组件,就是这些组件只能只会在小程序上使用,在端是用不了,比如说获取用户的一些信息,获取用户的一些呃,手机号等等。这是我们官方组件的一个分类。呃,官方。那假如官方组,假如用官方组件来搭建一个增删查改的页面,一般是怎么做呢?左左边就是我们的一个,呃,左边是我们的一个成品图,就是一个列表,然后上面四张图分别就是对这这个列表的一个增增,嗯,新增记录,删除更改,还有一个查看。
16:07
然后它具体的一个实现的方式,大家可以具体的一个效果,可以扫码可以体验一下。前面就介绍我们的一个官方组件,然后这边我们来介绍一下我们组件的一个开发。组件开发的话,一般我们组件库里面会分为两两两种,一种是我们组件的一个配置,然后另外一个是组件的一个源码,然后这个配置的话,就是基于我们的一些规范,或者说叫一些协议去去配置它的一些配。嗯,比如说左边的这个图,就是它的一个基本的一个配置,有一个有date属性,有疑问属性,还有方法。呃,样式,还有它的一些,嗯,平台的一些配置等等这些属性,我后面会分别给大家介绍一下怎么配货和它的含义。
17:10
呃,然后嗯,左侧的第二张图,第二张图就是对这些各个配置属性的一个ma的一个规范。呃,在后面也会分别说到。然后右边的话是我们的一个源码,我们源码是可以基于react,也可以基于去实现web端,然后是基于小小程序的一个原生的框架去实现小程序端。呃,基于比如说以为例,然后这边下面会直接看到它的源码,这个源码,呃,我待会在演示的时候再再给大家展示。然后小程序也是在待会是呃,演示的时候给大家展示一下。这是一个整体的一个情况,然后对于具体的一个配置的话,比如说第一个是组建的一个平台配置协议,什么是平台配置协议呢?就是它不属于组件的功能性,是主要是在编辑器里面去展示的一些东西,呃,它的主要配置是在这个下面。
18:17
比如说左侧是它的一个Jason的一个协议,嗯,它的属性就包括有title标题组建了一个标题,有它的描述,有它的呃图标,然后分类,还有它的排序。呃,等等,并且比如说就是该这个组件在编器里面的支持情况。还有他的一些前置交易规则。这一块主要就是组建他在编辑器里面,可能比如说。通过右呃这个图,右边这张图可以看到数据详情,然后我就可以配置它的数据详情,这个标题也可以配置它的描述。
19:03
还有下下面的跳转链接这一块东西,其实它并不属于组件的一个功能性的一个东西,它仅仅是为了方便在编辑里面去识别,或者去去查看这个属性,或者去去过滤属性的一些,呃,组件的一些平台而使用的。然后第二个是组件属性配置,就是date date date,呃这块也是有他属于他自己的一个的一个规范。这块其实它对的其实就是一个对象,然后这个对象其实没有任何的,没有任何的限定,这个对象下面的属性可以是可以是字符串,可以是数字,也可以是另外一个对象或者数组等等。然后这个date怎么怎么怎么使用呢。嗯。这块就比如说这张这个左下角这张图。
20:03
我们定义了一个属性,叫自定义的一个单选框。呃,这个单选框的名称叫自定义单选框。然后它的类型是一个字符串,然后它的component,这个是它在编辑器里面,就是右侧属性区里面的一个交互形态,是一个是一个是一个框。然后它这个框的选项有两个。两个选项,一个是OPTION1,一个是OPTION2。这一块最终会展示在右侧,就是技术属性,这一侧展示出来就是我这边,比如说这边是一个数据模型,呃,跟数据筛选两个属性,假如我把这个也也配置在组件里面,它就它就会在右侧属性区多了一个属性,叫做自定义选框,然后它的展示形式是一个单选框。
21:00
就是然后最终它传到组件里面,接收的组件接收到他的一个也是一个,就是一个字符串,就是我们这边定义的一个type。目前关于呃,Component,就是它的属性交互的话,我们有一些有一些基本的开放能力。比如说它假如是一个screen的话,它它它是一个的话,在右侧它就是一个单行输入,然后假如是一个,然后它右侧就是一个数字输入,这边就是编辑会根据它的类型去自动渲染对应的一个一个交互形态,然后我们这边比如说还有一些呃,对象呀,还有储啊,甚至还有插槽等等,假如是插槽的话,这边。这边编辑器这边是不支持,呃,是没有属性展示的。这边是这边是属呃组件的属性,属性的主要作用就是这边,这边写的描述组件可以接收到的一个数据,就是我这边定义了哪些属性组件以为例为例,它的那个入参prop里面就可以接收到这些属性,然后接收到属性的属性的值。
22:21
就是来自于来自于你这边,呃,这边运行去去输入的一些值,或者说在右侧右侧这边去绑定的一些值。第三块是组建事件。呃,事件的一个协议配置。事件的话就是比如说以右图为例,然后我们一般在右侧的属性区下面有一个组件的一个事件,比如说这边有三个两个事件,一个查询为空,还有一个查询成功事件,然后这个事件的话。它是怎么样的,它是怎么配出来呢?就是这个事件是为什么会,就是怎么出现在这个列表这边,也是通过我们的组件配置来配的。
23:10
嗯,它这个事件的话,它是一个,它是一个数组类型,然后数组里面是一些对象,然后这个对象包括几个基本的一些基本的一些属性,比如说有name,事件名称,有title name是事件的一个标识,有title事件的名称,还有platforms事件支持的一些平台,比如说是支持小程序还是三端都支持等等。然后在组件这边配置这边配的事件过后,在我们的源码里面也要去相应的去调用这个事件。嗯,比如说源码里面我们配了一个这个事件,然后我们希望是点击按钮的时候去执行这个事件,然后我们就去就去这么调用,就是在button的click事件。
24:06
方法里面去调用我们自定义的这个事件,然后。呃,啊,有了这行代码过后,比如说右边我们这边去绑定,绑定我们自定义的这个event,绑定到一个,比如说自定的一个代码,打印一些日志,它的一个,它就会有一些,呃。后面会说到事件是怎么怎么执行的,这边先简单介绍一下事件的一个配置协议。嗯。第四个是组件的一个方法配置协议方法的话,是相当于是我们可以在外面外面外层或者在其他组件直接调用这个组件内置的一些方法。比如说我我我按钮内置内置了一个方法是也是打印一个日志,然后我可以在其他按钮或者其他文本的事件里面去调用这个按钮的内置的打印日志的一个事件,这就是方法的作用,然后它也是它也是一个,它是它也是一个数组类型,然后数组里面也是一个对象,然后这个对象里面配置的话是包括几个属性。
25:21
比如说这边有name属性是方法的一个基本一个标识,有title是方法的一个名称,呃,有purpose是方法的一个入参,然后也有方法支持的一些平台。这块就是在。组件配置了,配置里面配置了方法过后,也是需要在组件源码里面去把这个方法给暴露出来,这样子的话,我们在我们的框架或者在其他组件里面才能去调用组件的内置方法跟小程序的那个。嗯,方法的一个暴露的是暴露的代码在这边可以看得到。
26:05
呃,后面也会演示方法,怎么具体怎么暴露出来。呃,最后还有一个组建的一些默认样式的一个协议,就是有的组件可能。嗯,它可能会存在一些默认的一个样式,然后这个样式它是希望能够在在这个右侧的样式这边有对应的一个映射关系的。然后我们可以个。嗯,然后呃,属性属性配置过后会直接在这边生效。就是上面这这几个部分都是都是在介绍组件配置的一些能力,还没有涉及到组件源码的一些能力,呃,这边我们来看一下之前说的事件跟方法具体是怎么使用,然后比如说这边我们定义了一个组件的事件,组件事件是刚说的是一个问,然后它是一个数组,然后里面是一个对象,我们定义了这么一个事件。
27:07
呃,他的事件名称是tab。这边我们就可以看得到我们怎么去调用,然后比如说我刚在那边件里面点击那个事件,然后它可以弹出一个件面板的一个弹窗,然后这个tab会去绑定其他的一个其他的一个方法或函数,呃,什么意思呢?就是。编辑器里面。面板会列举到我们的tap事件,然后我们绑定了其他,我们会绑定一些执行动作。当我们点击这个组件的时候,它会去。首先是执行这个top的一个一个事,呃,事件的一个东西,然后这个其实真实的一个源码是绑定到我们的执行动作。嗯,最后就可以执行我们的。
28:00
就是绑定的,比如说这边是弹窗,我们最后就会点击文本的时候去执行这个弹窗动作。这边解释一下几个几个概念,比如说第一个是触发条件。呃,指的是被定义的被触发条件,一般是会被定义在我们的源码里面,比如说这边的点击,清空,只更改等等,第二个是这边的执行动作,就一般会一执行动作,一般就是最终的一个函数题,就比如说上面图中的这个弹窗,然后还有一些成功跟失败时。呃,这块就相当于我执行弹窗成功就会,嗯,在弹窗弹窗出出现过后去执行成功的一些事件,然后失败,就是我弹窗失败了,然后去执行一些失败的一些动作,然后这边还有一个疑疑问。疑问对象是我们在组件内部定义好的,由组件内部传到外面去调用的,比如说我在里面定义了一个疑问词是是打印的,呃,是一些,比如说是一个固定的一个值。
29:12
然后我在窗里面就可这个疑。去调用呃,去调呃,并且去使用这个疑问。这边是事件的使用,事件除了通过那个刚刚说的弹窗面板去使用之外,还可以在我们的码里面去使用。嗯,这边比如说多W点是点model,就是我们的一个弹窗的一个,呃事件。呃,这边是方法组件内部方法它也是同样,比如说我们这边左侧定了三个方法,有打开关闭,还有切换窗口等等。嗯,定义好方法过后,然后我们再编辑器那边也会把这些方法列举出来。
30:06
呃,我然后我们会呃这些方法在组件源码里面去暴露出来编辑器,比如说我这边点击图标的时候,想去调用弹窗的一些内置方法,就是我弹窗内部会定义几个方法,有打开弹窗,关闭弹窗,还有切换弹弹窗的状态。然后我怎么在其他组件。触发其他组件事件的时候,去调用我弹窗内部的一些方法呢,就是在这边去调用,这边会有一个点击有一个这边有一个叫做变量赋值的时候。变量复制成功,会打开一个弹窗,然后弹窗会调用,哦,会调用一个组件方法,这个组件方法是来自于ID145的弹窗,然后执行的是它里面的一个open方法。这块下面就对比了一下,假如我们没有组建方法,我们怎么去实现这些功能,我们需要通过一些中间变量。
31:06
然后组建监听变量,去更改后触发内部的一些方法。然后有了弹窗,我们可以在外面直接去去去调用啊不,有了组件方法,我们就可以在外面去直接调用组件内部方法,非常方便。呃,这块也就是假如不通过事件面板是在码里面,我们也可以通过这种方式去直接调用上面说的类似于弹窗的内部方法。嗯,这块再说一下组件库的一个升级。就是。呃,官方组件库可能会有一些功能,功能上或者说样,呃,或者优化优化性的一些,或者bug bug上的一些优化升级,然后这块我们每次在供应上升级的话,都会有一些升级日志。
32:02
嗯,具体会可能会有三个方法去看到这个升级的一些情况,比如说第一次进入应用的时候,会在底部弹出一个升级,然后我们开这边的查看详情,就可以看到本次的一些升级情况。然后这边的立即升级,就可以把我们的官方组件升级到最新的一个版本。然后第二个方法就是假如我们把顶部的弹窗擦掉过后,我们会可以打开这个组件库的一个管理会点,也会看到一个升级提示。然后第三个方法就是我们有一些组件可能会有一些不兼容,或者说呃不样式上的一些改变改动,这个时候我们可以针对单个组件去去做一个升级,然后也可以去在选中一个组件,在它的右侧的一个属性去升级到该该组的一个最新版本。
33:01
这样的话就不会影响其他的组件。然后假如升级有问题的话,我们可以随时撤回,一般会有两个方法,第一个。升级过后会在组件列表上面有一个撤回的一个标记,可以点击这个标记去撤回,第二个就是我们会有一个历史的一个版本,通过去恢复到升级之前那个版本去撤回这个升级。这块主要就是上面就是介绍了我们组件库的一个使用情况,就包括呃,主要讲了一些,比如说有微达整个产品的一个架构,还有V里面官方组件库的一个分类跟使用,还有它的配置的一个情况。嗯,这边我们来就是。根据刚刚介绍的那个配置的情况来。说一下用微他怎么接入开源框架来实现一个签字的软件。
34:03
嗯。这块是我们的一个整体的一个步骤,我们现在就按照这个步骤来实现实验一下。首先是第一步是我们要拥有一个腾讯云的一个账号,然后要开通一个云开发的一个码,并且安装了本机,安装了一个note GS。然后这边。呃,我这边是。自己安装一个诺EGS。版本。是16。然后这边并且要安装我们的一个开发的一个CC工具。这边也有安装是版本是。2.2.4。这两步,然后最后就可以通过我们的一个云开发的一个工具去登录到我们的。去去做一个登录的一个操作,TCP。
35:04
这边我提示我已经登录,无需再去,呃,无无需再次登录,然后我们就直接进入到第二个环节。呃,首先是要创创建一个云端的组件库。打开我们的那个V的一个控制台,然后选中这个组件这里。然后我们新增一个组件库,比如说叫。编号。嗯。这块新新增过后,这边就有一个,相当于我们在云端这边就新建了一个叫V的一个组件库,现在点进进去,这个组件库是一个空的。空的话,我们就要往里面添加一些组件,然后我们TCB的,我们我们TB这个。嗯。提供了一键新建一个本地的一个模板库模板,然后我们可以使用一下这个模板。
36:05
就是这这一块。嗯。你先在这边建一个文件啊。嗯。嗯。打。怎么?这个名字要跟那个云端的刚建的这个名字保持一致。它会提示选择模板,比如说有默认的是GS,有还有一个,然后我们选一个默认的模板。
37:01
这边默认模板安装成功过后,会在这个文件夹里面就看到你看。这边就自动的把它依赖,还有一些。一些的一个组件。放在放在里面,然后我们用这个code把它打开看一下。回答这么二。我们先看一下这个组件库,它预预制模板的一些结构,比如说呃,这个这边是相当于就是一个嗯NPM的一个项目项目,然后它外层的是一个基本的,比如说有内密,有依赖包,然后这块是我们云开发服务依赖的一个配置项,这边就是它的一个标识,这个标识必须跟云端刚刚建的那个控制台里面的标识保持一致。然后这块是呃,代码的一个美化,美化的一个插件,然后这块就是我们提交代码的时候的一些,嗯,忽略忽略项。
38:10
这块也是代码的一个结构的一个插件。这些都是一些,呃,规范我们代码的一些插件,这里面比较重要的一个就是一个是开发的一个配置,然后第二个就是我们的依赖。然后我们看一下我们组件库的一个结构。库它分为几种放大,主要是第一个就是有端的一个,然后有小程序的一个一个一个结构,然后这个是它的配置项那们,然后这边是它的一个测试跟呃一个的一个测试。我们分别来看一下,首先我们看一下它的配置项吧。个人线里面它的结构是这样的,我们有一个导出的一个导出的一个文件。
39:02
我们默认的模板里面,其实给大家内置了一个叫给给内置了两个,一个组加一个动作,一个组件是一个按钮的一个组件,还有一个是。还有一个是一个的一个动作。我们直接看按钮的配置,按钮的配置是在这个里面。也是在这个配置项的这个文件里面的这个按钮配置,它是一个配置。然后可以看到这个date。嗯。呃,它它这个整整体的一个结构,就跟我刚刚那个PPT里面演示的是一样的,还有属性,属性的一个有件的配置,还有平台的一些,呃,配平台的一些配置。然后我们看一下它的属性配置,它属性配置它它是它这边是一个标准的一个的一个,它的type是一个对象。
40:02
然后他这个对象里面又有哪些属性,比如说有这么多属性。呃,我们来再把它展开一下。有有test test有就是它的一个按钮文字按钮大小,然后按钮大小就是我我刚刚提到的,它是一个string类型,但是它的插口是一个个单选框,有两个选项,我们对照的,直接对照这边看一下。你说这边是干你。嗯。嗯。这边按钮就比如说有test。啊,这个这是官方的按钮,然后就是模板按钮不太一样。看一下这边有一个按钮。这边就是。这个对应这个配置项对应出来的一个属性区,首先是它的有一个。
41:06
按钮文字,按钮文字的属性在这里,你看按钮文字这里,然后它是一个输入框,它一个默认值叫按钮,这边一一对应起来,它是一个默认值是按钮,然后有按钮的一个大小。按钮的一个大小。在这里。按钮大小,然后它也是一个字符串,然后它交互形态是一个,呃,是一个单选框,选框里面有两个选项,有默认值跟跟小小小按钮,这边也是,你看有默认值跟小按钮。嗯。然后其他的其他的属性都是一一对应,并且类似的,比如说这边呃,禁用。金融属性也是。这边。禁用。然后是一个波尔类型,它就会展示成一个波类型的一个开关。
42:03
嗯,所有的属性都是这样的,它都是符合一个标准的Jason sIgMa的一个协议,然后假如大家对这一块的呃结构可能不了解,比如说我不知道他下面要写哪些东西,我也不知道,嗯,我也不知道他有哪具体的有哪些属性可以直接打开这个文档,我们定义了一个的一个文档。可以打开这个里面就定义了所有的。所有的配置线的一个结构,比如说这边的date。嗯。这边date。这边date你看它是一个空,对,然后它其实是引用了这么这么一个date。
43:03
这边也是他的一些。就类似于这是这是的一些描述,就是我们可以在这个下面写哪些属性,比如说有写的没有,比如说有写。呃,看一下这边有。The title这边,比如说我现在把它去掉,它会自动提示有title。叫按钮。大小等等等,然后假如我这个开头这边写了过后,在刚刚说的右侧属性区这边就会自动生效,就发布,发布出去过后这边就会自动生效。嗯,这边是一个date属性,就主要是定义右侧属性区域的这些基本的一些组件属性的,然后下面有一个事件,事件的话也是一样的,这边定的是一个自定义事件,来我们来看一下它这边配置定义的事件。
44:01
在这边是怎么展示的,同样是这个,选中这个按钮。然后我们可以看到它这边有一个事件,事件列表,这里面有一个自定义事件。然后自定义事件的话,就像我刚说的,它点击它可以绑定,绑定一些其他的一些方法体,比如说我可以绑定打开弹窗。然后弹窗,标题是一一,内容是222。然后保存。这块这块的意思就是我给这个按钮的自定义事件绑定了一个打开弹窗的一个事件,然后点击一下它试一下。他就是。会自动触发。它的整体逻辑,我们可以直接看一下它的一个源码,实验的一个源码。呃,他在这边定义过后,他需要在源码里面去做一些相应的触发。像刚刚说的,这是圆满。然后找到刚刚的events。
45:02
它的源码就是一个的一个源码。React,它原生的一个按钮里面有一个on click事件,就相当于我点它就触发这个on click,然后这个on click会触发这个event点,然后这因为这个自定义的事件又绑定了弹窗,最终它就会触发这个弹窗事件。它其实就是这么流到最终的一个方法体的这么一个过程。这个是事件,然后这个是一个基本的配置,配置的话就跟我刚刚说的也基本类似,比如说它有标题。配置,比如说这边就是按钮的一个标题,然后就是按钮的一个描述。嗯。按钮。按钮组件兼容小程序跟H5分类是分在表单类。嗯。这块就是我们。
46:00
呃,模板里面的一个按钮的一个配置,然后我们这边来再看一下按钮的一个源码。嗯,源码刚说了,分了一个web单源码跟一个小程序的单源码。我们先来看一下源码的一个导出,就所有源码这块导出的文件都是必必须的,这块就是相当于比如说你在这个里面再加一个组件,你你在就需要在这边再把它导出来。比如说我这边加了一个组件叫。叫test。然后test这边就要把它导出来。配置项也是一样的配置项,我在这个这个配置项里面加了一个test配置项,然后在这个里面也需要把它导出来,就是test。这样的话在编器编辑器那边才能识别得到。嗯。呃,看一下具体的代码就是表单。
47:02
呃,按钮按钮。这块它其实就是非常简单的一个,它有没有很复杂的楼梯,它就包了一层原生的一个按钮,然后这个原生按钮一些样式。呃,这边就是对刚刚定义的那个属性的一个引用,我可以把那个属性把它放在这里看一下。然后放在这里看一下。嗯。这边你看一一对应起来,我这边定义定义了一个test,这边就引入一个test size size type type loading loading,相当于我在这边只有在这边定义了的属性,然后这边引用,引用过来过后你才能才能拿得到。就是你这边假如定义了,呃,没有定义一个属性,然后你这边加了一个属性叫AA。
48:06
这块这个A是是拿不得到的,就是它是没没有办法在编辑器这边展示,然后没有办法在运行态传给你,相当于这个AA是。然后他最终的一个反馈就是。嗯。一个样式加他写了一些,比如说禁用啊,事件啊,还有一个状态。然后这一块有一点要有,有一点要说明,就是我们从外面传的类就是class name,还有还有一个是ID,还有一个是这三个相当于是我们在运行框架的时候会自动注入到组件里面。这一块会相当于是,呃,必须要传到这个,传到button里面。
49:01
这样的话,我们在主要是在这边才能选中它,就是我们在编编辑区域会再给它注入一个类。呃,这个类的主要作用就是选中这个组件。意思就是假如你这边不透传这些东西的话,你在这边可能就是选中不了。也不影响它的功能,只是影响它的边缘气态。嗯,这块是外部端的一个源码。然后看一下小程序的一个源码。小程序源码其实就是直接利用了小程序它官方提供的自定义组件的框架去实现的,它就是最外层包了一层,然后里面也就是。
50:07
嗯。结束吧,就是我不不缩放了,就是其实也是跟那个web端一样,它首先是定义了一些属性,这属性也是在配置项里面去去定义好的,然后在运行态就可以传进来。有比如说的这些状等,Date是相当于小程序自己的date。然后方法的话,这边可能跟跟刚刚说的,呃,React里面里面调调用自定义方法,不太自定义事件不太一样,这边是通过了一个。嗯,通过了一个这个this track events,相当于我们把这个自定义的事件,通过小程序提供的tri event把它给调用起来。
51:10
需要这么调用。啊,这块其他的结构也没啥,就是小程序官方提供的结构。然后样式配置。这块都可以参考小程序的一个开发文档去实现。呃,然后我们现在看一下我们的主要任务吧。任务我们这边就是已经建立了一个本地的主源库,然后并且添加了一些,呃,并且并且添加了关联到了本地,关联上了云端的组件库,然后我们现在就是准备来开发并且调试那个签字组件。嗯。好,我们首先试一下。刚刚建,刚刚建的这个主库在云端目前还是一个空的状态,我们把它发布到云端是通过这个门店。
52:20
嗯,我发布之前要先安下,安下它的依赖包。这边我就不等待他安装了,我直接看一下。就是看一下那个签字组件吧。嗯。签字组件的话,首先就是相当于我复制一个出来。然后把他的名字改一下,我这边有。太空的。邮件写好的,我直接把他的名字复制过来,比如说他的签字组件的名字叫这个。然后它里面也是这么一个。
53:02
样式也是这么一个结构,然后这个里面我把它的这个东西给复制过来。这个这个没没有用到,把它删掉。嗯,这边可以看到我们是用了一个开源的一个。一个包,这个包的话,我们需要,我们需要先把它引进来。也是先把它安装引进来。嗯,这块就等他在这边自己下载就好了。啊,我因为我之前用的是TS写的,我把那个TS的语法把它把它去掉。
54:06
我们来看一下。呃,这个web端是具体怎么说。具体的一个实现啊。嗯。然后首先也是我们哦,还有配置项,我们先把配置项定义好。就是像。把它复制过来。配置项的话,我们定义了几个配置项,比如说有初始值,有背景色,还有签字颜色,然后也定义了一个事件,就是我当用户我在在签字的时候,我可以实时拿到他的一个签字的状态,就是一个事件。然后定了一些内置的方法,比如说有清空方法,上传方法,还有保存为图片的一个方法。啊,这边它的一个ma的信息,比如说就它的名称,组件名称叫这个。
55:06
中文名称是签字、描述、展示。定义好后。嗯。这边同样是,比如说这边复制一行,把它导导出来。嗯。这个。嗯。导出来,然后再把它这个文件里面导出来。啊,这个配置已经搞好,然后呃,这个这个这个下面的安装包也安装好了。
56:00
我们来直接看一下我们的,再看一下我们的这个。这个源码。嗯。首先是刚刚定的三个属性,然后我们在这边把三个属性给引进来,包括它的事件也是一个属性。嗯,我们看一下它最终是返回一个什么东西,返回一个。图画图。这个画,呃,这个画图的话,它是有有一个回调函数。在里面这个回调函数,把它的这这个弄的节点去绑定到了这个。相当于开源框架的这个东西的一个实例上。嗯。这块是相当于是实现实现我们的。签字组件,然后怎么实现一些方法呢?
57:00
就是刚刚说的,通过这个把它给。暴露出去。方法。我们定义了三个方法,可以看到有三个方法。三个方法分别是清空、上传、保存。然后这边清空怎么实现就清空,我要调实例的一个清空方法。对吧,我这边我把这个情况暴露出去,上传也是一样的,上传里面我去上传到cos上。在这里面实现它的代码。然后保存为图片,也是我在这个里面去保存到保存一个图片。这边就是它的一个方法的暴露,然后他的事件是怎么暴露出去的,事件是问。In the young。就是我刚说他的事件的,呃。作用是在。我签字过程中,签字变化的时候,去去确实是拿到这个变化的值。
58:06
然后我就需要在这里change里面。呃,去,比如这边这边是他的实例去去监听了它内部的一个一个事件,这个事件的作用是它内部定的一个。一个一个事件是相当于是我签字,签完字后。就是这个鼠标停止过后会触发这个事件,那这个时候我们去再去,相当于是对外暴露这个确诊方法。限制方法就是就是这样,我拿到他的一个BASE64的一个图像,然后这个图像我就可以在外面拿到,去做其他事,其他用了,比如说提交表单等等都可以。嗯,这是外部端的一个源码。然后这边还是要把那个东西。把在这个component里面,把这个源码给导出来,导出来。
59:04
出来。这边导出来。这边注意,一般导最终以后导出的源码名称跟上面配置的源码配置的这个名称,配置配置的这个名称要保持一致。这块要保持一致。嗯嗯,这是外部单吧,然后小程序是一样的,然后这边还是。直接把之前写好的小程序端源码,把它给复制过来。复制不来之前小程序这边还有一些,相当于工具引用,引用了一些工具复制不来。
60:02
嗯。小程序这块也是用的一个开源的一个框架。还有那个签字签名框架。呃,然后这块就是它的一个入参属性,这是小程序的方法。然后说一下小程序怎么把刚刚定义的三个方法跟一个事件暴露出去的。事件的话,我们也是通过这一块。开个。Check check。就是我们刚定了一个劝解事件,然后我们再。也是类似于在这个签字实例结束的时候去调用这个亲子事件,就是通过这个东西。去去去,把它给。暴露到外面,然后它的值是这个相当于第二个参数,相当于我暴露给外面,从里面暴露给外面的一个传值。
61:07
然后事件的话是通过我们这边封装那个。嗯。这个behavior是从我们,也是我们开发里面封装好的一个包,直接从这个包里面就可以引进来。那我这边先装一下这个包。嗯。呃,引进来过后呢,它其实这块的方法,这块的方法可能它它就自带了几个几个方法,呃,主要就是这个它会自带一个update API的一个方法。啊,不是不好意思,不是,是自带了一个这个方法,this.set attribute,在这个里面我们可以把内部的方法给给暴露出去。
62:08
然后相当于我把这个对象,整个对象暴露出去过后,然后在框架里面去调用这个方法,就可以把这些方法绑定到最最顶层,其他事件,其他其他组件可就可以直接调用了。这块是小程序的一个实现。嗯,具体的这些,比如说呃,这个科。也是掉的实力的颗粒。就是清空调的那个开源框架的清工的一个方法,然后up也是调用的是。嗯,上传到cos上的一个。Upload,然后save,就是相当于是把BASE64转成图片的一个一个一个一个一个一个方法都是在内部可以实现的。这块这块实现好过后,小程序这边也是需要导出。
63:00
啊,我们这边导出一下。嗯,好,这块就是基本上我们的一个整体的,包括包括配置,然后web端的一个代码,还有小程序端的一个代码,都已经基本上实现了,然后面假如就是希望把这个组件做的更。呃,准确一点,可以在这边去写一些测试,还有或者说写一些story等等。嗯,我们这边代码实现过后,我们首先可以通过。Debug模式在本地调试,调试通过过后再去上传到。控制台,然后上传到在在那个呃编辑器里面去使用,嗯。这块应该是已经有了一个启动了一个三把那个关掉。
64:10
嗯,它会自动打开一个。呃,类似于组件编辑器的一个组件调试的一个编辑器。这些先不用管它,然后你看这边有一个V达二的一个自定义组件,然后这边就是我们的一个签字组件,我们刚新增的这是是刚刚默认的一个按钮组件,我们都看一下。这块看一下啊,这块可能是。啊。可能就是有有时候一些打包的一些错误啊。这块有一个包没有引进来等等。我们这边引了一个,然后把这个也复制过来。
65:04
嗯。知道,然后。啊,重一下。会有很多报错,可以看一下报错的具体原因。嗯。这个怎么还没有找到。可是路径不对。对不对。对。这块路径对了,过后它会就编译,编译成功,编译成功这边刷新一下。嗯,可以看到我们刚刚就是。
66:01
嗯,哦,我们刚刚把那个按钮的类给去掉了,你看就是我刚说的那个按钮类去掉过后,他这边选不动。选中的话,只能通过大纲数这边来选。呃,我把那个按钮的类给它加上,把点。啊。就class name刚给它给去掉了,然再给它加上。加上过后刷新一下。这边就有一个相当于蓝色的框框,可以选中按钮,所以说这个类啊,还有ID,还有style,一般是最好是要传过去。啊,这边选中过后可以看到这边,呃,也就是这些属性就是按照按钮的配置来配的。按你刚刚的说的那些配置,然后我们更改一下,比如说目前是一个这个配色改成一个配色。
67:01
它会自动变,然后把它改小一点。包括这个刚刚的这个标题属性标题也变,然后它的文字我把它改掉。这块也是直接会变化的。呃,所有东西都可以把它给点一下,都会生效。然后这块就是按钮的一个功能,然后我们先把它这个加载去掉,我看一下我们签字,刚刚刚刚写的那个签字啊。诶。它它没有一个边框,我们其其实是可以给它加一个边框的,然后我们去那个。加一个边框。就是相当于给他加一个。这里。或者在这里加也可以。这个地方给它样式加一个边框。
68:00
提醒你。OK,这边框就出来了。当然这个你可能一刷新刷新还在。但是拖入一个新新的签字组件没有。下面这个还是没有。那我们刚定了几个方法,几个,还有定了几个事件,然后我们来测试一下那个事件跟方法。首先测试一下事件啊,事件是那个叫事件。前的事情。就是我当我这边。这边呃,签字画画完过后,然然后他他他他的这个图会相当于是它的数据会。会嗯,同步同步出去,然后这块怎么实现呢。然后我们先这边先。嗯。
69:02
选中签字,然后他有一个更改签字的签字的一个事件。呃,然后我们把这个事件把它给保存起来,就是比如说自定义一个代码。添加一个新的方法。有在test,我们把它打印出来。嗯。然后保存。然后我们打开开发调试的工具,我们看一下。现在我再换一下。找到。看一下。嗯。嗯,可能是。可能是这块的。这块的事件面板有点问题,我带我去那个应用这边去测试一下。
70:01
啊,我们来测试一下方法。方法的话也是一样的,比如说我现在想在这个按钮这里。按钮的点击的时候去清空它。怎么实现呢?我先把它进入取消掉,然后我先自定一个事件,相当于按钮的点击的时候去调用这个自定义事件,然后这个自定义事件去绑定自定义的一个方法组件方法。比如说这边可以选择签字。签字,然后他有刚刚定义的三个方法,清清空签字。然后我们点一下试一下。清空了,当然他清空过后把他的布给一起当一起毁掉了,可能就有问这块可能还要去再去。再去。给看一下。给完善一下,我再来试一下。它的整个整个逻辑就相当于是我给按钮去。
71:00
去绑定一个按钮的事件,绑定一个方法,这个方法来自于组件内部,来自于这个签字组件的一个内部,整个整个流程是这样的,然后这块感觉测试没有问题,然后我们把它发布出去。发布出去的话就是。这个命令。Publish。这块正在发布。嗯嗯。啊,这块已经显示发布发布成功了,我们去我们的控制台看一下。就组件库,然后这边有一个应该是V2,我们点进去看一下。嗯,就多了一个两,多了两个组件,一个按钮是默认模板带的,然后还有一个是刚刚新增的签字组件。
72:03
啊,我们把这个待发布的组件,把它发布到正式环境,就点一下发布组件库。嗯,签字新增签字,新增签字组件。确定。我们这边可以看到有一个未达二。点进去可以,也是刚刚发布了两个组件,包括这边有一个组件发布历史,然后我们这边就是第一次发布。然后我们就现在就新建一个应用。然后在这边建一个应用。去,去使用刚刚说的那个签名组件。嗯。嗯,我这边已经新建了个一个我们直接打开啊。
73:10
我们可以看一下,把这些收收起来。我先去,比如切换一个位置,把它给清空掉。然后这个二就是我们刚刚上传的自定义组件,然后有两个自定义组件库,有两个组件,一个签字,一个按钮,我们还是可以给它给拖进来,然先拖一个签字组件。然后还是照样给一框。嗯。然后还给他一个。颜色。颜色给一个,比如说给一个黑色。然后色彩给一个红色。啊,这边没有自动,然后我们刷新一下。
74:02
红色、黑色。然后我们再把这个按钮给勾进来,还是我们试一下按钮调用它的清空的一个方法。自定事件调用。签字。签字,然后有一个清空签字。我们现在试一下,诶现在可以清空了,你看,然后我们同样的方法,我们来试一下其他几个方法。比如说第二个我我直接把它这个复制一下,比如说我我刚刚是直接复制了一份按钮,然后我们再调用它的一个保存吧。就是保存在本地。我们改一下名称。保存。情况。然后我们点一下保存。它可以保存在本地。下载了,然后我们看一下。
75:01
就长这个样子,跟这个一模一样。然后还有上传,上传的话其实就是可能可以可能需要上传到cos上,然后做了这么一个。小的方法,比如说上传。嗯。然后这边也改一下。要用组件库方法。诶,不对。这边是呃,调用组件方法的上传的方法,然后它有两个参数。看一下我们定义的,其实我们也定义了两个参数。这个。然后。上有两个参数啊,就是这里,一个是name参数,一个是pass参数,就是对分别对应的这里。
76:01
Name pass,就上传的名字,比如说上传名字叫la.png。然后它有一个pass路径,Pass路径的话,比如说我上传到V。放这个这个目录下,然后保存。现在我再换一下。我把它给上传过去,上传失败,我这边可以上传失败的话,可以去绑定一个上传失败的一个方法。说这边我把上传失败的错误,把它给打印出来。或者给他一个提示吧。主任失败,给他一个提示。失败时。比如说给他一个。弹窗。嗯。上传。失败。然后再点一下。
77:01
这块这块因为是在代码里面。这块我看一下应该是在代码里面已经。上传。已经给掉了,所以说它的错误不会冒出来,这块可能在很多自定义组件,自定义组件的时候可能会遇到这个问题,就是我可能以为他是失败的,然后我在这边绑定了一个失败事件,事实上这个失败事件是不执行的。可能在这里才会执行,虽然它是失败啊,试一下。比如说南窗。保存,然后上传。对,他是在成功里面实行,是因为我们在组件里面把这个。这个这个这个错误给卡掉,在组件内部自己就消化掉了,没有没有就像没有上冒到啊,继续冒泡到这,嗯上层。假如我把这行代码给去掉,这个给去掉。
78:02
这个这个方法执行错误的时候,他就会在这边上传失败这里去去捕捉到这边就可以去做一些上传失败的一些动作。呃,这边就是web端的一个开发跟一个展示效果,我们看一下小程序端是怎么样做的。小程序的话,就是我们要启动一个小程序的一个编译的。编译,编译的一个一个监听TCB。Watch。嗯。这块启启动成功,然后启动成功过后。在更多呃,点击微信开发工具预览这里就可以打开我们本地的一个小程序ID。等一下可以打开,嗯。
79:00
一般这种情况可能要么是IDA启动失败。要么就是我们没有绑定,绑定小程序这边,然后我们这边看到ID其实是已经启动了,我再试一下。嗯。呃,可能是端口被占用了,我们把那个。把这个端口给关掉。嗯。我再试一下。嗯,这块看一下。
80:07
啊,我们直接看一下小程序发,嗯,看一下小程序。启动的话。嗯,把这个全部关掉。这个也关掉。我们看一下是不是哪里被占用了。嗯。重新打开,重新打开一个。嗯,然后这个刷一下。
81:13
可能是这块没有绑定小程序,可以去控制台这边看一下。小程序认证开发。这块是绑定了这么一个应用,我们把这个应用打开看一下。嗯。
82:01
啊,这块可能启动不起来,然后假如遇到问题可以直接大家可以直接点这里。就是点击这里查看详情。然后常见的一些,比如说。修改应用,点保存,再点击。看一下。ID预览。看一下我们这个报不错。这块我们直接打开,我就是之前启动的那个小程序。也是通过这种方式打开的。可能我电脑有某些端口被占用了,导致一直没起,起不来。
83:15
嗯,这边就是我我我们这边就是这个签字。你看这个签字,通过这个方式调用小程序的这种方式去启动,然后就得到这么一个效果。这么一个效果,然后它其实也是有清空的一个效果,然后点击清空。就是我们其实只是在页面上绑定了一套,给他绑定了一次清空,然后他可以在web端跟小程序端都能实现。这个这个事件的一个绑定的一个逻辑。包括刚刚演示的保存,还有上传等等,都是一样的道理。呃,这块我们接着回到我们的P,就是整体的一个演示,包括配置,还有这种展示效果示,基本上就是。
84:09
嗯,这块我们刚刚看到的。新增组件这一块都已经完成了,然后调试组件就是本地第八个。然后增加小程序源码,然后本地发布,就是publish到控制台,然后呃,再发布到云端,然后在刚刚那个小程序watch。都有在用,最终发布组件过后,我们应用使用,然后应用预览,还有应用发布,我们看一下应用预览跟应用发布。这这边是预览,点击一下。当前当前页还有预览首页。我们看一下预览效果。嗯。
85:03
然后这边。一下预览,嗯。这是web端的一个预览。是比较是正常的清空。然后看一下H5端,把它切到H5。刷新一下。包括另外几个页面,包括这个页面也可以。这个页面预览的话,假如想切到这个页面预览的话,可以复制它的一个页面ID。然后更改最后这个。最后这的这个页面ID,然后我们待会试一下。就是。H5端的,然后我刚才想切到那个页面。你们试一下。写错了。嗯,应该这个页面。复制ID。那这块就是这个页面的一个预览。
86:02
这个。嗯。清空。啊,所以。然后上传,上传失败,上传成功。嗯。整体的一个自定义库开发流程就是这样子。然后,然后我们做一个总结,这是我们组件库的一个效果。一个是外端,一个是小程序端。然后最后对本次的分享做一个总结,然后我们前面第一趴是说了一个组件的介绍,包括主要是包括有微拉产品的一个介绍,微拉呃原理,还有官方组件的一个介绍。嗯,还有组件的开发协议的一个介绍,呃,第二趴就是直接是我们自定义组件库的一个开发过程。
87:05
嗯,主要就是分享这么多。然后大家看看有没有什么问题可以现在提出来,嗯。
88:16
大家可以扫一下我们这边微大的客户群二维码。然后可以加入我们的官方群。
89:03
呃,如果大家没有没有什么问题的话,我这边就直播就到这边了。啊,非常就是欢迎大家使用,为大家。这个产品,谢谢大家。
我来说两句