Vue教程-9-重读官网后的感悟

目录

0.前言

1.为什么要有计算属性computed?

2.为什么是计算属性computed,而不是方法methods?

3.计算属性computed与侦听器watch

4.当v-bind绑定HTML Class属性时

5.当v-bind绑定HTML Style属性时

6.v-bind:style与浏览器引擎前缀

6.1.CSS 前缀

6.2.JS接口前缀

6.3.JS属性和方法前缀

6.4.v-bind:style与浏览器引擎前缀

7.v-if与条件渲染

8.v-for与列表渲染

9.Vue的特殊属性:key

10.v-on与事件处理

11.v-model与表单输入绑定

12.Vue的响应式原理

12.1.如何追踪变化

12.2.检测变化的注意事项

12.3.声明响应式property

12.4.异步更新队列

13.组件

13.1.基础

13.2.data选项

13.3.组件的组织

13.4.通过Prop向子组件传递数据

13.5.单个根元素

13.6.监听子组件事件

13.6.1.使用事件抛出一个值

13.6.2.在组件上使用v-model

13.7.动态组件

13.8.解析DOM模板时的注意事项

14.组件注册

14.1.组件名

14.2.全局注册

14.3.局部注册

14.4.模块系统

15.Prop

15.1.Prop大小写

15.2.Prop类型

15.3.传递静态或动态Prop

15.4.单向数据流

15.5.Prop验证

15.6.非Prop的属性

15.6.1.替换/合并已有的属性

15.6.2.禁用Attribute继承

16.动态组件、异步组件

16.1.在动态组件上使用 keep-alive

16.2.异步组件


0.前言

闲聊无事,都会来Vue官网逛逛,每次来的时候,总会得到新的感悟,因此,想记录下来,这样日积月累逐渐增强自己;

1.为什么要有计算属性computed?

为了防止在template/模板中出现大量的逻辑代码,导致用户无法在短时间内理清头绪,因此,需要把大量的逻辑代码独立出来,而template/模板只负责展示结果、简单逻辑;

2.为什么是计算属性computed,而不是方法methods?

计算属性是基于响应式依赖进行缓存的。只在相关响应式依赖发生改变时它们才会重新求值。

通俗来讲就是,如果计算属性所依赖的变量没有变化,则计算属性仅仅运行一次,然后缓存运行结果,而方法则是每调用一次就运行一次,因此,计算属性在面对复杂逻辑时,更能节省系统资源;

3.计算属性computed与侦听器watch

既然computed是基于响应式依赖进行缓存的,说明Vue会监控依赖,当依赖发生变化后,再次调用computed时,会重新计算结果;

这就说明Vue有个“监视”功能,这里有个侦听器watch,可以让开发者去自定义自己的侦听逻辑,特别是computed面对一个异步任务/开销较大的操作时,需要开发者时时关注细节,此刻,watch侦听器要比computed计算属性更合适;

4.当v-bind绑定HTML Class属性时

当v-bind绑定class属性时,其属性值可以是:

①Object对象

②数组

③计算属性

5.当v-bind绑定HTML Style属性时

当v-bind绑定class属性时,其属性值可以是:

①Object对象:CSS property名可以用驼峰式(camelCase)或短横线分隔 (kebab-case,记得用引号括起来)来命名;

②数组:

③多重值:从2.3.0起可以为style绑定中的property提供一个包含多个值的数组,常用于提供多个带前缀的值,浏览器只会渲染数组中最后一个被浏览器支持的值;

④计算属性

6.v-bind:style与浏览器引擎前缀

浏览器引擎前缀:浏览器厂商们有时会给实验性的或者非标准的 CSS属性和JavaScript API添加前缀,这样开发者就可以用这些新的特性进行试验,同时(理论上)防止他们的试验代码被依赖,从而在标准化过程中破坏web开发者的代码。开发者应该等到浏览器行为标准化之后再使用未加前缀的属性。

6.1.CSS 前缀

主流浏览器引擎前缀:

-webkit- (谷歌,Safari,新版Opera浏览器,以及几乎所有iOS系统中的浏览器(包括 iOS 系统中的火狐浏览器);基本上所有基于WebKit 内核的浏览器)

-moz- (火狐浏览器)

-o- (旧版Opera浏览器)

-ms- (IE浏览器 和 Edge浏览器)

6.2.JS接口前缀

需要使用大写的前缀修饰接口名:

WebKit (谷歌, Safari, 新版Opera浏览器, 以及几乎所有iOS系统中的浏览器(包括iOS 系统中的火狐浏览器); 简单的说,所有基于WebKit 内核的浏览器)

Moz (火狐浏览器)

O (旧版Opera浏览器)

MS (IE浏览器 和 Edge浏览器)

6.3.JS属性和方法前缀

需要使用小写的前缀修饰属性或者方法

webkit (谷歌, Safari, 新版Opera浏览器, 以及几乎所有iOS系统中的浏览器(包括iOS 系统中的火狐浏览器); 简单的说,所有基于WebKit 内核的浏览器)

moz (火狐浏览器)

o (旧版Opera浏览器等

ms (IE浏览器 和 Edge浏览器)

6.4.v-bind:style与浏览器引擎前缀

当v-bind:style使用需要添加浏览器引擎前缀的CSS property时,Vue.js会自动侦测并添加相应的前缀;

7.v-if与条件渲染

①用于HTML标签时:

Vue is awesome!

Vue is awesome!

Oh no

注意:v-else元素必须紧跟在带v-if或者v-else-if元素的后面,否则它将不会被识别。

②用于