00:01
先把这个页面打开,然后还是把昨天那个例子打开一下。好,这是昨天那个例子,昨天的例子运行起来之后呢,就是我们在后台自己创建了这么一个接口,然后我们通过API调试,呃,拿到这样一个请求地址,然后在前端呢,我们通过我们的请求库拿到这样一个数据,很多的项目里面都是带有网络请求的部分的,举个例子,我们看一个还是点餐这个项目。那当然我们那个。点餐的那个代码里面也是包括这一部分的,我们直接看一下。首先我们看一下主页是怎么请求数据的。在主页的一个get data的函数,通过这个函数呢,我们是在跟服务端去获取数据,可以看到这里有一个get的一个请求方法,然后直接传入咱们的一个URL,后面呢使用的promise的方法去处理回调的数据,然后给他绑定到呃,页面的data与。
01:15
那么这个get呢,我们点进去可以看到它其实是一个快捷方法,然后它最终调用的还是一个IEQ方法。啊,因为我们还有可能像有post方法这种的一个请求,所以给他针对性的做了一一层封装,因为最终他最后是一个promise请求完了之后,因为我们的post和get都会是使用最后一个方法去给他请求到。那么我们可能在。最终的IQ里面去做一些统一的一些设置,比如说像公用的一些地址,然后我们在这里面可能会处理一些头部的认证cookie,以及一些自定义头部的一些内容,还有一些自定义数据格式的问题,封装好了之后呢,就可以在具体的业务逻辑里面,很简便的就把这个请求数据的方法写出来,然后进一步去处理数据,然后把数据交给页面渲染出来。
02:12
呃,至于网络请求的方法呢,这只是一个例子啊,也并不一定只有这一种,前段时间好像在群里有一个有些同学就是问怎么去封装请求,在群里还能找到那个文件。啊,这里就有一个例子,上上次有一个同学说的是他们是使用的那种建造的模式创建的那个请求,所以这里就给大家演示了一下。如何去使用这样的一个封装方式去做一个请求库,其实核心呢,就是使用了咱们ES6里面的class类,然后去给他做一个request这样的一类,因为我们知道我们的所有的get和post,他们其实核心都是一个request,所以我们最好是把通统一通用的东西放在request里面,这个跟咱们那个IQ里面其实也是一个道理啊,只不过这这个就是你的具体的封装的一个过程,那么我们这里有一些可能要处理自定义头部UA啊,或者是还有缓存之类的,嗯,这个后面我们可能给大家分享一些例子,就具体的那个代码片段的时候,有一些比较完善的处理方法。
03:24
那另外我们注意到的问题就是hi的认证信息和数据格式,最开始我们要跟后端同学去约定数据格式,比如说你是使用接的方式去通信啊,或者说还是使用form data的方式啊,以及呢,可能有时候还要上传文件,并且呢,呃,后端可能要接收到你的数据之后呢再进一步处理。另外呢,在这个请求里面还可以做一些像日志的打印,然后我们在控制台就会看到当请求发生的时候,具体里面有哪些数据,然后在什么时候发生。
04:00
在下面呢,我们可以通过我们后端同学统一的一个呃,数据格式的判断,然后具体的判断到底是业务上有没有什么异常,或者是网络上面的一些问题,然后我们可以通过这样简写的方式呢,把一些通用的。默认错误去处理掉,咱们在业务逻辑的书写的时候,就不需要再关心呃统一的一些异常或者错误,另外一点呢,就是缓存在开发的时候,呃,会做一些请求缓存,或者是说重复点击这样一些机制,比如说可能点击两次,那么我们可以判断这个请求是不是,嗯,在同一时间,或者说在一定的时间范围内请求多次,并且URL和参数都是一致的,那么可能就认为它是重复点击了,可以给他做一个呃防抖,呃给他做一个缓存的一个快速返回,因为他可能在很多次的一个情况下,数据是一样的,嗯,当然这个是针对get这种请求啊,比如说我获取一个列表,那么点两次或者获取两次,其实数据可能并没有发生太大变化。
05:05
然后我们下一步看到本地存储。本地存储呢,其实是有一些存储方式的,我们推荐使用那个偏好数据去存储一些小的建支队。因为这个它是一个字符串形式的,我们比如说存储一些用户信息啊,或者是说一些设置项,然后就可以通过呃,Set profit,然后去设置,通过get profit去获取。这个还有一个同步和异步的一个方法,可以可以把异步改写成同步这样一个方式输出。因为pro呢,它是比较推荐的,就是因为咱们现在要涉及到跨端的时候,比如说要考虑到小程序,还有考虑到PH5这样不同的情况,那么如果我们之前使用的像cookie啊,Storage这样的一些实现方法,可能在有些端里面就没办法实现,或者根本就不支持,所以我们现在目前是推荐了profit这个存储方案。
06:04
另外呢,还有一些像。大一点的数据像需要有结构化的数据的话,那么我们推荐DB模块。这个模块呢,每个应用并不是默认的,需要咱们在那个模块里面去添加,比如说我在这个后台里面。我这个项目需要有有本地数据库的一个功能的话,我们就去在模块市场里面去添加一个DB模块。这个就是DB模块,然后它底层其实是这个数据库啊,我们可以通过这个数据库来本地做一些增删查感啊,这样的话我们就可以在本地有一个离线数据库的一个功能实现,比如说我们可能会存入一些文章列表,或者说一些本地日志。啊,我们就可以存在本地的数据库里面,它支持一些SQL语句的调用,然后根据我们条件筛选出一些结果啊,但是要注意一点,因为它是模块,所以可能目前不支H5和那个呃,小程序。
07:07
当然其实H5端的话,也是有那个web web SQL的,或者说inner DB这些东西。大家可以就是有兴趣的话,就是给他做一层封装,或者说给他兼容一下H5,那么下一个呢,就是文件还是在咱们文档里面有一个读写文件的,因为可以通过文件来读写这个数据,把它作为一种存储方式。因为有了IO功能的话,那么你有大批量的数据,或者说你做了一些类似于呃,本地文章的这样的功能,你可以把它写成TXT文档,然后再把它下次再进来的时候可以读取出来。当然你也可以就是说,呃,它有一些可以通过数据本地数据生成缓存,然后再生成日志文件,你也可以写在一些固定的路径,然后再通过网络上传啊,啊进行一些抓取,或者是说做异步的一个上传操作,下面这个呢,就是log了,我就是提到的,现在已经不太推荐使用了,但是如果你在2.0里面使用的话,还是可以使用的。
08:10
嗯,最后一个是cookie cookie其实是咱们那个架方法是自带的cookie啊,然后他接管了cookie的处理,呃,这个只是说作为一种存储方式,然后H5里面是经常用到的,但是咱们的这里面为了兼容的话,就最好是不要使用这些方法方方案。呃,另外一个就是图片缓存。在这里有一个方法叫做image catch,我们可以通过image catch方法呢,给他做一些文件,那个图片缓存,呃,并且呢,它可以自动缓存生成一些缩略图,在那个咱们的avm的版本里面就是3.0的。里面那个image标签也是支持图片缓存的。或里面有一些缓存策略,当然这个可用性是目前也只是仅限于APP端的偏好数据指的是什么?
09:04
是这样的,在原生开发里面有一个偏好数据的一个这样的一个名词,但是咱们对应到那个APP里面来说的话,就是你可以理解为它就是类似于一个本地数据存储,对这个是相当于它是一个持久化的数据,如果你的应用不卸载或者不被清理掉,那么你的数据都是一直存在的,比如说你可能会保存用户的。呃,一个行为,他设置的某一个通知,不需要提醒你下一次就可以通过他一个持久化设置把这个数据读出来,那么也不需要每次都问他获取。下面有一个global data,这个是与之对应的set global data就是设置全局数据,数据只会存在内存之中的,会存到文件系统,那么这个就跟那个小程序里面的那个global类似了,如果应用被杀掉或者是回收掉,那么就这数据没了,它的好处就是它是能够保活的,在内存之中活跃区里面的,那么嗯,整个应用都能共享到它,速度也非常快。下面呢,就是还有一个像oss缩略图啊,服务端设置这些。
10:10
呃,在网络请求里面呢,我们有些时候可能把图片资源并不是保存在咱们的本地,或者是说保存在跟代码服务器同一服务器上,而是保存在第三方的那个oss上面,或者是说腾讯的cos犀牛的这种对象存储服务。因为这样的话,读写分离你的文件比较大,比如说一个图片可能7800K,或者说仰照啊,或或者是现在短视频流行嘛,可能还会有一些短视频。嗯,你可以把那些媒体资源,或者说附件资源,也就是说所谓的静态资源,不需要去应用程序处理的资源都放在那个对象存储上面,而且现在的对象存储的那个价格也是非常便宜的,并且呢,有些oss还支持一些在线的图片处理,比如说生成缩略图啊,进行裁剪或者拉伸什么的,然后还有一些高级的功能,比如增加水印。
11:03
呃,生成透明图啊这些功能,我们合理的运用这些。在线处理的功能,然后提升咱们的应用的一个性能,其实那个在应用里面图片是比较消耗性能的,因为你想一想,他要把位图的信息转化成APP里面的一个内容,然后再显示出来。呃,还有一些呢,就是跨域,因为咱们现在支持那个HH5端的了,所以有些接口可能会报错,会提示一些跨域的问题,我们可以自己在本地做一些代理转发,也可以就是让后端同学在开发的时候可以设置允许跨域,那么在上线的时候咱关掉这就可以了。呃,关于网络请求的话,我们就讲这些啊,后面的话有有一些事例代码,我们再从里面去吸收一些比较好的一点一些点啊,现在那我回答一下这个问题啊。
12:02
偏好数据刚才我就已经跟你讲过了,然后怎么定义偏好数据,这个就是。熟看咱们这块的文档,数据存储这一块有set和get profit,一旦一个数据有set,那肯定就有get,一一个设置,一个读取,你点击这个就是设置偏好,数据它会存储在本地的文件系统,它是一个持久化的一个东西。看一下这个群。嗯,类似red呢,你现在是不是理解到他跟red的区别了,Red的话,它其实也是在内存之中,这个有点像那个global data,它是比较高速,它是内存中,但是red它自身也是做了一个持久化的,怎么能让图片搜的一下显速来。搜的一下显示出来,第一你要往好,第二你图片要质量要精简,对吧?嗯,所以说如果你图片不是全屏的,或者说它是一个小的一个图片,那么你就给他设置一下那个缩略图,把它给它裁剪一下,或者是说把质量降低一下,另外呢,有些oss或者是cos上面就是支持那个渐进显示的这些东西也是,他就是会通过算法先把一些大体的轮廓色彩,嗯信息加载出来,然后再给你进一步的显示,这些都是有助于提升你的那个应用的图片的加载速度的,呃,图片传的我就是说有一些处理的吗?就比如说。
13:28
阿里云的oss,我直接搜一下oss,看能不能到那个文档上面去啊,帮助文档里面看有没有有没有。直接在这里搜一下吧。你看这里就会有一些图片的裁剪数据处理,对吧?还有一些这是关于裁剪的,因为有时候你可能会要一个圆角图片或者是矩形图片,你可以在这里拆解,然后还有一些像把它压缩的都是有的,你看这个图片是用户传的吗?那么你不加后面的一些参数或者是处理的程序,那它就是一个原图,你可能就这就是你存在oss上面的,那么根据你的一些需要匹配出这些参数。
14:09
那么就可以给他获得一个你想要的效果了,那么图片压缩出来那个质量还是很小的。对,瑞同学说的对对,使用服务器压缩,它是一般是自带裁剪的,如果客户自己要放在自己服务器又要快,是不是没啥好办法有啊,你让客户加钱,有顶配的带宽,买个顶配的服务器,对吧,非得让放在自己的,开个玩笑啊,其实这个你给他讲一讲,咱们这种静态资源最好是放在那个云上面,是现在是最合理的一个做法,因为为什么阿里云啊,腾讯云这些东西都是为什么发展这么迅速,迅速啊,这个东西是被验证过的,他就是一个。一个很好的一个处理方案,对吧,咱们不要背道而驰。啊,咱们这一段的答疑先告一段落,咱们进到下一步,因为这里还有一个云编译和云修复功能,我们这个是没讲了,所以这块。
15:09
我们要讲一下。呃,我们在第一节课的时候就直接讲到如果创建一个应用,如何去使用工具去预览,并且呢,如何去给他提交代码,我这里又有一些改动了,然后可能会做了一些提交,提交到云端。那提交完之后呢,我们的应用可能在本地已经预览起来,或者是说已经能够看了。那具体怎么去别人的手机上面呢?或者说我要如何分发我的包呢?这就是我们今天要给大家介绍的一个云编译的一个东西。还是拿那个例子。拿这个例子随便,其实随随便点一个都可以啊。就看咱们的今天能不能。进去网有没有问题。这个就是咱们最开始创建的那个项目,我们看一下代码是不是我们做了一次修改,那次这就测试提交,在3月22号八点的时候做了一次提交。
16:11
我就改了一点,改了一点东西,然后我们在这里端开发的最后一个模块就是云编译,所谓的云编译呢,就是我们要设置一下应用的一些基本信息,比如说我们要编译的目标平台是支持哪些平台,并且比如说像iOS你是需要去显示的声明这个地方你要。用到一些权限,并且权限的说明。举个例子,你要使用相机的话,那你就要在这里详细的写你要用相机的目的是干什么,比如说你可能需要扫二维码,或者是说,呃,我需要在。为用户提供随时随地拍照上传的一个分享,你就需要写清楚,因为咱们在使用iOS的时候,他问你需要,问你询问权限的时候,我们可能也会看到下面有一些描述的语言,就是在这里定义的。
17:03
安卓的话,这里权限我们是我们如果要设置需要注意一点,应该是设备访问里面的还是promise。这个的话就是需要从安卓6.0开始,就是他跟iOS一样了,你需要去申动态申请,然后你可以去判断他的一些ID,那所以我们要去适配这个东西,那么具体怎么适配呢?我们要看这个论论坛里面。这个帖子就是。需要去这么设置,这个设置非常简单,你就是把这个附件里面的这个下载下来。完了之后放在你的那个res目录下就可以了,就像这样放。然后这个下面有一些例子,你就可以使用刚才我们提到的这两个API去获取权限,然后去给他请求权限,进一步的通过他的那个当前的一个状态去给他做进一步的引导。
18:03
这样的话就是如果说在安卓6.0之前的话,呃,这个东西都是系统来管理的,那么现在的权限交交给到应用上面,跟iOS是保持一致的。所以我们还是回到云编译这块,如果你需要这里生效的话,那你最好是呃。去把它那个。定义成那个就是安卓6.0的那个动态权限那种模式。下面还有一些小程序的,还有H5的,现在目前都是写的内测版啊,就是可能还正在逐步的兼容和修复。那下面的话就是可以选择一些类型,你可以在这里去选择正式版和测试版。测试版的话,你在iOS上面还要需要选择一些嗯,证书,官方证书或者正式证书或者测试证书。嗯,这里是全局加密的,就是是否把你的代码进行一些加密啊,免得有些2.0的项目被解压之后呢,它代码就被暴露出去了。
19:06
啊,这个SVN设置呢,就是它可以去。动态的去指定某一个版本,因为比如说我们现在在这里是提交了两次代码,比如说我这这一次可能改的有些问问题了,那么我希望回退到上一次版本去看看上面有没有问题,就可以在这里去设置。这可以加一个备注,然后就可以开始变异了。当然这里还有个高级设置,一定要注意,呃,我们可以选择引擎的版本,并且呢,下面可以选择固件要求,这个固件要求和这个就不一样了,这里的话就是你可以限制它最低什么版本就不能安装了,比如说你的应用可能就限制。有了很多的特性,低版本不兼容,那么你就可以给他设置高一点,或者有些模块要求需要最低设置为9.0,那么你就在这里设置,设置了之后呢,这里也是一样需要保存一下,并且这个地方好像是有一点小技巧的,就是你需要设置完了之后进行一次编译,才能把这个数据保存在里头啊,是这样的一个情况。
20:13
这个云编译的一个过程,其实这个就非常的简单了,我也就不具体演示了,因为这个东西打包出来没有什么太大意义,因为这就是一个模板,自己可以去尝试的,点一点,测一测,试一试。另外一块呢,就是咱们的云修复,云修复功能还是比较常用的。云修复的话,这里可以选择就是咱们的API应用,然后要需要注意的是,如果你要启用云修复,必须把那个config那个文件里面的一个smart update需要选中为处才能开启云修复。呃,这个文件在哪呢?就是咱们的项目里面。这里有个smart update,这目前是为first,你需要把这个地方改为true,然后保存一下,进行一个代码提交,代码提交的云端之后呢,并且用户是在这一个设置下去安装的,他才会通过走这个去给他动态去给他更新,所以最好如果你的那个应用有这个计划的话,最好在开始创建的时候,还没发版的时候,最好是把这个设置为true,那么以后做动态更新的时候就非常的方便了。
21:29
在更新的时候呢,我们可以在这里添加一次云修复。然后给他。呃,打包成一个zip包,这样的话。呃,你可以把你整个代码上传上传上去,那他会做一些更新对比。当然这个它可以通过一个远程的地址给他去更新修复,更新完了之后,它可以通过一个事件,这个事件是来自于哪呢?我打开一下文档。这里有一个smart up finish的。就可以通过这里这个事件,它会进行一个监测,你的云修复完成的话,你可以让引导用户重启之类的。
22:11
然后这里可以做一些备注修复,当然这个他并不会在用户端去显示,只是说为了让你去,呃,给你备注一下,你是做了什么修复。呃,要注意一点就是如果说咱们的那个修复是avm的版本的话,咱们上传的文件并不是那个STML,而是那个编译或者GS文件,哈的同学说现在是不是还不能同时开发小程序,现在目前咱们的A就是支持。呃,APP小程序的呀,刚才咱们看到云编译这块不是有那个小程序了吗?虽然说是内测版,但是它是已经是可用的,我们在预览的调试的时候也给大家讲过如何去用小程序预览,对吧,这些都这些都是可以的,都是支持的。
23:00
在微信开发工具里面都可以预览的,还有其他什么问题吗?关于关于云修复和云编译的一些东西,有问题的话大家可以提出来。那下面我们就给大家讲解一些开发技巧,或者是说最佳实践吧,就是你们在开发过程中也有一些经验,嗯,有一些可取之处,呃,另外呢,我们如果说学习am资源,我还是给大家,呃,看一下MXAPP的template这个项目里面就是做了一些。事例的集合,如果说需要学习或者是说去下载的话,咱们就可以通过通过这里去给他。恩,下载这些项目。还有一点呢,就是咱们在开发的过程中。我建议大家就是最好都是能使用ES6的话,就是使用ES6,因为好多同学问我如何去创建全局对象,然后去保存那个Z啊这些操作,呃,我们能够使用ES6呢,简化咱们的代码,并且呢,可读性也非常非常好。
24:03
呃。比如说咱们最常用的就是箭头函数,或者是说你的let count这些变定义一些,呃,有作用欲的一些变量。另外呢,我们还推荐大家使用一些结构,然后来提升咱们那个代码的一个质量,看一下这里有没有解构例子啊。对,你看这个地方其实就是一个结构,他给咱们暴露了一个整个对象,其实是一个简写啊。他其实全写是这样的。它是一个detail冒号,Detail说白了就是一个有这样一个对象,它有一个detail的一个一个属性,然后下面直接拿到这个detail,然后把它作为一个变量放在这里。所以这样的话,我们就非常简单的拿到里面的一个变量,不需要再去,如果这里写成写成一个这样的一个东西的话,那么可能还要做一个变量去给他接收下来。
25:02
对吧,这可能就比较麻烦一点,咱们咱们直接在这里写使用那个结构就可以拿到那个确实参数了,因为很多那个参数是包了很很多层的,但是要注意一点,如果使用结构,它的引用性可能会被丢失掉,你要注意这些原理性的东西。另外呢,就是大家推荐字符串模板的一个功能来实现咱们的。长字符串的拼接,这样看起来就非常的呃明显和高效了。如果你使用那个双引号单引号的方式去拼接的话,可能就比较的容易写斜物,然后并且这个字是换行的,你不需要再去给他写加号,然后再换一行之类的。因为这个是咱们那个,嗯,本身编译引擎支持的,就最好能把这个特性用起来。嗯,我看一下问题。云修复对是指客户端的APP的,咱们云云修复是只支持那个APP端的,嗯,ES6支持吗。
26:07
啊,文瑞同学,你的这个问题就问的。有点问题啊,为什么呢?因为这个promise它其实是是ES6的,那么a think呢,它其实是ES7的,对吧,你可以去查一下。呃,另外呢,Promise它还有一些方法,所以这个它并不是说完全支持,那么我们这个编译目前设置的版本是ES6的,就只是ES2015,那么后期的一些特性目前来说还没有支持,咱们只是做一些,呃,这个。架构的这个设置在这里,就是咱们以后再往里面去添一些特性,可能会也会非常容易,所以目前来说是只支持ES6的,要去注意一下这一点。能不能讲一下小程序相关的,毕竟这次主要是小程序开发,你想听小程序哪一哪一点相关的。
27:04
Lava说,ES6的11啊,刚才我已经解答过了,就是。目前来说就是ES6。嗯。这个特性会提高性能吗?呃,怎么说呢,有一些特性会提高性能的,呃。因为他毕竟是原生支持的嘛,它其实从引擎来出来的,那如果说你在那个你编译出来的是小程序,或者是说H股,它其实是直接可能会使用那个原生的,呃,但是如果说你在APP端的话,他为了保险起见,他用的是八宝转移,所以他就可能还是会做一些。嗯,降级或者是play fair这样的一些处理,嗯,但是对于咱们开发的一个效果来说。嗯,对于开发的话,就是咱们写起来比较高效,然后看起来比较清晰明了,对吧,咱们如果说在定义一大堆的while变量,或者是说一些冒号加号引号什么的,这个就可能比较乱。
28:07
啊,现在很多同学都打开了STUDIO3了是吧。啊的话,这个你没看懂的原因是因为这个它是开到这个组件里面来的,那我们在这个组件里面看到。其实要看文档的啊。这个就是日历组件嘛,然后有一个有一个事件给大家看一下下面的一个API。所以这个地方就只是说他这个地方会给你回调一个参数,说白了你自定义的时候啊,可能不是这个confirm,你可能自己会写一个,比如说。呃。就是一个数字,数字一,那么你接受的时候,是不是肯定是在函数里面可能要写一个你的行参啊,把它接收掉,那么这个地方如果返回一个对象的话。就是比如说他的name叫做123,如果他这里回调一个对象,那么你在下面接收的时候,是不是就要写写一个,如果说像以前的话,可能就会写一个函数。
29:06
那这里使用一个OBG来接收这个对象对不对。那么现在ES6的话,其实就是可以支持那个结构,你直接把它拿到,然后比如说name name对吧,这是个对象,那么因为如果说键值相同的话,还可以进一步简写成name。这就所谓的那个detail怎么来的,所以这个地方应该是,如果原型的话就是detail,明白了吗?那么这个东写detail,那你这个地方如果有一个cons detail的话,那它打印出来就是个ES3,这个是ES6结构的知识啊,大家可以看一下ES6的一些特性。就是说我建议大家使用ES6的语法,然后来提升咱们的应用的一个呃美观程度。而且大家去。呃,维护的时候呢,也非常的方便,是这样的,不是说跑题了,而是说咱们的框架就是支持小程序的,所以你开发的时候,你按照这个这套逻辑去开发,它是兼容小程序的,明白了吗?
30:07
就说我们不关心他最终是什么,不关心他到底是APP还是那个小程序还是H5,我们只是按照A这一一个对API是不兼容的。API很多是不兼容,但是正在做一些兼容的处理,那么而且呢,有一些并不是并不能去做兼容的,对吧,比如说你API里面,微信里面的一些私有的微信支付的API,或者微信用户的API,我们做了兼容又能如何呢?嗯,还有一点时间,我给大家再分享一下我们之前做项目的一些经验,就是。2.0的关于当然2.0的,虽然说它是2.0的,呃,但它里面有一些可取之处,我们可以延续下来。像这样一个项目,就是之前做的一个商业项目啦,然后关于里面的一些。
31:00
统一的方法的处理有一些。点可以跟大家分享一下。啊,这个函数非常非常长的,那我们看一下有一个文档其实是。写了一个小文档。比如说我们定义了一个公用的方法。呃。那么使用那个UN来替代,就是有些时候呢,我们是使用使用一个UN ready的。呃,目的是他在一些准备好的时候去工作,所以有些时候有些同学会问我如何在整个页面都会执行统一的一些东西,那我们就可以把这个UN ready去给它封装起来,那么如果在执行UN ready的时候,其实是在API ready里面已经就把这些对象已经注入进去了,我们在这里面就可以非常放心的去使用一些逻辑了。看到源码里面的话就是。搜一下啊。
32:05
啊,在这里有一个,我们其实是把它API拿到一个公共文件里面的啊,我们每次他都会肯定会执行这一一个函数,对不对,那么我们可以在这些前置做一些操作处理,嗯,比如说初始化一些数据啊,或者说做一些。公共处理,那么后置呢,我们再做一些,拿到这些页面数据,呃,给他做一些后置处理,我们就可以进一步封装起来,就把相当于做了一个钩子函数勾在那个API里面。嗯。另外呢,还做了一些像用户信息的一些操作,我们为了就是能够便于操作和持久化,当前用户信息呢,我们封装了一些像类似这样的一些操作,就可以直接拿到用户的信息,比如说你往里面保存的时候,或者说设置的时候,以及清楚的时候,并且我们根据咱们的业务,可以在这些设置的函数里面去把它做一些动态监听,比如说我当我在这个地方调用过一次my myo这样函数,那说白了我这个页面肯定是要需要动态去。
33:16
监听那个登录或者是说退出这样一个操作,那么根据用户信息的一个变化呢,我们会动态刷新这些变量的值。API不支持的方法,那要怎么在A里面写这个。你的意思是小程序里面的吗?不知方法。应该是一个属性啊,叫做platform,这个属性呢,就是能够判断当前的运行平台,然后去判断是APP还是web还是MP,通过这样的一个动态方法,然后可以去动态调用嘛,对吧,我们因地制宜,如果你是小程序上面,那么你就是去执行小程序的登录,你下面可能会使用一些微信的API。
34:03
对吧,因为微信可能面可能里面还要获取用使用微信login方法去拿到这样一个code的。是不是这样的道理?啊,可以使用的。哈的同学,我建议你把。拉下来,然后在工具里跑一跑,运行运行,你就没有这些疑问了,因为这些东西都是比较,呃,是比较基础的。不知道你第一节课有没有进来啊,就是我们在第一节课里面演示了如何去把项目拿下来,然后去怎么打开,如果说你没有看第一课呢,其实看咱们那个项目就。嗯,Hello APP这样一个说明文档上面就非常详细。啊,林同学说,例如在导入三需要改成才不会报错。
35:05
对,因为目前咱们是针对STUDIO63来说的话,它其实是呃需要识别后缀的,它可能通过后缀去识别的。恩,咱们时间也到八点了,然后今天是周五,所以也感谢大家啊,五天的一个陪伴,然后呃,以后有机会他可能还会有一些类似的直播课,呃,然后有一些其他的疑问的话,就是可以到那个咱们的。QQ群里面,嗯,去交流。啊,也感谢大家的聆听,然后祝大家周末愉快,嗯,谢谢大家。
我来说两句