00:00
好嘞,各位,那在这一小节呢,咱们趁热打铁,再给大家讲一个跟组建相关的知识,诶,就是这个一个重要的内置关系,可能听到这儿啊,有些小伙伴呢,就觉得烦了,说老师你看看你讲这东西啊,123给我讲完了之后,明明可以直接去讲单文件组件怎么写对吧?结果呢,你迟迟不讲,哎呀,给我说说四,给我说说五,老师一会儿你再说说六呗,啊想听也没有了,五就是这里边的最后一个了,跟大家解释一下啊,为什么在这儿呢?我非得说这个四和五,为什么非得把这个组件呢,给他往深了刨,咱就拿四举例子打开,可能各位还觉得挺委屈的,说老师你看我信了你的鬼话,这12345啊,我费了好大的劲儿,我理解了,我记住了,但是发现呀,对我一点帮助也没有,就现阶段来说,拿这三举例子啊,老师,我自己验证了,也花费了很长的时间,View点我发现了,每次调用返回的都是一个全新的view component,但对我没帮助啊,这五条只是在浪费我的脑容量。
01:00
听了是吧,哎,老师我发现了你这课呀,就是不想让我听懂,诶,你这是什么虎狼之词之后我怎么能希望你听不懂呢?同学说说为什么非得在这儿去刨这些东西啊各位是这样的,有些东西呢,适合现用现讲,哪些东西呢?这个API,同学API类的东西就适合现用现讲,就是我带着你去写功能,哎,我说同学是不是写不出来了,哎,这样的吧,调这么一个方法就可以了,哎,我再带着你写另外一个,我说你看是不是又写不出来了,来,我再告诉你一个方法,哎,一定要用又程了,对吧?各种属性,各种方法,这些东西都是属于API类的,也就是说白了,框架的作者设计好的,你也甭想改,只能去理解这些东西。同学简单说,那就往你脑子里填吧,对吧,各位你记不住呢,你也没别的办法,只能死记硬背,但是有一些东西必须得提前跟大家说,就像这种东西,原理性的东西,在讲组件的时候,就把组件相关的一些细节上的问题啊,我给你交代到位,然后再形成。
02:00
几个总结,等我们后期用的时候,把总结性的东西直接拿出来用就可以了,说老师呢,如果你不在这儿讲,在以后讲呢,以后讲就会造成本身这个东西就很难理解,并且它的原理呢,也不简单,哎,然后呢,我先给你讲原理,跌跌撞撞哈,这原理好像迷迷糊糊完了就开始用同学容易造成你最终没懂,OK好了,在这儿呢,我就不墨迹了啊各位来,我们接下来说这个重要的内置关系,那这样说这个重要的内置关系之前呢,我把四打开,我重新给你说说两个人,谁呢?一个是VC,一个是VM,之前你看到他们两个了,来打开。打开控制台,输出一下VM,该清的清掉啊,VM在这儿呢,哎,然后有细心的同学啊,就打开看了,把这里的属性呢都读了一遍,当然这里边啊,同学有一些东西我们还没来得及去学呢,对不对?哎,慢慢来,日子还长,这里边有很多的属性啊和方法,诶细心的同学把这些属性和方法呀,就都记了一遍,都看了一遍,随后呢,咱们同学又开始输出这个VC走,这是不是VC是吧?Component的实例对象吗?打开,哎,同学把这里的属性和方法呀,诶也给他整体的过了一遍,读了一遍,然后同学发现,诶老师有意思,他身上的属性和方法他身上也有,甚至个数都一样,说老师啊,这两个人长得简直是一模一样,就从表面上来观察,你有那么多属性,我也有,你有那么多方法,我也有属性名方法名都一样,哎说老师,那你说就这个VM和这个VC,我得怎么去把控他们两个呢?来说说啊各位回到这儿,有些人呢,把。
03:40
这个VC和这个VM,也就是view的实例对象和组件的实例对象,直接给它画等号,这是不太对的,各位就是较真来说,把VM和VC画等号是不对劲的,说老师我觉得应该画等号,VM有的,你看VC身上都有,是不老师那怎么不能画等号呢?同学你考虑一个问题,来,同学慢慢分析,VC我问你是怎么出来的,是不是你这个东西出来的?或者我换一个说法叫VC是由view component缔造的,怎么缔造啊,你得new view component对不对?各位,哎,那我再问你,各位这个VM是怎么来到这个世界上的,是不是这个view缔造的呀?那同学你想想,View component在缔造VC的时候和这个view构造函数在缔造VM的时候是完全一致的吗?不是,我给你说一个最明显的,各位,就是你在创建组件实例对象,你传入配置项的时候,你是根本不可以写这个EL的。
04:40
你觉得呢,你敢写他就报错,我们之前看过,但是你在创建这个VM的时候,你new的时候,同学你传的那个配置对象里面可不可以写EL,可不可以,可以你看同学,这就是区别,表面上来看吧,确实是各位你看啊,VM能写计算属性,VC也有,VM有watch VC也有,VM有methods VC也有。同学很多的东西VC都有,是不是,包括VM身上的生命周期,VC有没有,有是吧?VM有数据代理,VC有,VM有数据监测,VC有,对不对,原理都是一样的,靠那个什么get那些东西对不对,但是你不能给他俩画等号,因为还是有一些区别的。嗯,就像咱刚才说的,VM可以通过EL属性指定我到底为哪个容器服务,但是VC怎么办?他不能写这个EL去指定我为哪个容器服务,VC只有怎么办,跟着大哥混,VC只有A跟着他去走是不各位哎,所以说他俩。
05:40
身上的东西呢,99%都是一样的,哎,但是就是因为有那1%,哎,谁呢?EL其实还有一个地方也不一样,各位我问你啊,你在创建这个组件实例的时候,你那个data,你那个数据那个配置项是不是必须得写成函数,哎,但是我问你同学,这个view你去用它的时候,那个data,那可是写成对象也行,写成函数是不是也行?各位这不都是区别吗?是不是这意思?哎,说个生活中的例子啊,各位,就是这个VC啊,和这个VM呀,是一对双胞胎,长得特别像的双胞胎,哎,就表面来看,你区分不开来谁是老大谁是老二,对吧?但是同学我想问你,他俩实实在在能画等号吗?就是一个人吗?不是,是吧?哎,其实这个东西啊,同学,在view的官网上你都能找到答案,来到这儿有这个教程,里边有一个我记得是在这儿啊各位,组件基础完往下看,你读这句话,组件是可复用的view实例。
06:37
你看组件是可复用的实力,也就是说他给你表达的意思就是VC啊,跟那VM咋的,哎呀,那是一样的是吧?但是你别急,各位你别说人家说错了,你再往下读,人家说了他俩是有区别的,读这儿就妥了,因为组件是可复用的view实力,所以他们与new u时接收的配置项是相同的,也就说白了,同学你new view的时候,你传入的那个配置项options怎么写?那你再去创建一个组件的时候,那个配置项也怎么写,你看人说的多明白,例如有data,有comp watch methods,以及所有的生命周期钩子那些对吧,都有,但是你往后读啊,仅有例外的,像谁呢?像em这种只有根实力,啥叫根实力?就是VM,只有VM特有的选项是这意思不?所以说同学官网的这些话,翻译过来就是VC有的功能VM都有,但是VM有一个功能,VC就没有,VM什么功能能够通过E?
07:38
L决定我为哪个容器服务,而VC却不行,对不?哎想想是身上都有同名的属性和方法是个数都一样,但是里边方法具体的实现,诶可能是有点小区别的,OK,苏老师那官网说的不仔细,他也没说这个data必须得写成函数啊,在组件里人家说了是你没往下看,在这儿各位data必须是一个函数,为啥呀,读这儿他说因此怎么怎么地,诶被返回对象的独立拷贝同学他说的呢,就有点太官方了,就是没有用大白话去说咱是咋说的,咱说防止一个组件被多次使用的时候存在一个数据的引用关系,人家这说的是啥意思,每次都返回那个对象的独立拷贝,所谓的独立拷贝就是这个对象和上边别人用的那个对象是两个,你每一次去拿数据的时候,我都现去给你调data这个函数,然后靠塔函数所返回的那个对象,诶去给你用,是这意思不?哎,好了各位,那我们就把VC和VM呀就说完了。
08:38
啊,如果不较真来说,他俩能画等号,但是较真来说他俩还是有点点区别的,是不?哎呀,其实啊,我跟你讲各位,它底层在创建VC和创建VM的时候,有相当一部分代码其实他都复用了,你还真以为同学这里边有很多的逻辑,比如说那两百行代码在这里边创建它的时候,他又写了一遍呢,不是的,同学有很多东西他在复用,OK这块呢,咱就过了啊,给它问掉。
我来说两句