Vue3基础-模板语法


一、methods方法绑定this

1.1问题一:methods中为什么不能使用箭头函数?

我们在methods中要使用data返回对象中的数据:

  • 那么这个this是必须有值的,并且应该可以通过this获取到data返回对象中的数据

那么我们这个this能不能是window呢?

  • 不可以是 window,因为 window 中我们无法获取到data返回对象中的数据;
  • 但是如果我们使用箭头函数,那么这个 this 就会是 window 了;

为什么是window呢?

  • 这里涉及到箭头函数使用 this 的查找规则,它会在自己的上层作用域中来查找 this
  • 最终刚好找到的是script作用于中的this,所以就是window;

this到底是如何查找和绑定的呢?
以下链接专门详细的讲解了this的绑定规则;

https://mp.weixin.qq.com/s/hYm0JgBI25grNG_2sCRlTA;

认真学习之后你绝对对this的绑定一清二楚;

1.2 问题二:不使用箭头函数的情况下,this到底指向什么?

事实上Vue的源码当中就是对methods中的所有函数进行了遍历,并且通过bind绑定了this:

 

 

二、VSCode代码片段

我们在前面练习Vue的过程中,有些代码片段是需要经常写的,我们再VSCode中我们可以生成一个代码片段,方便我们快速生成。
VSCode中的代码片段有固定的格式,所以我们一般会借助于一个在线工具来完成。
具体的步骤如下:

  • 第一步,复制自己需要生成代码片段的代码;
  • 第二步,https://snippet-generator.app/在该网站中生成代码片段;
  • 第三步,在VSCode中配置代码片段;

过程:

mac

  

 

 

 window

 

 

三、模板语法

React的开发模式:

  • React使用的 jsx,所以对应的代码都是编写的类似于js的一种语法;
  • 之后通过Babel将jsx编译成React.createElement 函数调用;

Vue也支持jsx的开发模式(后续有时间也会讲到):

  • 但是大多数情况下,使用基于HTML的模板语法;
  • 在模板中,允许开发者以声明式的方式将DOM和底层组件实例的数据绑定在一起;
  • 在底层的实现中,Vue将模板编译成虚拟DOM渲染函数,这个我会在后续给大家讲到;

四、Mustache双大括号语法

如果我们希望把数据显示到模板(template)中,使用最多的语法是“Mustache”语法(双大括号) 的文本插值。

  • 并且我们前端提到过,data 返回的对象是有添加到 Vue 的响应式系统中;
  • data中的数据发生改变时对应的内容也会发生更新
  • 当然,Mustache中不仅仅可以是data中的属性,也可以是一个JavaScript的表达式

另外这种用法是错误的:

 

 

 

 

 五、指令

基本同vue2

不熟悉的几个点

1、v-on参数传递

当通过methods中定义方法,以供@click调用时,需要注意参数问题:
情况一:如果该方法不需要额外参数,那么方法后的()可以不添加。

  • 但是注意:如果方法本身中有一个参数,那么会默认将原生事件event参数传递进去

情况二:如果需要同时传入某个参数,同时需要event时,可以通过$event传入事件。

 

2、v-cloak

这个指令保持在元素上直到关联组件实例结束编译。

  • 和CSS 规则如[v-cloak] { display: none } 一起用时,这个指令可以隐藏未编译的Mustache 标签直到组件实例准备完毕。

 

 <div> 不会显示,直到编译结束。

3、template元素

因为v-if是一个指令,所以必须将其添加到一个元素上:

  • 但是如果我们希望切换的是多个元素呢?
  • 此时我们渲染div,但是我们并不希望div这种元素被渲染;
  • 这个时候,我们可以选择使用template;

template元素可以当做不可见的包裹元素,并且在v-if上使用,但是最终template不会被渲染出来:

  • 有点类似于小程序中的block

 

v-show和v-if的区别

首先,在用法上的区别:

  • v-show是不支持template;
  • v-show不可以和v-else一起使用;

其次,本质的区别:

  • v-show元素无论是否需要显示到浏览器上,它的DOM实际都是有渲染的,只是通过CSS的display属性来进行切换;
  • v-if当条件为false时,其对应的原生压根不会被渲染到DOM中;

开发中如何进行选择呢?

  • 如果我们的原生需要在显示和隐藏之间频繁的切换,那么使用v-show;
  • 如果不会频繁的发生切换,那么使用v-if;

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM