00:00
好嘞,各位同学。那么咱们刚刚啊讲了一下子,设置路由组件当中的这个商品分类的这个三级列表。对,不时而显示,时而不显示,而且要注意在home和色当中,它的状态是完全不一样的。在home当中它一定是显示,而在咱们的色置路由组件当中,它是时而显示,时而隐藏,而且进入的状态当中是有过度动画。但接下来呢,还有一个地方咱们要进行优化,你看就是咱们现在这个商品分类,就是老师给来一个就是现在啊啊。现在。咱们的商品分类这个三级列表。可以进行优化。说老师啊,这还有什么优化的地方呢,咱们看一下老师问你啊。老说你啊,你看这儿。
01:00
现在三级分类当中的数据,老师问你是不是拉,是不是从服务器拉回来,你看这看这。还记不记得这个接口叫做get base category list,这玩意获取到的是不是就是服务器当中咱们这个商品分类的列表的数据,是不是要发请求捞的?你看啊,老师带着你们看一下子,你看啊。你就举个例子,现在是在home当中。在home当中,咱是不是拉取了一次商品分类的数据,是发了一次请求,你看啊。当老师点击搜索的时候,你再看走你看。老师问你啊,路由跳转的时候,从home跳转到色的时候,Home路由组件是不是销毁了?对不,而search组件是不是有了,而且search组件当中又用了一个叫做type nv组件,你看它是不是又发球了。对不对,你看啊,老师把这两个地儿我给你找到,咱当年在home当中,你看这在home当中咱是不是用过type nv看这。
02:08
这是home啊,Home当中咱是不是用了type n nv,那你想用它,你是不是得向服务器发发请求,因为咱们这个请求是写在哪里,你是不是写在了咱们的这个叫做type nv组件内部,你看吧。咱当年拉取服务器的数据,咱是不是在这写的,你看这是不是在这个,呃,商品分类三级列表的monkey当中是不发发起请求的,你看这。对不?但是你要注意,当你跳到search的时候,他是不是又在发请求?发了第二次,你看老师,再回到首页,看这是不是又发请求。对不,也就是说每一次home和search进行切换的时候,咱们的type nv。是不是从销毁就是从无又到有,从有又到无,从无又到每一次展示出来,是不是都得向服务器发请求?
03:03
就这能不能懂。就这能不能懂。能懂的给老师扣一个六。啊。就这种现象能不能理解?比如说你回到后啊。对吧,你回到色啊。对吧,我不管你是去home还是设置它,两者都用到了typeb NAV组件。而你路由跳转的时候,相应的路由组件会销毁的。当你再再访问home的时候,会重建一个,你从home跳色置home销毁,从设置跳home home又来一个,是不是又来个泰多NV,导致了什么?导致了,诶咱的这个请求,你只要用到type nv,它是不是就又会再发请求。那有的同学说老师缓存组件啊,这里咱用的不是它。老师就问你一件事啊。
04:02
我就问你一件事,你说咱的商品分类的这个三级分类这个列表,老师问你啊。他无非就是想用这里的数据。但老师问你这条数据,老师问你,我就问你向服务器发起一次请求和发起N次请求的结果是不是一样。那指定不一样,发起一次性能更好一些。事儿对不对。就现在老师问你,你看现在发的请求是不是过多,你看嘛,每一次情官都会发一个请求,每一次发请求是每一次都要发一个请求,就是从性能的角度出发,他不是很好。对不?那有的同学想到了什么,想到了本地存储,你本地存储那不也一样吗?每一次是不是也得发请求?对不?那当然你可以判断判断什么,判断本地存储有没有,有从本地存储捞,没有是不是再发进去。对,不但没必要啊。
05:01
老师问你啊,我就想让这个请求只发一次。我不管是在home当中还是在四当中都能持久的用,对不对,对不,那老师就问你啊。你说在哪个地方当中,他只会执行一次,我只想让这个请求只发一次,你说哪个地方他只会执行一次?想想老师呢,带着你们捋捋,你看老师从头给你捋,你要琢磨哪个地方,他只会执行一次,看这啊。首先说最先执行的是不是入口文件。对不?哎,老师问你最先执行的是不是入口文件。咱们先不看什么什么路由器,仓库这些东西,这咱都不看。他是不是引了一个叫做APP路由组件。对不,那老师问你APP路由组件,咱代码就这点儿东西,我问你它是不是唯一的一个根组件。
06:01
就相当于是最外层的这个跟组件,我问你他的monkey,我不管你怎么玩,他的只会执行几次,只会执行一次。对不,你看咱可以测试一下。老师呢,在这呢,我给你写个谁monkey对不?那咱们这打印一句话啥cons.log我是跟组件,我是跟组件。对不,那你看当这个程序一跑起来,你看啊,老师给你们访问一下来1278080,你看是不是跟组件会执行一次。看这是不是会执行一次。那接下来我不管你路由怎么跳转,我问你APP跟组件是不是只会执行一次。就这能不能走?也就是说,我不管你是在A,不管你是在home路由当中还是设置当中,我是不是都是放在APP组件当中,而APP的monkey只会执行一次。对不,就这能不能想通。
07:01
那所以说咱们可以怎么办,可以这么办。把咱们当年放在type nv当中的这个派发的这个action我放在哪,我放在APP组件当中,放在这儿。我让他只执行几次,只执行一次。对不?所以说这块的呢,老师呢,我给你写一个注释。对不?这是派发,哎,派发一个action干什么,是不是获取啊,获取商品分类的三级列表。的数据。因为这行代码在干什么,是不是在通知咱们的仓库要发请求,把服务器的数据是不是放在仓库当中。那有的同学可能会问,老师,放在这儿行吗?行啊?就相当于你看啊,就相当于你程序一运行起来。那我的仓库当中是不是就已经有了三级列表的数据了?
08:05
那当你想用的时候,你找仓库要不就行吗。对不就这能不能想通,而且你看我不管你怎么切换,你看这咱的盖。啊,什么category请求只会发一次,你看吗?你看吧,你看吧,你看吧,那我不管你是切到后面还是色置,他们想要的数据都找谁要,都找咱们的仓库去要,而仓库早已经有了。一定要记住,老师说这句话早已经有了,为啥?因为APP组件是最先执行的。对不?咱说所有的组件当中,所有的组件当中APP是最先执行的,而且它的mount只会执行几次,只会执行一次。对不,那就相当于typeb nv在用数据的时候,在他用之前,仓库早已经有了。就这能不能走,而且请求只发了一次,你想用好直接找仓库要就行。
09:01
就这儿能不能理解?这都是考虑什么,考虑性能的角度去出发的,就想想发一次请求和发两次请求数据不都一样,当然你发一次不更好一些吗?所以说对于咱们type NAV这个优化能不能理解,能理解的给老师扣一个六。能不能理解?能理解吧?先别说别的,说老师。不。说老师啊,那我这个东西能不能放在入口文件当中啊。哎,老师问你,你说入口文件是不是也是执行一次。老师问你们的一个问题啊,认真听,现在老师想问一件事,命点GS不也是执行一次吗?那我这行代码能不能放在命点GS当中?可不可以?就是这种写法,就是现在老师的这种写法,能不能放在命点GS当中。
10:04
能不能?就现在这行代码,老师给他放在密点GS当中行不行,就这行代码,我给他放到密点GS当中行不行?考虑。能什么能啊?你要明白啊,现在这个Z是谁呀,谁也不是啊,因为组件的身上才有do属性。那你要明白这个,这是谁呀。对不,哎,这能不能相等。你要明白能不能放在M点点,虽然m.GS也是执行一次,但是你要注意这个Z是谁呀。你看老师,我先把这张代码我先给撤回来,是不是要琢磨一定要举一反三,说你放在这儿可以好,那命点GS不也执行一次吗?对不?哎,当当老师先把这个这个先放回到咱的APP当中,就这块代码我先给你留在这。你要想明白,你放在入口文件当中这样的代码你放在这儿,它行不行就哪就这。
11:01
你打印一下这你看因为什么,因为组件的身上才有那个那个那个那个那个那叫啥那个Dollar style的属性,所以你看这个这是人你看嘛。来看,这是安底范,你说能行吗?诶,老师的这种写法放到面,放到这个命点GS当中行吗?不行,为啥。为啥?因为咱的命点GS它不是一个组件,这能不能懂。啊,你别说放不放VM上。啊,你别说放不放VM上,我就问你在这儿老师刚刚写的这样代码行不行,不行,为什么?因为他不是一个组件,它是一个JS文件。Voe的组件都是以点V结尾的。这能懂不?哎,能不能懂,能懂的跟老师说一声。能不能等?可以吧,就是这行代码,你别直接我往密点,JS里面我为下,因为它这是按底one,它不是组件实例,因为组件实例身上才有到到出去。
12:02
OK,不?O不OK。OK的,给老师扣一个一。所以说咱放在哪儿就行了,你放在APP当中就可以了。对不,这是考虑什么,考虑性能的。OK吧?
我来说两句