Vue v2.x 基础

112 阅读1分钟

1. Vue实例

创建一个Vue实例

很简单就是new Vue(),它可以传入一个选项对象,像这样new Vue({el:'#app',components:{Counter},...}),像这样我们创建了一个根实例,有根,代表后续也会创建很多实例,没错,组件,也是Vue实例,它也接受相同的选项对象,不同的是有些选项是根实例特有的。

数据与方法

Vue实例中有data对象,他就是数据来源,当实例被创建,便自动加入到响应式系统中。数据改变,视图展示的数据也会改变。

但是呢,加入你加入一个新创建的属性数据进去,它不会进入到这个响应式系统,意味着你在改变这个属性数据,视图是不会更新的。 Object.freeze()也是,它会阻止响应式系统的追踪。

像是Vue实例自带的实例属性和方法,会带有$前缀。

实例生命周期钩子

Vue实例的创建也会伴随着生命周期,我们可以使用一些生命周期钩子,在Vue哪些时期运行代码。

Vue生命周期中文图.png

2. 模板语法

文本插值:{{}}可以输出简单的js表达式,复杂的逻辑还是使用computed

指令:带有v- 前缀

v-html指令:输出原始的html,了解即可

v-bind指令:可以简写为: ,因为文本插值是不可以在属性上使用的,而v-bind指令解决了这一问题。以往我们都说标签属性例如 <a href='xx'></a>,这个href属性使用:我们就称它为参数

动态参数:上边提到的参数,是静态的,[]可以变为动态。我们不可以使用空格引号,或可以使用计算属性。注意它会识别小写而已,当我们的动态参数有大写,会自动转换小写。

修饰符:参数后的.xx

3. 计算属性和侦听器

计算属性是(computed)是什么,前面我们说过文本插值可以出入js表达式,也可以计算,但我们在里面写太多,会显得很臃肿,对于复杂的逻辑就可以使用computed

那你可能想到不是还有methods方法吗?,是的他们的作用是完全一样的,但是计算属性它会有缓存,也就是说当你计算后,下次再来获取这个值,可以直接拿去,不需要再计算一遍;而方法你每次计算都要重新调用,这样一来对于这个性能肯定不好。假如你在计算属性中使用动态改变的数据,这样和方法没两样。

计算属性默认是getter,也就是读取的方式,不会对数据源改变。 我们可以使用setter,set:,他将传入一个参数,这个参数是你要对源数据的改变的依赖,之后你便可以对源数据重新赋值。

侦听器

watch作用就是对数据改变做出响应。特别是异步操作。

4. Class与Style绑定

  • 绑定html class 对象语法:<div v-bind:class="{ active: isActive }"></div>对象中为类名属性,存在与否就是它的值了,可以与普通类共存

数组语法:<div v-bind:class="[activeClass, errorClass]">数组直接映射data中的类名,可以使用三元表达式,还可以再数组中再用对象语法

用在组件上:组件也可以使用前面的语法

  • 绑定内联样式 对象语法:属性名为样式属性,值是data的属性值

数组语法:同理

5. 条件渲染

6. 列表渲染

7. 事件处理

  • 监听事件:@也就是v-on指令的简写
  • 事件处理方法:选项对象在methos对象中定义方法,由监听事件接收调用的方法名@click='xx'
  • 内联处理器中的方法:我们不仅可以绑定方法,还可以调用@click='xx()' 对于修饰符(暂时忽略)

8. 表单输入绑定

就是说v-model用在表单控件上,它的数据是双向绑定的, 要注意在组件是使用v-model是有点不一样的

9. 组件基础

组件的data必须是一个函数。否则它的你将发现你的组件数据是一样的,像是Vue.component()这样的是全局注册,你在哪里都可以使用这样的组件。

父组件要向子组件传递数据,可以通过prop。

记住,你的组件,它只能有一个根元素。

监听子组件事件:子组件向父组件传递数据,可以使用 $emit('事件',抛出的参数值),然后父使用这个事件,和$event来访问这个值

通过插槽分发内容:如果我们向组件直接传递内容,需要用来接收。

动态组件: 你可以用一个component元素,加is属性,属性值就是你想要渲染的组件名。