粉丝2.5万获赞19.5万

大家好,我是杨林,今天为大家带来的是 wipe 大件 vivo 枪。本章主要两件内容,第一是出手画项目编意 vivo, 第二是在 vipac 项目中进入 vix vivo ruder。 我们接下来进行项目出手画。首先创建一个文件夹,这边文件夹已经创建成功了,我们直接进入 直行出石化。 说实话,成功之后我们安装 vipad 插进, 在安装的同时我们添加入口文件, 还有一个配置软件, 配置完成之后,我们将这里的配置直接复制到配置文件中来。 创建成功之后,我们引入微友 这边,从那边一下 在微博中添加一些内容, 我这边使用的是微有三的语法,如果大家有兴趣的话,到时候可以访问一下文章的链接,我这边写一些内容, 写一些样式, 再创建一个样式文件夹, 然后在猫尾中进行饮用。 这边已经配置好了,我们需要安装插件,我们这边直接使用 v 六三的版本,如果大家直接是 npm v o 的话,这边是安装的二点六点四的版本, 还有两个辅助场景,这关于这两个围巾的解释我在这边也有详细的说明,大家可以看一下。 配置完成之后,我们需要引入 violoder, 我们在等待安装的同时,先把 violodo 的配置给他安装进去。 好了,这边已经安装完成了。 fu 六六六六, 这边没有 lod 的配置,已经配置完成了。接下来是形容样式文件,因为我们在没有点没有人用的萨斯文件,所以说需要进行配置,还是和之前一样,直接把这里的 note 配置直接拷贝进来,还有图片的配置, 全部都拷贝完成之后等等待他安装完成。我们安装魔法玩具, 我们这边使用 cnpm 装吧, mpm 有些慢, 我们需要按照国外微信,同样的需要在配置文件中进行配置, 安装了之后我们需要双键模板。文件 安装完成了,我们安装一下武器, ipad dv 杠四五的配置靠背到配置稳定中来修改排列阶层的启动命令,大家注意一下,在 ipad 五中, ipad 靠 dv 杠四五的启动命令已经修改了,修改成为了 ipad so, 这边直接替换 计划完成之后,我们启动一下命令, 可以看到这边端口已经启动了, 我们修改一下这个图片的样式, 可以看到这边已经配置完成了。接下来是在项目中引入 violu 的和 vix, 我们先在项目中接入 vo, 大家注意一下,如果你是 npm, 因此到直接安装的话,也是三点零的版本,你需要通过指定版本后进行安装,需要创建路由文件, 添加新的页面, 把这边 app 的内容复制到换不中来,然后这边随便写一些内容, 把滤镜内容重新改, 把没有入口的配置搞杯进来,我们可以看一下路径, 然后在蚂蚁中进行引入。 这边已经配置完成了,我们启动一下项目,查看一下效果,可以看到端口已经启动,我们在这边刷新一下, 可以看到这边的路由跳转也是正常的,如果大家有新的路由文件,也可以在这边进行添加。我们接下来配置 vox。 首先在项目中安装 同样的需要新建 vs 文件, 把你带死的内容给拷贝进来,我们对用的去添加这几个文件, 让我在这边只是写了一个案例进行教学,非常简单。 然后也是需要带脉动引入 贝尔克斯已经配置完成了,我们到页面中去查看一下效果,找到后 在这里面导入 vivo 的 vx, 把它内容打印出来,看一下启动项目, 项目已经启动, 我们刷新一下,可以看到这边已经打印出了 vix 的各种方法,以及我们的 stat, 这边如此也打印了信息,包括我们跳转的 pose, 一些方法我在文档中也有给列出 vivo vox 的文档,大家可以进行学习。好了,今天的内容就到这了,谢谢大家,再见。


首先我们来看一下 wipe 和 weith 在开发环境上的变异速度。左边的话呢是 wipek, 右边的话呢是 weat, 通过这个文件名能区分的出来。然后的话呢,我把这两个面的线都给它开开,我先执行这个 wipe, 然后紧接的话呢,再执行这个 weat。 好,现在我们看到位置已经构建完了, vipad 还在跑。你注意这是一个全新的项目,里边没有任何多余的文件,非常非常简单的项目,我们从这块能看到这个时间上的差异,看到了吗?然后我们再来看一下在生产环境上的变异数据。 好,左边的话呢是 wipe, 右边的话呢是 weight。 注意这个是非常简单的项目,随着我们的文件越多,这个差距会变得越来越大。 vipac 会将所有模块都要构建完成,并且分块的模块他也需要构建,所以项目越大,文件越多,这个构建速度就越慢。 他的执行过程的话呢,先是执行入口文件,然后通过 loder 和插件对我们的模块进行编辑处理。最后的话呢,说出我们的编辑内容位特是基于 esm 及 es 六模块来进行构建,那么他是按序来加点模块, 即模块在需要时才加载,而不像 wifi 需要预先对模块进行变异处理,这会节省非常多的时间。 wait 虽然由 vivo 作者开发,但它与框架没有关系,你可以用 wait 来构建 vivo 或者 ret 等等等项目,以及需要服务区单渲染的应用。使用 wait 开发项目启动和更新速度非常快, 而且配置简单。我们知道 wipe 的配置是比较繁琐的,你需要掌握更多的知识,因为 weat 配置简单,速度快,节省开发时间,非常建议大家学习使用。

那我们来看一下将 v o e 项目打包成 windows 应用里面的 e s e 文件啊,打包之后进行安装的一个插件,我们进行给它处理,看一下如何去打包。首先呢我们第一步需要借助这个 extra 的官方,官方的一个例子去把这个, 嗯进行下载一下,我们来用 get 命令进行下载,我们复制一下。首先呢我们打开一下我们的 get 好,我们来把这个命令复制到这里,然后进行一下执行,然后呢他就会在我们的桌面上面进行下载一个这样的一个插件 哦,这个还是比较快的。然后呢我们把现在我 我们的一个项目进行一下打包,我们打开一下,嗯,一个 v o e u i 我们的一个功能面板,然后现在已经下载完成了,下载完成之后呢,我找一下我的 好,在这里我们来看一下这这样的一个项目结构,然后呢我们对照着自己的文档,对照着自己的文档。第二步进入我们的 v o e 项目进行打包,我们第二步已经在执行了,那第二步也在执行,我们需要 稍微等一下。然后呢第三步我们将打包好的第四文件呢放到我们的下载好的文件夹里面。第四步这些,然后我们直接进入到第六步啊,第六步的话需要一个, 需要一个 n p m 音 store, 我们来执行一下,我们把我们下载好的这个先得进行一下 get 安装,嗯, n p m 音 sto, 我们加一个 c 吧,我们加一个 c 进行一个安装,这样子用我们的国内镜像的话,中国镜像比较快一些。然后我们的这个, 嗯, v o e u i 呢也加载成功了,我们来把它在我们的五个五个浏览器上面打开, 然后我们到到任务里面把自己的项目进行一个打包,一个办的打包。 然后我们现在的这个项目呢是外部的面三,外部的面三现在这里有一个,然后我们进行打包的时候可能就会把这个删除掉,他会自己把这个删掉。来看一下这个打包需要一个过程,然后这个 c npm instar 这一块呢也执行了,执行了之后呢我们来刷新一下,哦,对,嗯,这个是有错误啊,这个是有错误,他没有找到我们这文件,我们呢需要在桌面上面,嗯,进入到这样的一个文件夹啊,我们 cd 过来, cd 过来 啊, cd 过来之后呢我们进行 n p m 烟磁道进行一下安装,然后呢我们来看一下现在这个, 你看一下这个输出,输出这一块呢也没有,也没有报错,也没有问题。我们,嗯把这个这个项目呢,嗯,就这样子先转着,我们来配置这一块,这块 c n p m e s 二的话它这个安装, 嗯,就是我们现在呢,我们我我们现在先把这这第三步、第四步这些呢先跳过去,我们来进行的 是第六步,先把它安装完,安装完之后呢我们再去这个是我们要把自己的项目放到这个里面进行打包,自己的项目,我们先启动一下它本身的一个项目,本身的这个项目是怎么样的,你先看一下。 嗯,这个下载还是变了哦,已经开始下来,这个 node models 已经出来了,已经出来了,然后这 里边的话,嗯,没有动静 好,这边还是比较慢的。好,我们看一下这个,嗯,这个应该差不多了。好了,我们来看一下下面我们应该执行哪个命令器。嗯,然后 set run set, 然后把它呢启动一下, 启动一下,然后我们就可以看到一个他触发的一个项目,他本身一个触发的项目长得是什么样子? 他已经进行安装了,只是说呢这一块的报错,这一块报错有没有 error, 这个报错现在还,嗯,这个报错现在不用管,因为是用的过中国镜像。嗯 嗯,大家稍微等一下。 嗯,这个也没有, 其实其实这个非常简单,我们只需要把打包好的文件啊,启动自己的项目,这个过了,我们打包好的文件,然后放到我们下载好的那个文件夹里面,放到我们这个 这个里面,这放这个项目里面就可以了。然后放进去之后呢,我们把本本身的这个音带点点 html 呢直接给他删除掉,然后呢进行一个闷点 gs 的一个配置啊,这块修改一下配置, 然后再执行这个命令,然后再把下载过来的,然后我们还需要再下载一个打包的一个包包。下载完了之后呢,第八步我们进行一下配置,然后第九步直接进行打包,打包成 ese 文件就可以了, 其实就是这九步就可以完成这些操作啊。 哦,行,我们这个现在已经进行完成了,已经完成了,我们现在把它触触化。这个项目呢,我们先按一下,嗯,看一下他长什么样子 啊?应该是一个 hello word 这样的一个启动啊。 npm 装一下,然后我们还是回到这里看一下,我们打包好的,如果这个打包慢的话 看一下。哦,这个已经很快了,已经已经快好了,你看我们这里这里进行打包了之后呢,他这块已经出来了已经出来了, 已经出来了一个 hello word, 一个 hello word, 欢迎我们去使用。他粘完一个插件,行,我们就把它关了吧,这个是他本地呢,本地已经处处画好的一个音带点填埋了,我们按 他,我们按照我们自己的这个文档呢来进行一下处理。首先呢我们要把打包好的这个文件放进去,怎么样呢?我们先开始,我们把这个 index 一填完了,先删掉 index, 等下填完了删掉。然后呢在闷点节词里面,闷点节词里面呢我们去改一句话 能进行一下打开。然后呢这里有应该他是有这样一个音带点一添拍的,我们来搜一下啊,现在我们的项目也打包成功了,哎,音带点一添拍的。哦,这样,这个这个呢我们把这一些呢我们复制过来,我们进行一个复制,我们粘到这里粘这里看一下。 好,我们看一下。对,他本来是这个啊,他本来是这个。然后呢我们现在不用了啊,我们把它屏蔽掉,我们把这些屏蔽掉,也就是说我们现在呢我们要放一个 this 目录放进来之后呢就可以了,你现在把它能打包好的一个项目放进来啊, this 我们来进行一下。嗯,再打开,我们把这个目录呢复制进来, 把它 ctrl c 复制一下,然后粘贴到我们当前这个已经。嗯,下载好的这个初始化目录里面,把它放到这个里面去,现在已经放进来。 好,放,放进来我们刷新一下,好,就在这里。我,我们现在配置了,我们把音带删了,然后呢我们把它定义到我们当前这个目录下面去,当前现在或者我们自己的项目里面去,我们来看一下,我们把它其实定义到了这个音带 s t m i 了。 好,这一步也就进行了呢,其实我们从第一步啊开发,然后打包,打包完了之后呢去下载好的把它删掉, index tm 的删, 然后改了 mate d s, 然后这句话也进行了更改,然后这这个 instare 这两句话呢也都执行了,然后呢我们现在再来执行一下这句话,然后再启动一下我们的项目啊,再启动一下,我们再启动一下,来看一下我们打包好的自己的项目长得是什么样。就不是那个 hello word, 因为我们把, 嗯,他这块报的这个 h t m 的呢,没有找到,没有找到这个 h t m 的没有找到,哎,嗯,那我们 那我们就可以把 我们是不是这个文件没有爆穿 再来执行一下, 嗯,行,我们刚才是因为那个文件没有保存啊,那块没有保存,我们现在就可以打开了,我们可以打开自己的这个应用,打开完了之后呢,我们现在, 嗯,就是我们刚才呢犯了一个错误啊,这块这个呢?呃,导入进来之后,我们加了一只这么一个目录的话,他没有保存啊,当时我用这个编辑,他没有保存的话,他是不会生效的。然后呢 我们接下来我们把这个关掉,我们现在要打包成一个,嗯,新的东西,嗯,要打包成一个 esc, 不是雷器动,那么我们就需要执行这一段去安装我们另一个插件, 进行安装之后呢,我们前面呢也加上 c n p m。 嗯,这个安装还是会有 一些时间, 嗯,大家稍微等一下, 然后安装好了之。嗯,之后呢,我们是在下载的目录的 jason 里面去加入我们的这个名两行,加入我们这个名两行,我们来看一下,我们直接现在可以去去加一下 webpack, 点 jason 分配,有点 jason 呢我们,嗯,我们需要加这一句话, 我们来复制一下, 我们把它加了,嗯,刚才把它关了。嗯,这个啊,嗯,加上这一句话, 好,已经安装好了,已经安装好了。我们把那句话夹了之后呢?嗯,这句话呢是我们是现在要打包成一个 window 的啊,三十二尾和六十四尾这样子,它是根据我电脑的一个配置去打包的。 然后呢我们就可以执行当前这句话去生成一个,在我们的这个目录下面, 我们在这个目录下面去生成一个。嗯, windows 的一个 e s e 文件,我们来进行一下执行。好, 嗯,这个就相对来比较快了,我们来刷新一下。嗯,还需要稍微等一下。那第一次打包的话,这个这个打包过程啊,还是相对来说比较慢的,还是比较慢的,需要稍微等一下啊,还是没出来, 嗯,我们来继续回顾一下自己呢,第一步就是下载好这个文件,第二步呢,把自己打包好的文件打包出来,打包出来 diss 啊,然后把文件呢放在下载好的那个我们自己自己的这么一个 文件里面。下载好了之后呢,第第四步呢,把它原本的这个下面的 index t i html 删掉,删掉之后呢有个闷点 gs, 闷点 gs 的话我们进行一个修改,进行一个修改,我们是修改的是这块啊,加了这么一个目录, 因为我们打包好的是直接放进去的,是加了一个目录加进去的,加进去之后呢,第六步的话我们进行一个,嗯,进行了一下 install, 还有一就是一个安装和一个开启一个运行啊, 这个就第七步把下载好的装另一个依赖啊,装这么一个依赖,然后进行打包的是 ese, 然后呢下面呢进进行加了一行配置,加完配置之后呢,我们进行运行了一下进行打包,打包成 ese 五件这样的,我们现在已经打包好了, 打包好了的话我们可以直接,嗯,不在这个,在这个这个下面呢会多一个 app 杠 window 二十三十二位杠一个叉,六十四位这样子,三十二位和六十四位这样的一个文件。把这个文件呢我们直接这样子进行双击打开, 就是我们当前的这个系统了,就是我们当前的这个系统,我们就可以进行一个打开,然后呢我们如果说有一些稍后啊,如果他不想安装的话,我们可以直接把这个这个文件夹发送给我们的客户啊,他就可以直接去打开,这样子 也没有其他的。但是呢如果说大家需要一个安装包,直接就是一个 ese, 然后点击下一步,下一步进行安装的还需要借助另一个插件,然后我们下一节呢去介绍另一个插件,直接把这个文件夹再去打包成为一个 ese, 然后进行发给客户,让客户每一个人都可以安装 可以安装的一个一个软件吧,电脑上面的一个软件,这样子的话会更好一点。这节呢我们就先到这里,好吧?谢谢大家。

好,这个视频呢,我们来说一下 view 项目上线打包的一些优化啊。首先第一种呢,就是禁止生成 map 文件, 我们都知道 vivo 项目他打包的时候呢会生成 wifi 文件,那么它主要呢就是输出一些错误信息,哎,很多情况下咱们用不到这个文件,那就可以禁止掉它,就是在 vivo 点 config, 点 gs 这个文件里面去添加这行代码,就可以进行一个禁止了。 第二种方法呢,就是关掉 prefetch, 它呢是呃,预先加载模块,就是提前获取用户未来可能会访问的内容,那么在首屏呢,会把十几个路由文件都下载下来啊。另外一个就是 prefetch 呢,它不会影响到首页 的加载速度,只是优化子页面,明白吧?那在什么时候去用它呢?就是流量有限制的时候可以使用,比如移动端, 那么那么用户在查看首页的时候并不需要把其他,就是并不看其他页面的时候,我们就可以用到这个禁止 perfect, 那我们可以看一下,可以在 i will config 这个文件里面去呃,删除掉这个 preference 这个插件。 好,第三种呢就是对路由进行揽加载,这个大家应该都很清楚,对吧? 好,那么第四个呢,就是 element ui 这个组建库呢,我们应该是按需加入。咱们来看右边这一个案例啊,是新创建的一个项目,它这个项目里面呢就只下 下载了一个 element ui, 那我们可以看一下它的启动时间呢,是七秒,对吧?另外呢,这里有它的一个资源哎, 有他的一个资源是八兆模块呢,二点八兆依赖县二点七兆,那对于一个八兆的项目来说呢,还是比较大的啊,就是一个新的 video 项目来说,那 看可以看这个依赖像,这里 element u i 呢,它就占了两兆,它是最大的一个依赖像了,那我们就可以通过按需加载,就是我用的,你再加载,我不用的,你不要进行加载, 明白吧?不然的话,我们可以看到他的这个依赖项过于庞大,会影响到咱们页面的这个咱们项目的这个性能。 ok, 同时呢 我们也可以看一看,嗯,分析,哎,这个分析的话不太这个什么,可以看一下这里解析解析模块,对吧? 其实这个页面呢,他是告诉了我们,哎,咱们这个项目呢,他用到的依赖项有哪些?他的资源有多少,他的时间呀?嗯,他的大小啊等等,这里呢有一个排名,大家可以 根据这些呃依赖下占用比较大的给他进行对应的一些优化。第五个呢就是使用 cdn 来加载外部资源,比如说我们的 rotor 啊, xs 呀, 对吧?对他们进行 cdn 的一种形式,那主要就是这样去做啊,比如我们 will config 该怎么去进行 cdn, 然后我们页面该怎么进行引入等等。接下来呢,还有就是 gzp 压缩,就是我们把呃代码呢给进行一下压缩。 好,首先呢我们要去下载这个插件啊,来这个使用完之后呢,我们可以通过右边这,这里有一个 g z, 对吧?这样的话这里咱们就可以看到,哎, 通过 gzip 压缩之后呢,咱们的一个占用率,对吧?资源一点八,模块一点九,依赖项一点八,那 相比之前的八兆是不是少了很多呀?对吧?好,接着呢。是图片压缩,依然是用到一些插插件啊,还有就是代码压缩这里呢。呃,就给大家说这么多方法吧, 希望大家,呃,今后的项目在优化的时候可以进行一个参考。那么当然这个页面呢,主要就是这个依赖项,大家可以去试一试,试着去修改修改。好,那这个视频呢?我们就说到这里。

接下来讲什么问题呢?什么是主教化开发和模块化开发?他是两个概念,两个概念啊,哎,因为这个咱得分开啊。啊?先说这个主教化开发啊,主教化开发,比如说我现在写一个这个 应用,比如说这个系统里面是一个这个页面,然后呢?他有什么呢?有一个海底有个头部,有他头部,然后他还有一个侧边栏,侧边栏是一个菜单啊,菜单呢?咱就叫啊,一个耐还得有一个主体内容,对吧?这主体内容呢就叫 啃趁他那一个应用系统,基本上好多应用性都是这样的,大家大家可能看你们什么学校的一个选课系统啊,或者说那个办公司的欧威系统啊等等,基本都是这个时候啊,上面那个嗨点里面可能会有一些啊,比如说一个登录啊,一个一个用户的一个头像,然后这里有注销菜单, 个人信息等等等等,然后这个菜单呢显那个什么呃基础数据啊,什么各种业务啊等等等等,然后你点击这些菜单的时候,呃,主要的内容会不断的更新,对吧?基本上系统他都是这个思路,是吧?啊?所以说 咱们就用这个思路来给大家讲一下。呃,什么是组件化开发?组件化开发,大家想一下,我现在这个这个这个程序的话有几个组件啊?按刚才人的思路是不是有三个呀?一个是 happy, 一个是 nice, 一个是啃衬他,对吧?好,那咱现在就创建三个组件。那我组件写在哪啊? vivo 的 v you 的程序,大家记得组件我写到康普嫩词,康普嫩词就是组件的意思, 咱写的程序呢,都放到这个康普顿词里啊,那我现在去建三个组件,第一个组件呢就叫嗨点点 beaut, 但是这里有一个问题,就是说组件的名不要和标签的名一样,一样的 话就会包错,所以说这个东西我就不能叫海胆点比我了啊,咱可以换一个,比如说咱叫麦嗨点点比我,对吧?我加我所有的主页,加一个麦,加一个麦就好了。麦嗨点,那他麦嗨点有什么呢?咱就简单写,就写一个这个 logo, 有个 logo, 然后 下面还有一个这个 a 圈啊,用户信息啊,海底里面就就这两个,写一个 spa 吧,写两个 spa 吧, spa 省的换行的吧。啊? logo 和这个 spa 用户信息 好,然后嗨的有了之后,我再建一个组件。刚才咱们说这个图啊,咱是不是要建三个组件,还有一对耐磨和 ctrl, 对吧?那创建耐,那这个是菜单的话呢,咱参不累他,咱就写一个有点菜单样,是吧?啊?比如说咱,咱比较喜欢起一个 水果立表这个菜单,那就香蕉、苹果、鸭梨。如果说大家真正做系统的时候,这个菜单可能是一些什么跳转的一些页面啊,比如说技术数据啊,或者说权限管理啊,用户管理啊,这这类的啊。然后还有一个内容,内容就是 maccnt 点 biu, 那这里写一个 h 一,就写一个 helloword, 再写一个别的也行, 写一下吧,这个是应用的。呃,主体部分好,那组件都写完了啊,其实大家以后开发组件化开发也是啊,就是你把这个结构想好了之后,然后你会新建一堆组件啊,然后每个组件的功能都写完,然后把这个组件啪一拼,拼接成一个系统就 ok 了。 好,那然后咱接着写啊,那刚才咱是不是根组件是这个 vivo 啊?那我是不是说直组件都要放到根组件里啊?那这个写的话,咱就写一个,用这个根组件 去搭一个框架。搭个什么框架呢?就是咱刚才写这个嗨的左侧菜单, nice, 中间啃衬他搭一个这个框架,那咱就写一个 div, 那这个呢?克拉斯等于 开点,第二个呢?咱就叫 canting, 这个是一个容器啊,就是说 catty 是什么呢?是这个第二层这个容器,这叫 ctrlant, 这里面有两个, 一个叫内务,还有一个呢,叫啃蹭蹭。好,那这个结构有了,结构有了,然后咱们现在把这个整体的页面功能给他实现了啊,分区给他分。好,那咱就需要在样式里写了,对吧?样式里的话,那就是点嗨歌,咱们给他加一个高度啊,比如说这个高度是八十 像素,然后给个边框啊, epx, sorry 的 red, 随便给个颜色啊。好,他洗完之后,咱看一下现在的 程序啊,来看是不是有一个红色的边框呢?看到了吧,但是这红色边框他他他是一个,上面一个距离,对吧?这个距离是默认的一个刚才的样式啊,在这啊,音带个字 css 啊,这是创建项目,头是自带的,咱把它干掉,不要他了,保存啊,干掉之后,然后看一下现在的英雄程序,哎,回来了,到顶了,这是头部,对吧?头部有了之后,那左侧菜单呢?第二层呢?是点天津,点天津点我设一个 flax 布局, supreme, flax 让他横向排列嘛,咱就不用浮动了,对吧?然后这个 ctrl 那里面呢?看他这 ctrl 那里面,左面有个奈务,右面有个跟衬他, 咱就写写一下他俩的样式啊,那就是点看清点,然后点左边的 nice, 他是 flax, 咱给个一,然后包对 epx 手里的给一个蓝色啊,然后下面这个长青柠里面的这个跟衬的内容,咱给他 flax, 给一个五啊,让他宽一点,然后这个包点一 px sorry 的给一个呃, carry 吧。绿色咱给这个 nice, 给一个八百像素。但如果真做系统的时候,你这个高度你得适应屏幕啊,或者是按照甲方的要求来做啊,咱不能随便给这个尺寸,对吧?那好,那看一下结构 是有了,对吧?上面红色的嗨点左侧的奈姆,右侧的一个呃,这个,这个啃衬他,对吧?然后咱说主间化开发是不是就把主间拼到一起啊?啊?好,那咱现在就需要把主间都引到根主间里面把直主间都引到根主间里面,那我们这里就需要 新铺的先引这个 mary happy tom 哪呢?这个斜杠蹭蹭康城康普能吃 啊?斜杠他这里有一个麦嗨点,这咱刚才创建的,对吧?点不有,我粘贴一下。然后第二个呢?叫什么?第二叫麦耐,第三个呢?叫麦 肯称啊。需要先注册主件,对吧?注册主件,那我已经注册一个 hellowor 的,但是这个 helloword 咱不注册也行,对吧?咱也用不上他了啊。然后咱需要注册这个买嗨的,然后,然后注册这个 man, 然后注册这个 maccnt, 然后我现在需要把这三个组件把它放到上面的这个内容里面,对吧?啊?那咱刚说嗨点嗨点里面我放的就是嗨点这个组件 内容了,然后下面呢是这个是 nice, 对吧?菜单对吧?水果鸭梨水果列表对吧?啊?那 man, 然后下面的这个是 ctrl, 那就是 m a ctrl, 这个是 m, 对吧?哈哈,好,那咱给他改过来啊。呃,引入的这个康不能是,这个是写成 n 了, mm 好保存,然后再看一下效果刷新 好了,那这样的话,咱就三个组件就把它拼到这个应用里了,对吧?那首先是 logo 信息,用户信息在海底里,然后左边是一个菜单,右边一个主题内容, 那这个其实就是组件化的开发,组件化的开发呢,咱就可以通过这种创建组件的方式,咱建三个组件,对吧?然后把这些组件呢,最后拼到一起,拼成一个应用啊,这就是组件化开发的一个基本概念。当然如果说咱真正开营 开发应用的时候,会有一些问题,比如说某些组件呢,会有一些船只啊,会设置陆游啊等等等等这些获取数据啊,这些东西。但是好处是什么呢?就是如果出现问题了,比如说现在,你说说,哎,中间内容 helloword 出现问题了,那咱们直接就定位啊,我直接改这个麦啃衬他就可以了。 这这就两行代码啊,比如 hellowor 的,我给他改了,改成 hello vivo 了,就这两行代码保存,然后整个系统再看,哎, hello vivo 就变了,这样的话咱就成功的把功能给他拆分开了 啊,那哪些组件有问题就改哪,而不是说像以前的话,咱可能套模板呢,写了一堆贴毛啊,这个页面写了三百行一贴毛,或者说两千行一贴毛,然后还有一堆 gs, 需要去一个一个找问题,那个太难受了。但如果说组件化的开发的话,你可以把整个应用拆分成很小的组件,那 出问题就写哪,哪出问题就改哪,这样的话就开发效率就高了,这就是组件化开发的概概念,刚才咱讲的呢?是组件化开发,那什么是 模块化开发了?刚才咱是不是说两个问题啊,对吧?一个是组件化开发,一个是模块化开发啊。什么是模块化开发呢?模块化要咱举个简单的例子啊,就比如说如果我想实现一个功能啊,这个功能 他可能不需要去创建主页,比如说我现在这个功能是啥呢?我就想计算两个数的加和,那这个不需要页面,对吧?他是一个功能,那这个功能的话我怎么写啊?我可以在这,比如 s 二 c, 咱所有的声音都写到 s 二 c 里。 sst 里面,我新建一个梦露啊,这个随便起名啊,随便随便起名,比如说我就叫 utuse, 就一个工具,一个工具的一个梦露,那这里呢?我就 可以创建很多个。呃,工具工具的话,我们可以创建成一个 gs 文件,比如说叫 sum 点 js, 然后这个 sum 的 gs 是一个函数,翻个身,然后 sum 函数 等于什么呢?等于这个里衬十加上十加上二十啊,然后我现在写的是一个功能模块,对吧?叫 sum bs 啊,我需要把这个功能模块给他暴露出去。 暴露属于怎么暴露呢?呃, e s 六的模块化语法啊,就是 expoxd fox 啊,暴露这个 sum。 那这样的话,我在 康不能自理的啃蹭的啃蹭的,大家看啊,这是不是?呃,这是一个组件,对吧?主体部分啊,在这了,主体这部分啊,这个组件我希望在这啊。 h 一输出一个结果。 输出一个什么结果呢?输出刚才咱们模块计算的结果。好,那这个咱就写了 surprax boxd box, 那咱就需要自己写一个模块啊,那咱咱自己写这个模块的话,咱先咱咱现在自己写这个模块,我现在需要,需要实现什么功能呢?需要让这个 h 一里面显示啊, 显示刚才咱们模块计算出来这个结果,结果就三十,对吧?显示这个三十啊,那这个怎么写啊?我需要引入那个模块音 pose, 引入这个 sum flom 从哪引入呢?从这个 utus 啊,然后它里面有一个 sum 点 ts。 好,那拿到这个模块之后啊,然后呢?我现在写一个计算属性, ctrl d 的,那计算属性我可以写一个单本,直接在这就可以绑单本了,对吧?但是计算属性他是一个函数,是吧?我需要通 我计算得到这个值啊,那这个值怎么得到呢? reaty 谁呢? retexum 雕用括号。那我其实就是调用了这个模块,得到了这个模块计算的结果,然后把它放到单模上,然后我们看一下效果来,三十出来了,这个就是模块化化的一些方式啊, 就是说我可以单独定一个功能模块,这个功能模块可能是,呃,一步请求数据啊,可能是完成某些功能啊,可能是做了某些事啊,咱不管这个事是什么,咱只要知道这个模块做了一些事, 他跟这个呃页面可能是没关系的,他就是做了一件事,然后我们的组件呢,就可以去调用这个模块,然后引入这个模块去做一些事啊,去完成这个工作,这就是模块化开发的概念。而且模块化的话他会用到这个 enpout 和 expot, 这是 es 二零一五提供的 模块化的语法啊,所以说我们通过这种模块化的方式就可以把程序拆分成不同的。呃,功能啊,有的时候大家为什么混呢?就是说, 哎,你这个主件化开发也是拆分,模块化开发也是拆分,那他有什么区别呢?啊?这个简单介绍一下,就是说主间化,他其实说的拆分还是页面层面的拆分啊?就比如说这整体的页面我拆成了三个主件啊,那组件化开发其实就是拆页面,那模块化开发呢?是拆功能啊, 拆功能我可能一个主件我可能有多个模块,而一个模块呢,我也可能用到了多个主件之上,所以说这是他们之间的关系,这就是主件化开发和模块化开发,模块化开发的一个基本概念了。

假如说咱现在要做一个系统,做一个什么样的系统呢?比如说这里有一个登录啊,啊,输入用户名密码,一点登录,然后就会跳转到一个系统里面了,这就一个系统啊,然后这个系统大家可以看到啊,他这个啊上面呢有一些菜单,用画图给他打开,大家看啊, 这管理系统进来之后,上面呢他会有一些菜单啊,比如说这个,呃,资料审核呀,发票啊等等等等之类的啊。然后左侧呢也有一些菜单,然后右侧的主体内容呢,是一个 呃显示正常系统功能的一个页面啊,那点击这些列表或者翻页的话,都都能实现一个跳转啊,那咱们如果说想实现一个这种系统的话,肯定是需要这种 页面跳转的功能了,但是咱之前讲的那个 vivo 呢,单文件组件的 vivo 呢?他只有一个页面,对吧?不能随便跳转呢?那今天呢咱们讲什么?讲这个 vivoutut 就可以实现 vivo 应用 页面跳转了啊?那比如他怎么用?咱们从头开始新建一个项目再说啊,那我这里先打开一个今天的内容,八月三号啊,那首先呢,我在这打开一个密码工具, 打开面条工具啊,那咱们现在要做什么呢?要创建一个 vipo 项目,对吧?那咱上一次讲了,讲了 npm, 然后 innite, 然后是 vt, 用 vt 创建一个应用 vt, 那这个呢,就叫如车下划线呆萌回车,用 vt 创建一个如特呆萌的一个 vivo 的箱, 那这个创建创建速度应该还是挺快的吧,咱看一下效果啊,呃,应该是建完了,对吧?建完了,然后我用 wifi 之后把这个项目打开,把这个新建的项目给他打开, 在这个 oppost love you 八月三号啊这个项目, 那好,这项目建完之后啊目结构大家应该很熟悉吧? sr c 咱主要的组件都写到这里了,对吧?这还有个拍开点这身,他依赖什么呢?啊?依赖这个 beau, 我需要把这个 beau 给他下下来啊,然后,呃,他这里还有个 beat 工具,对吧?这就是 beat 啊,然后我现在如果想下这个 beau 的话,需要 cd 先进到这个卢特呆萌里面啊,然后 c n p m 因斯道安装依赖,安装完依赖之后我们就可以启动这个项目啊。 好,那他下完了,下完了,然后我们启动这个项目 npm rend 第一位,这个呢,就是用 b 启动一个 项目,启动完成之后咱们应该就可以在这个呃三千端口里面访问这个项目了, 他还在还在启动,是吧?哎,启动好了啊,默认的话,咱创建一个默认的六三项目的话,他是有一个计数器,对吧?计数器啊,当然这个功能咱不要啊,咱要的是什么功能啊?咱要的是一个刚才说的这个啊,对吧?一个这种系统,对吧?可以实现页面跳转呢?可以可以,有登录啊,这个登录功能啊,当然 咱们把这个系统给他简化一下。简化到什么程度呢?把样式都给他去掉,大家懂吗?现在这个系统是一个呃 登录然后跳转到系统里面呢,是这样可以实现一个内容管理啊,菜单啊,可以切换呢,可以实现一个这个功能。那咱们把这些样式全都给他去掉啊,咱就给他搞一个最简单的一个。 呃,最简单的一个效果什么样呢?咱就实现一个这个效果。大家看啊,现在是用户名,比如说我用户名输个一二三,密码输个一二三点登录啊,他是用户名或密码错误提示了啊,那如果说我输正确的呢?他的命啊,然后密码是一二三四五六,点击之后就可以进到系统里面了, 你再看啊,是不是上面有一排菜单,然后这有一个内容列表,然后点击列表的时候可以切换到不同的页面。切换到不同的页面啊,然后点击注销的话,还可以进到登录页,咱实现一个这个功能,懂吗? 那那把这个功能实现之后,咱如果说会一些样式啊,加一些效果的话,就可以实现刚才那种系统的功能了啊,这看完之后,咱现在啊需要下载 vivoutut 啊,为什么下载 vivoutut 呢?因为咱创建这个项目什么没有啊?就只有一个 vivo 这个项目就只有一个标。那咱需要实现页面跳转的话,需要需要下载一个 vivoutut。 怎么下载 vivoutut 呢?咱们再打开命令长工具啊,我们先把这个项目给他关闭,现在是启动状态啊, 完毕啊,然后呃 c n p m 因死照啊,刚刚 siri 添加一个依赖,然后下载什么呢?下载 vivo gute。 但是咱用的是 vivo 三对吧? vivo 三的话他用的 vivo uti 版本是四版本啊,所以说我加一个艾特四,这样的话就可以下。呃 vivoutur 的一个四版本啊, 下完之后咱现在再启动这个项目,启动这个项目 npm ren。 呃,第一杯 启动那个项目啊?呃,他这个是这样的, npm 四十五也好啊, npm 第一位也好,就从哪看呢?大家看,是这啊,这里是不是拍开点这一身里是不是有 一个 surpe 的一个这个属性的吧,这个属性里面定义的第一位啊,是调用 mit 命令,那就说明我执行第一位的话他就执行 mit, 执行 vip 就是启动项目啊,那比如说,哎,有小伙伴说,哎,我就喜欢用 npm rond sorry, 那怎么办呢?咱给他改成 sorry 就好了,对吧? npmry soro, 然后把服务器给关了 啊,那这回我再启动服务器呢, npm 四五对吧,这是可以设置的,你是第一位也好,四二五也好,咱咱想用什么用什么啊,都很方便啊。对的,启动方式可以定义啊,那现在 mm 四二五又起来了啊,然后咱还是这个三千转口啊。 好,那现在是咱们做了一些准备工作都做好了,咱们现在就要开始写这个。呃功能了,写功能的话咱先实现一个最简单的功能。什么功能呢?就是说我现在打开这个,我把这个 helloword 干掉, 这玩意没有用了啊,好了,我得给他去掉。去掉啊,实现一个什么功能呢?现在就是有一个菜单啊,这个菜单叫首页啊,首页后面有一个博客啊,然后咱看一下 首页和博客,对吧。当我点击首页的时候呢,下方他会显示首页的内容,当我点击博客的时候呢,下方会显示博客的内容, 然后我先把这个样式给他去掉再去掉啊, 那我怎么实现刚才说这个内容啊,点击首页啊,对了啊,点击首页放大点啊,点击首页显示首页内容,点击博客,显示博客的内容,那我就需要创建两个页面,创建两个组件,一个叫首页,一个叫博客,对吧?啊,那第一个呢?在康复单词里, 我先把这个 hellower 给他删掉。啊,没有用了,删掉他,然后在康复的字里,我创建一个首页,叫 home 点 book, 然后我再创建一个博客,叫 blog 点 blue。 啊,咱现在的目的是什么呢?就是实现简单的页面切换,对吧? 实际简单的页面切换的话,我就不需要关注它里面有太多的东西了,我就直接写一个 h 一标签就好了。 h 一,这个是博客啊,然后这个首页呢? h 一有个首页,对吧?啊, 那我如何实现页面切换呢?这个就需要 vivout 提供的一些功能了。 vivout 提供了一个什么呢?就是提供了两个标签啊,就比如正常咱如果写的话,可能写个 a 标签,对吧? a 标签,然后这是首页,首页,然后这块 跳转到等了跳转到后米,对吧?啊,然后下面有一个 a 标签,是博客,对吧?如果是说咱们以前不用六的话,那这个跳转到 blog, 对吧? 然后中间有个斜杠分割一下啊,他是这样的,对吧?首页博客,但是咱现在用六了,六的话,我们用 urout 提供的这个页面跳转就不用那个 a 标签了。 uroututuurututigo 的呢?叫什么标签呢?叫这个啊, utile mank, 如特令,可相当于就是这个 a 标签的意思啊,就跳转的意思啊,但是他还是有一些区别的,一会咱再说区别,那这个呢?跳转到首页,然后,哎,如特令可啊, 这个跳转到如,他另一个跳转到首页,然后呢?如如他另一个 不用那个 hr e f 的,用的是兔,用的是兔啊,兔就是跳转到哪?跳转到后面啊,然后后面呢?我夹一个竖杠,然后这边还有一个轮圈 mink, 那下面那个呢?就是跳转到博客页了,对吧?啊?然后这个是兔, 等于斜杠 blog 调整到博客页啊,那我们看一下现在的效果啊,这是不是一个首页啊?一个博客啊,对吧?啊?那下面首页和博客下面的话,就是切换页面的一个呃位置了。 那我需要用一个标签给他占位啊。用什么占位呢?用这个如天六,用如天六给他占位。也就是说我切换这个 home, 切换那个 blog 的时候,他的显示的东 你放在哪啊?显示的主件放在哪啊?放在这个如特六里面,他是一个这个思路啊。好呢,页面布局咱已经写完了,我现在点击的时候下面有切换啊,但是功能还没写呢,咱现在点击他是切换不了了,怎么点击让他能切换呢?咱们需要配置一下这个路由啊。那怎么配置路由呢?这么写啊? 在 src 里面我直接创建一个如特点 gs 啊,因为咱们刚才是下载了这个如特 biu, 咱们还没有引进来呢,对吧?所以我现在需要引入这个。呃,引入这个如特啊,音炮的啊, 可以先控制从哪引呢? fom fom 这个如铁 fm, 这个没有如铁啊,引进来一个什么呢?他有一个方法叫 ctrl 如铁 啊,这一个结构。结构,我可以拿到一个可瑞的 rut。 可瑞的 ut 的工作是干什么呢?就是创建一个呃,陆游的功能啊,这是可瑞的 utut 啊。好,那创建一个陆游之后,我怎么去创建陆游呢?定一个陆游叫 如此,等于用咱们引进的一个方法,可瑞特如此去创建一个陆游。创建一个陆游,然后创建完成之后呢? cos 的写错了, sunit 啊,创建一个陆游之后呢?然后我们可以把这个陆游给他暴暴露出去啊, ex pot expotd box 啊,撸铁啊,但是这个撸铁怎么配置?我需要在这里配置。 怎么配置?咱一会再配置。我先给他暴露出去这个如天的配置呢,咱一会再写。咱现在要干什么呢?就说 我需要让 w 的这个应用把这个如特给他引进来,对吧?那咱再回到刚才的这个,呃, manel gs 入口是 gs 文件,大家看入口 gs 文件,这个是不是创建了一个 w 的应用啊?然后挂载,对吧?那我需要用这个 w 的应用来使用,刚才咱们新建的没有如帖是一个这个思路。那咱们就给他先改写一下 cost f f 等于这个 w 的应用啊,然后 apple 挂载。我现在代码没改啊,一模一样,跟刚才是跟刚才是一样,我只不过是加了一个变量 app, 对吧?啊,然后呢,我先引入刚才咱们写的那个 呃,如此 gs 文件啊,他暴露了一个叫如此的一个呃接口,然后 fom fom 哪个文件呢?如此 cs 啊,这个乳铁就是咱刚才暴露出来的这个乳铁了啊,那我拿到这个暴露出来的乳铁的话,我用 apple 点柚子方法 就可以直接使用咱们暴露出来这个 vout 了,这样的话 u 的应用就可以用这个路由了啊,那接下来呢?我们的工作就是去, 呃,去设置这个路由。设置这个路由,把这个路由设置成什么样呢?设置成,刚才咱们写这个呃,可以跳转到首页,可以跳转到博客的一个功能了啊。好,那咱们现在开始正式写设置了啊,刚才写了一堆都是引入,对吧?刚才写了一堆都是引入啊,现在写设置了。 设置的话,首先这个可谓是如题,他需要传两个参数,第一个参数什么呢?叫嘿 siri。 嘿 siri 是一个陆游的模式啊。陆游的模式,这个陆游的模式呢? 是呃,有什么区别呢?一会咱写,一会咱再再给大家说,大家只要知道的话,大家只要知道现在我引入这个陆游的模式是一个呃哈西模式就好了啊。需要引入这个可以的 word, 这个是干什么用的?一会咱启动的时候再跟大家说啊。这个大家知道,这么写就 ok 了。然后下面有一个很重要的就是这个路子,这个才是真正的配置路由, 这个才是真正的配置陆游。那我我的目的是什么呢?我想点博客跳博客,点首页,跳首页,对吧?啊?那我怎么配置呢?首先这个 入词里面入词是一个数组啊,数组里面我可以写一个对象,对象可以写个陆游 pass 路径。路径是哪呢?跳转到首页,首页就是一个斜杠啊,首页是一个斜杠,然后, 呃,跳转到哪个组件?跳转到哪个组件呢?跳转到首页的这个组件,对吧?康不是等于 home 这个组件,但是 home 主键我得引进来才能用,对吧?所以说我叫引入 home 啊,你们 pose hom, 这个康不能吃里面的这个 home 主键, home 主键引完了之后,咱再把这个 blog 给引进来啊, 不落个引进来,不落个引进来,然后呢,我再写一个路径啊,再写个路径啊, pass, 等于我只要跳转到斜杠,不落个的话 啊,我就渲染哪个页面啊,渲染哪个组件啊? blog 这个组件。好,那这样咱就写完了, 洗完之后,咱看一下鞋带的效果啊,路由也配置完了,路由已引入了啊,然后呢,咱看一下鞋带的效果, f 十二, 呃,然后咱现在是有了一个是首页,一个是博客页啊,然后咱现在想实现一个跳转啊, 啊,这里啊,真的是引入,引入入群,对吧?引入入群,我写个引入 app 了,不好意思啊,引入入圈, app 点右,这样引入入群啊, 引入入群,然后咱看一下,哎,这个就好了啊,入群引进来就可以切换了,然后这个首页啊,博客首页博客啊,就可以实现这个页面的来回切换了。每当我们点击这个时候,大家看上面那个路径啊, 路径现在是一个斜杠啊,警号斜杠啊,然后点博客,那就是警号斜杠 blog 啊,那他就会切换到博客的这个页了啊,就是一个这个切换的功能。

哈喽,各位观众朋友们大家好,今天我们来学习一 v 三的第二十六章,深入 v 港 model, ok, 那 v 港 model 呢,它其实是微微的内置指令,它支持这个永普特, cirect radio 以及各种表单元素,甚至呢自定义组建呢,也是可以去支持这个 v 港 model。 ok, 那 v 杠猫等它在 v 三里面呢,是属于这个破坏性更新的。其次呢,它就是一个语法堂,呃,是通过这个 propers 和伊米特去组合而成的。 我们已经之前讲过这个 props, 它是单项数据柳,只允许这个负极呢去传着数据给子集,不允许子集呢去修改这个负极数据。所以说唯一也考虑到这个问题的,它直接把这两个合起来做成了一个 wegame mode。 ok, 我们来看一下它对比 v v 二的一个变化。首先是这个 props, 这个默认值,在 v v 二里边,它叫歪柳, v u 三呢,它叫这个猫头歪柳。 然后这个事件呢, v v 二默认叫引注册,在 v v 三里边,它是通过 r d 称冒号毛的 w 这种方式是 v v r 里边哦 sink 的一个写法,但是 v 三呢,已经把它占用了,所以说哦信可在 v v 三里边直接就废掉了, ok, 其次它是支持的这个多 v 杠猫的模式, 甚至呢可以支持我们这个自定义修饰服这个 model fell, ok, 我们来写一下今天这个例子,然后我是在这个 app 的 vivo 呢去引入一下我们这个资助键,我们今天来演示如何去给一个自定义组件去绑定一个 vga model, ok, 因为我们那些表单元素呢,之前已经讲过了。 然后呢,我是在这写了一个标题,写了一个按钮,然后呢引入了一下我们这个子组键,就是这个 vivo 猫头点儿 vok, 在这个子组键里边呢,也是去创建一些元素,有这个按钮哇,其实就是模仿一个带 log, 看一下页面上的效果啊,大概就是长这样,这是负极组建,然后呢这个带这个弹框呢,就是一个子组建。 ok, 就是我们希望点击这个关闭的时候呢,可以去控制这个子组建的一个显示与隐藏, 然后词组间点击关闭呢,我们可以把这个数据的回传给这个负极,并且呢把它给关掉,就是形成这样双向绑定的一个模式。 ok, 我们来写一下今天这个代码,那首先我们先给他绑定一个 wegan model, ok, 这个字母叫一瘦, 然后我们通过 r e f 去给他定一下这个变量为一的寿。 r e f 啊,由于他是一个开关,所以说我们直接给他定成一个 布尔值就可以了,那默认的话我们先让他展示,对,先让他能看见,同时我们把这个数据呢给他呈现到这个页面上面,给他显示也能看见这个数据的变化。 ok, 啊,这样的话我们就可以这个自定义组建呢去绑定一个非扛猫头。但是这个自定义组建呢,如何去接收我们传过来这样一个值呢? ok, 其实呢他通过抵饭 props 就可以去收到,通过这个,然后呢我们还是使用这种发型自面料模式去给他做一个接收。 ok, 我们刚才说过在维玉三里边他默认值呢叫这个猫的歪柳,在维玉二呢叫这个歪柳,我们使用的是维玉三,所以说是要使用这个猫的歪柳这个名字,然后呢它是一个布尔植, ok, 然后我们来输出一下这个字,直接给他输出到页面上,那他应该输出的是一个处,因为默认给他传进来就是一个处。 ok, 我们来发现一下页面,哎,已经是传过来了,所以说我们可以用这个词来控制我们这个弹框的显示和隐藏,给他绑定一个微杠 e, ok, 好的,然后呢我们再给这个 aps vivo 呢把这个开关的给他加一个事件来切换这个子组件的显示和隐藏,就是控制这个一瘦的值, ok, 给他去取一个返就可以了。 好,咱们来看一下效果,点击开关来设置为 boss, 并且呢我们这个自然弹光呢也是关闭了, ok, 这样切换是没有问题的,但是现在我们要实现的是点击这个关闭, 把这个副组件这个数据呢给它改掉,并且呢把这个资组件把弹框给它给关掉。 ok, 这时我们就需要配合使用这个底范 dmes 去给他做一个组合,通过这个, ok, 然后我们讲过他是通过 updates 冒号,这是一个固定语法,然后呢后面跟上我们这个名就可以了, ok, 这样子行,然后我们来接受一个 emails, 然后我们给这个关闭呢来一个事件为 click we close, 好的,我们来触发一下这个事件,就是这个 updates 猫头歪柳,然后我们点击的时候呢给它置为一个 poss, 就把这个东西呢给它关掉, ok, 这样的话就实现了这个数据的双向流动,我们来看一下它的变化。 好,咱们先刷新一下点击开关, ok, 关掉,没问题,现在呢是副组件控制没有问题,然后呢我们自组键点击关闭, ok, 这个弹框呢关闭了,并且呢把副组件传过来直呢也是修改掉的,哎,也是没有问题的。 ok, 这样的话就是一个最简单的一个 v 杠猫的的一个用法, ok, 我们来演示第二个多 v 杠猫的用法, ok, 在 v 三里边呢,他支持绑定多个肥港猫头,比如说我们来绑定一个 tax 的歪领, ok, 然后我们给他一个词叫什么 tax 的吧,我们来声明一下这个变量 啊,还是使用 r e f 来个 string 默认值叫小满吧。 ok, 我们把这个值呢也给传到这个子组建里边来,那他接收呢?他接收的话是通过他通过 v 杠猫的冒号后面这个名字呢去给他做一个接收, ok, 我们把它复制一下,在 v 杠猫兜里边去接收一下就好了, ok, 然后他是一个 string, 然后呢我们把这个值呢付给我们这个音铺,就是这个内容,去通过冒号 y 六去给他做一个绑定, ok, 这样子就绑定上我们这个 taxy 六,这个值呢就是一个小买卖,来看一下刷新, ok, 那小满呢就已经过来了,然后我们把这个值呢在副组件呢也给他显示一下吧,我来验证他们是双向的, ok, 那个 dna 叫 tex, ok, 也是没有问题,但是我们现在需要做的就是这个子组建呢,去改变这个值的时候去同步这个副组建, ok, 还同样还是使用那个英米特去给他做一个绑定, ok, 然后呢我们给他来个事件叫 input 吧,叫称职, ok, 我们刚才讲过这个,这个固定学法呢,还是一样的,对,通过这个啊,不对,陈冒号,后面呢,把这个名给他跟上,哎,其实也是非常简单。 ok, 那这样子就可以了,然后我们来接收一下这个疑问题,然后他的类型就是疑问题获取一下这个 torquey, 就当天这个元素啊, 就等于一点 target, ok, 发现他推断的是一个疑问的 target, 疑问的 target 呢,是没有办法去读这个 y 六的,所以说我们给他来一个状元,把它推断成一个 html html 引扑特,引扑特 amit, okay, 这时候我们就可以读到这个 target 点歪柳了。点歪柳, ok, 我们把这个歪柳呢做一个回传就可以了,使用 emit 是这个 tax 的歪溜,然后呢,把这个头给的歪溜呢去给他做一个回传, ok, 此时呢,数据呢,就已经变成这个双向流动的,其实很多那些第三方的组建他也是这么 碰撞的,比如说我们常见的按着门 ui, 按照点赞的,都是使用这种方式去做一个 vivo mode。 ok, 我们来看一下 啊,比如说我数个一二三,哎,数据呢,已经同步上去了,哎,也是没有问题的。 ok, 那这也是他的一个多 v 杠猫的的一个用法。 ok, 然后呢,我们再来介绍一下他的,呃,他的自定义修饰符啊,那么之前讲过他有些内置的,比如说什么 trim 是吧,男版和什么 lazy 啊,一些他内置的,现在呢,我由于演员宣布去自定义了,比如说我们叫意思 et 啊,这懂得都懂啊。 ok, 然后呢,我们在这个猫的歪柳如何去接收这个东西呢?它其实是有一个规范的,就是我们使用这个之前定好这个 vivo 猫头的名字,就是我们之前定的是这个太子的歪柳,后面的跟上 他这个 model files, 那后面这一段这个名字呢是固定的,前面这一段呢只要跟上这个 vigo model 冒号后面这个用法就可以了。你如果是使用这个默认值的话,你就是这个 毛斗毛的 fails, 对,我们刚才使用的是这个自定义那个毛的,所以说就是 tax 的歪溜毛的 fails。 哎,这样子使用就可以了啊,他可以传,他可以不传,所以说我们这加一个问号,把他呢变成这种可选的。 ok, 我们刚才呢在里边接收一个什么 is bt, ok, 然后他返回的是一个布尔直。 好的,就是有这个东西的时候你去怎么操作,还有没有这个东西的时候你再去怎么操作去做一个判断。 ok, 我们先来接受一下这个东西,我们来一个定一个 props 吧。 ok, 然后我们就在这来给他写一下吧。啊,比如说有这个东西 啊,泰特的 models, 然后他下面这个印子 bt 啊,就怎么怎么做,如果没有的话又怎么怎么做,如果有的话我们就在后面加两个变态吧。 ok, 如果没有的话我们就正常返回来给大家做一个例子。好的,我们来看一下页面效果,我们刷新一下,点击一哎,后面呢把这个变态这两个字呢已经是加上了, 也是没有问题的,这个的话就是他的一个自定义修饰符。 ok, 那以上的话就是一个所有的微钢膜的一个用法,然后呢我们来讲一下他的圆码。 ok, 我们来看一下这个微猫斗的一个圆码,它是在这个状态道目下面这个 src directt, 下面这个微猫斗的 ts, ok, 它其实呢就是一个自定义指令,大家如果对指令不熟悉的话,可以去看一下,下一张,下一张我已经讲过了,然后你再回来看这个也是可以的, ok, 那么先来看一下他这个 初始化复制,他是在这个 monty 他里边去做这个初始化复制,就是通过这个 el 去复制一个歪柳, ok, 现在的话只是一个单向的数据流动,然后我们再看这个 cry, teacher, crati 等,它接受三个参数,第一个是易要盗墓见对象,第二个的话是这个邦定对象,这三个的话是一个 v 六的, ok, 然后我们再看一下这个爱的疑问他,你是哪是给这个 el 去做一个绑定的一个事件,然后呢这个 lazy, 这个 lazy 呢就是它内置的一个修饰符, lazy, trip, 还有这个 number 一共是三个,它内置的, ok, 如果 lazy 为处的话,它就触发这个称职事件, 那称职时间的话,只有只改变且鼠标离开焦点的时候呢,才会去做一个触发,而 imp 的事件呢则是会一直触发,所以说通过这个东西你可以给他做一个惰性, ok, 然后呢并且判断一下这个 tree, 如果有这个 tree 的话,就手动调用一下这个 tree, 去除这个左右空格,如果是这个传这个 number 的话,就可以进行这个 tonight 的一个转换, ok, 然后去调用这个翻译函数, ok, 然后呢在下面又有一个判断,如果触发的是称职时间,并且设置这个 trim 啊,也是会去掉这个确定方法的, ok, 然后在下面这个 lazy 呢,有一个特殊处理,就是我们这个中文输入法的时候呢,比如说我们这个输完一个东西,我来个 asd 这样子, 哎,我现在在说东西,但是我没有明确我要选哪个字,这时候呢也不会去触发我们这个引库存,当我们这个点击完了之后呢,才会去触发这个一步的事件,所以说他针对这个中文输入法又做了这个特殊处理,通过监听卡姆杰森斯尔和卡姆杰森,嗯,等, ok, 然后我们再来看这个比佛, 啊不对,他一个更新,如果如果是蕾蕾的话,就直接给他 reap 掉。还有这个 tree, 如果已经做过这个 tree 的话也就直接 reap, 如果这个 number 已经做过 to number 的话也就直接 read, ok, 如果新值和旧值不一样的话才会去做一个更新, ok, 这个的话就是一个他是他完整的一个微猫的一个圆码,但是这个微猫的他配合这个伊米特去做一个更新。我们再来看一下这个 伊米特,一个圆码, ok, ok, 那么再来看一下这个伊米特一个圆码,他是在这个装 time call 下面这个扛 pot 呢,伊米特里边, ok, 他先夺取了当前实力的 propers 一个对象, ok, 夺取完之后呢,又获取一下这个疑问的,也就是我们传过来这个事件, 就是这个阿巴蒂德这个猫的歪柳就是这个东西,然后他就去做了一个判断,通过这个 starvis 去判断事 啊不对的冒号开头的,如果是的话,他就给你去截掉,也就是获取后面这个毛的歪柳, 对,其实就是后获取后面这一段获取完成之后呢获取一下这个修饰符,这个 number 和 tree 就是他在回传的时候呢也会去给你做这个处理。 就是我们这比如说传染参数啊,你之前有没有绑定这个 tri, 他在回传的时候也会给你进行一个过过滤,所以说他考虑的还是很周到的。 ok, 这的话就是一个他对修饰服的一个应用。然后我们再来看下面,在下面定的是一个憨多的内 在韩德罗,内部呢去调用这个兔韩德罗 k, 其实呢就是加了一个昂,对应我们这个世界名称可以看一下,对,就是在这加了一个昂,然后呢去执行这个 covice stink island 里去执行我们对应的一个回调函数。 ok, 以上的话就是他所有的一个圆码。

各位小伙伴,欢迎来到六三通关系列第四章节,我们来讲解一下 two r e f s, 来彻底理解一下我们的 two r e f s。 这个 two r e f s 的作用是干个什么事情呢?就是将我们的 rec 球代理的这个数据, 将它数据中的所有的属性干了什么事情呢?变成我们的 r e f。 那么来到我们这里,首先我这里通过 retur 代理了一个对象,对象这里得到一个代理数据, 当你数据之后,我们在工作当中使的时候,如果你要啊用通过 reaction 拿到的值干个什么,你要通过 object 点这个属性才能拿到, 但是我们可以通过什么把它变成我们的 r e f, 这个时候我们就可以用什么用我们的粗 r e f s。 这里传上我们的代理的对象,就是已经通过 reat 我带你的对象,他会返回什么?返回对象,这里可以解构出来每一个属性,而在每一个属性就变成了我们的 if。 来检查来看一下, 我们来检查看一下 简单数,你会发现看这里就拿到了,这个是我们的内幕,下面这个是我们的 a 级,并且有对应的值,看到没?而我们代理的 object 这个是谁?就是我们的 prox, 那么说明我们这里返回来就是一个什么,返回来就是一个内啊。那个底层代码是怎么实现的? 我们的 two r f 的底层代码其实就是用了一个便利,便利型的便利,我们这个把这个里面的每一个属性拿到,拿到之后再来便利,再通过 if to rf 来处理。因为在上一章节我 我讲过,初二 f 就是将我们的 rex 中的属性变成二 f, 但他只能用一个,这里加了个 s, 表示可以将我们的 rex 中的所有的属性变成二 f。 来看一下我们的几层代码,来到我们这, 这个就是我们的 to r f, 首先它会有个对象,因为你解析出来的是不是个对象,对象中我们解构的是属性, 时间来到这里进行便利啊,他的底层代码就只做了便利,将我们传过来这个对象中的所有的属性,干个什么事情呢?都通过我们这个 two r f 来处理一下。而我这个 two r f 就是将对象中的所有的属性变成 r f 啊,这个就是我们的 to r f 啊,它的底层代码实现的原理。

我们来看这样一个问题啊,我们这个列左右有空白,我希望这个宽度呢根据按钮数量来自动进行适应, 我们这个表格呢是通过这一行主件进行渲染的,这个主件是咱们自己写的,包括这个项目现在正在更新,每天晚上八点,欢迎大家来到直播间,这个按钮呢是通过这个 propos 来传递的, 那当我们把这按钮增加的时候,这个按钮的话呢数量就会跟着增加。现在呢我们来修复这个问题,就是当我按钮数量少的时候,我希望它的宽度呢也是不要左右留白。好,现在呢我们回到这个表格主间的内部,在这个裂的话呢就是控制我们这个按钮的, 我们可以给他加那个 raff 来突破他。好,然后呢我们在这块来声明一下,获取到这个 raff, 我们来查得到一下这个按钮的原, 我们这时候呢刷浏览器我们这块我们看可以得到他,是吧?然后呢我们接着想查找里边的这个按钮, 好,现在我们通过这段质量的查找按钮,这时候呢我们来刷新,我们会发现我们这个按钮列表是没有的,那么现在我把尝试把这个 rap 呢加到这个按钮主上,好,这时候呢会报其他的错误, 我们看到他连这个元素都得不到,是吧?这个是为什么呢?因为这个数据啊,这个表格的渲染他是个一步请求,我们在上面呢发了一一个一步的请求, 所以此时的话呢这个按钮主并没有被渲染出来,那么我们把这生命周期函数给他改掉,改成更新的时候,我获取完数据,更新这个主驾的时候来获取,这个时候呢我们刷新我们就得到这个按钮主看到了 吗?那现在就简单了,我们就可以获取到每个按钮的呃样式的宽度就行了。好,现在呢,我们把这里边的按钮都给循环一下,然后使用这丢车来把它进行一个计算,这些函数你不知道可以看一下我录制的 gs 的视频, 我们再来打一下这个宽度,我们就得到了这个一百二,看到了吧,那实际上我们希望他左右有留空白,所以呢,我们希望这个宽度呢再增加个三十或者怎么样?那我们要定一个小按数据,就是我们这个按钮主的宽度, 然后呢我们把这数值呢复制给他之后的话呢,我们把这个宽度再定义给我们这个单元格啊,定义给我们这列,别忘了用计算好,这时候的话呢,我们刷新我们会发现他 就会自动适应了,那当我们这个按钮增加的时候呢,他也会自动适应。看到了吧,不过最简单的方式呢,我们可以这块定一个什么按钮的宽度, 我们在这块呢定一个 pro 的按钮的宽度啊,然后呢我们这块呢也不用这么计算,我这块的话呢就可以传递按钮的宽度,当然是 props 的按钮的宽度啊,那如果你设置宽度我就用宽度,否则的话呢,我就用这个计算之后的这个宽度。好,现在我们回到这个主角当中,那在这一块的话呢,比如说我现在定一个按钮宽度,让他是一百或者说呃五百, 那这时候他的宽度就是增加了,是吧?那如果我不定义的时候呢?这个呢?就是适应,所以现在有两种选项都可以来控制他。

哈喽,同学们好,这个节我们来讲一下我们的 watch 函数,那提到 watch 话,大家应该不陌生,对不对?用来干嘛的呀?哎,今天数据变化的,比如说我们下面这样的一个小案例, 咱们需要根据用户的一个输入关键词去后端呢拉取我们的数据,只要他输入的数据已变化,咱们就不断的从后端拉取不同的数据,你看这个小案例是不是就可以用我的 watch 去做一个实现呀? 哎, ok, 好,那在 vivo 三这边呢, watch 的一个基本的作用跟之前呢 vo 二呢是非常相似的,它依旧是用来征听一个或者多个数据的变化。在数据变化的时候呢,咱们可以执行一个回调函数, 同样的话,两个额外的参数他依然是保持的,一个是我们的立即执行,一个是我们的深度聆听,哎, ok, 好,那接下来呢,咱们就按照这样的顺序,我们先去实现他的 一个基本使用,真听一个或者多个。然后呢,咱们再给大家开启两个额外的参数,一个呢叫做立刻执行,一个叫做深度真听。好,我们先过来看一下如何去真听一个数据的变化好过来, 那如果我们想真听单个数据的变化的话,他的语法呢,大概这样来写两个步骤,第一步呢,咱们需要先导入这个函数啊,叫做 watch, 用谁导谁?第二步呢,你需要去执行这个函数,然后传过来一个要真听的显示数据,哎,以及一个回掉函数。 好,我们看他下面一个写法,大家看这里哦,第一步先导进来,哎,导入这个函数。第二步呢,你需要去调用这个函数,调他的时候呢,我们传过来两个参数,第一个参数要真听谁,你就把那个响音师的数据啊,把它放过来,这里呢, 咱们是一个 ref 哎,由它来产生的一个显示数据。那第二个参数呢,是一个回调函数,这个函数的意识呢,就是说当你监听的 count 发生变化的时候,这个回调函数呢,会不断的进行执行。 那这里边还有两个他自动给咱引入的参数,一个呢是变化之前的老值 oww, 一个是咱们变化之后的新值,叫做 newww。 好,那看完他的一个大概语法之后呢,接下来呢,咱们去打开我们的大码,咱给大家落地一下,好,回到我们的大码区域。 左边呢依旧是我们跑起来的一个项目,这里呢,我们打开它的一个跟组键,我们在这里边呢开始编码的动作。好,右边呢是它的一个预览的一个结果。好,这里呢我们准备了一些样板大码哈,大家看一个 count 数据,它呢是由 ref 产生的一个响应式的数据,一个修改它的方法叫做 set count。 那下面呢,我们用一个按钮绑定一下一个事件,然后这个地方呢实现的效果呢,其实就是大家熟悉那个点击自增,打开右边哈点它, 哎, ok, 就这样一个小效果。咱们这样做的目的呢,是为了用 watch 去征听一下我们 count 的一个变化。好,咱们过来写吧, 咋写来着,哎,写一个 watch 函数,上面呢会自动给咱导入。第一个函数呢是我们要真听的数据,我们要真听的不就是我们 com 的吗,对吧? 那第二个参数呢,是一个回调函数,代表 com 的变化时要执行的那个回调函数。那看到这里大家可能会疑惑哈,哎,这里怎么不加 点 value 呢?咱之前学过,不是要讲加吗?对吧?哎,这里注意哈,我们的 watch 里边呢,第一个参数 ref 呢,是不需要 加我们的点 y 六属性的哎,它会自动帮我们去处理哈,哎,这是一个需要注意的事项。好了,在里边呢,我们先简单的打一个 log, 咱们叫它 count 变化了,好保存一下。哎,过来,我现在要点击它了啊,大家注意观察一下,当 count 的变化时,这个地方呢,有没有打印出来,如果有的话,那证明是不是已经生效了呀?好,我们过来点击哦,大家注意观察 点。哎,这里变成一看变化了。点,变成二,这里变化了,那证明咱对于 com 的一个真听是不是就已经深造了呀?哎, ok, 好,那除了基本那个真心之外呢,他还给咱传过来两个参数,一个是变化之后的新值,我们叫他 new value。 一个呢是变化之前的老值,我们叫他 old value。 好,咱们尝试呢,把他俩呢都打印一下过来看哈,好,放过来。 好,我们重新一下,再次点击点走,你看这里,前面是星值一,后面是变化之前老值零看零变成了一,对吧,我们再点一次, 大家说,如果我再点一次的话,这个地方的性质和老师变成啥了呀?哎,聪明,是不是二和一啊?好,我们点一下纵听,哎,你看是不是二和一,哎, ok, 好了,那到此呢,咱用 watch 去征听单个响应 数据变化呢,他的写法,那么就写好了,只需要呢,你传过来一个要正听的数据,然后传过来一个毁掉是不就可以了?哎, ok, 那有些时候呢,咱的需求里边呀,除了征听单个数据源,有些时候呢,咱们还需要去征听多个啊,那接下来呢,咱们再看一下如何去征听多个数据的变化。好,我们回来。 哎,那什么是真听多个数据的变化呢?哎,也就是啊,同时真听多个数据的变化,不管哪个数据变化,咱都需要去执行这个回调。哎,举个例子啊,咱们看下面这个, 比如说呢,我们现在呢有两个数据,一个呢叫做 count, 一个叫做 name, 不管这两个响应数据哪个发生变化,我们都想之前一个毁掉。那这个时候怎么写呢?哎,我们看 下面哈,它的写法上呢,只有一处需要发生一些变化。看这儿我们真听的数据由之前的单一的一个 count 变成一个数组的格式, 然后在数组里边呢,把你想要粘贴的数据呢都给他放过来就可以了。这有一个顺序需要注意一下哈,前面的数组里边呢都是我们的新值,后面这个数组里边呢都是老值,他们的顺序呢且是对应的。你看这里哈, a new count, new name, old count, 然后是一个 old name, 是一个对应的关系。好了,那这个语法知道以后呢,咱们过来呢做一个测试,回到我们的代码区。好,回来 咱把上面这个呢先给他注掉。哎,这个模板呢,先注掉,咱把下面这个打开。哎,这是我们 听多个数据式的一个模板。好,把它打开。打开以后呢,咱们先过来看一下我们做了哪些准备工作啊?看这里准备了一个响应数据 count, 一个修改它的方法。准备了一个响应数据 name, 一个修改它的方法,哎,两个数据都有了, 有了以后呢,咱们在下面呀,用两个按钮分别绑定了两个点击事件,目的是为了修改我们这两个,哎,响应式的数据,看右边一个效果哈,看这里,点第一个按钮可以修改我们 com 点看把它改了,改成一了,对吧? 那点第二按钮呢,可以修改我们的 name, 点看是变成 pc 了呀,哎, ok, 好了,知道我们做了哪些事以后呢,接下来咱们就用 watch 呀,监听一下我们的 count 和 name 的两个数据的变化,注意哦,是两个数据的变化, 好了,咱们过来写呗。 watch 第一个参数怎么变来着?哎,很好,是不是数组了?你要真听谁就把他俩呀都放过来,好, cont 和我们的 name 都放过来, 好,第二个参数呢,是不是一个回调呀?哎,咱们给他整个行吧,好看一些哈,那第二个参数呢,是一个回调函数, 再回到里边的参数是不是也变了呀?它变成了两个数组,好,一个是我们的, 放我们的新值了,对吧,哎,注意顺序哈, new count 和我们的 new name。 okay, 好,第二个参数是啥呀?老值呗,一个是我们的 old count, 一个是我们的 old name。 好了,那它的呢?都写好了?写好以后呢,咱们在这里呢打印一下呗。好, blog 一下, 这一次呢,咱们叫它 count, 哎,或者我们的 name 变化了,好,然后在后面呢,咱们把这两个数据呢都给它打印一下。一个是我们的新职,一个是我们的老职,好,把太太呢都扔过来。 ok, 好了,到这里呢,我们又写完了过来,那我们刷新一下哈,接下来我们要去修改我们的 cond 和我们的内幕, 我们不是说了吗,这样写好的一个效果呢,就是说这两个数据呢,不管哪个变,是不是都可以执行回调呀?来,我们过来呢,验证一下哈,我们先点一下我们的 com, 走,你走。哎,看,这里打印出来了,那注意观察 我们新值和老值的变化,我们这一次改的是 count, 你会发现一和这个零是不是变了呀?看这个地方,一是一个新值,零是一个老值,而后面这个呢, cp 呢,其实是我们这个 name, 他还是个 cp, 因为我没有没有动他们。 好,打完这个以后呢,我们再修改一下我们的 name, 看看呢,还会不会打印出来哈,点它走。哎,果然又打印了,这次呢,轮到我们的后面这个数据,你看,从我们之前的老值 cp 是变成现在的新值 pc 呀, 哎,那证明确实不管这两个数据呢,你修改哪一个都会执行我们的回调函数,对吧?哎,这是所谓的真听多个数据好了,那到此呢,真听多个数据的写法呢,咱们也验证过了,哎,其实呢,只需要把参数的位置 从之前的单一参数变成数组的一个多个参数是不就可以了,哎, ok, 好了,那到这里呢,我们就说完了我们关于 watch 的一个基本监听, 那它是不是还有两个额外的参数呀?叫啥来着诶,一个呢叫做 immediate, 是立即执行。一个呢是我们的叫 deep 深度,真听对不对?好,那接下来呢,咱们先过来看一下我们的立即执行。好,过来, 那立即执行呢?它的意思是说在征听器创建时,立即就触发我们的回调,对吧?哎,想认识数据变化的时候呢,继续执行回调,比如说呢,还是有我们这个需求,这一次呀,大家看这里,当用户呢什么都没有输入的时候,咱们以上来 先从后端先把这个数据呢给他拉过来。哎,这不就是一上来就先执行吗?你看在这个需求如果再增加这么一个小需求的话,他就需要用到我们的 emitter 参数了。好,那接下来看看呢,我们的 emitter 该如何来写啊? 它的语法呢,非常简单,我们只需要呢在它的最后再补充一个参数,大家注意哦,前面两个参数保持不变,最后呢再补充一个对向格式的参数,在这个参数里边呢,我们增加一个选项叫做 immediate, 开启为处就可以啦。 哎,真的是这样吗?我们过来呢测试一下哈。好,回到我们的代数区,咱们呀再把我们上面这个呢给他注掉。好,先把它呢注掉好,合起来 把咱们第三块模板呢再给它打开。好,还是先过来看一下我们做哪些事啊?大家看这里,我们有小型数据,是个 count, 下面呢有修改它的一个方法啊,你看 点击还是那个 g u c 案例,我们呢通过它呢演示一下我们的立即执行好了,那咱们在下面呢执行一下我们的 watch 函数调它呗。 好,第一个参数是不变呀,依旧是我们的显示数据 count, 第二参数也不变,依旧是我们的数据变化时要直行的回掉 count 变化了, 这时候是不是需要增加第三个参数了,格式是什么样格式哎,对了,是不是一个对象呀?好,加个逗号。后面呢,加一个对象哦, 注意设置三个参数哦,别写错,尤其这个嵌套结构哈,不要写错在里边呢,我们可以添加一个叫做隐秘第二特的选项处。好,大家注意啊,我要保存了,看这个地方的变化,我要保存喽, 走你。哎,大家看,这里,一上来是不是先执行了一次呀?当我们点击时,我们再看哈点,你看点击时候呢,又执行了一次, 好了, so easy, 对吧?好了,这是我们的 in media 的参数啊,它可以在我们 watch 在 第一次真听的时候啊,就先执行一次,就是把这个回掉函数先执行一次,等到数据变化时,他会再次执行,哎,这是他的一个执行逻辑。好了,那关于 deep 呢,我们下一小节再说啊。这一小节呢,我们就 先讲到这里,我们讲了 watch 的基本使用,哎,它既支持单一参数,也支持多个参数。右脚了一下,我们的 in mediat 额外开启这个选项,它可以做到立刻执行,对不对?哎, ok。