前端知识--vue

76 阅读4分钟

1、MVVM(model-view-viewmodel|模型-视图-视图模型)

视图和模型是不能直接通信的,通过viewmodel通信。数据变化,viewmodel能监听数据的变化,通知视图变化;用户操作视图的时候,viewmodel也能通知数据做改动,数据的双向绑定。

2、生命周期钩子

  • beforeCreate--在Vue实例创建之前执行的函数。
  • created--实例创建完成后调用。
  • beforeMount--在vue实例创建之后,数据未渲染时负责接管DOM之前执行的函数。
  • mounted--el挂载到实例上后调用,一般第一个业务逻辑会在这里开始。
  • beforeDestory--实例销毁之前调用,主要解绑一些使用addEventListener监听的事件。
  • destroyed--vue实例在执行vm.destriyed()命令之后,销毁之后执行的函数。
  • beforeUpdate--在vue实例数据更新之前执行的函数。
  • updated--在vue实例数据更新之后执行的函数。

3、计算属性和方法

  1. 计算属性:只有在相关依赖发生改变时才会重新求值,用方法的话,无论属性是否改变都会重新执行,增加了系统开销。
  2. 计算属性调用不能使用括号,调用方法需要加上括号。
  3. 计算属性一般在数据量比较大、比较耗时的情况下使用(例如搜索),只有虚拟DOM和真是DOM不同的情况下才会执行cpmputed。
  4. 计算属性默认只有getter,不过在需要的时候也可以使用setter。

4、侦听属性

当监听的数据为对象或数组时,newValue和oldValue是相等的,因为对象和数组都为引用类型,这两个的形参指向的也是同一个数据对象。

和计算属性比较:

  • 计算属性的结果会被缓存起来,只有依赖的属性发生变化的时候才会重新计算,必须返回一个数据,主要用来进行纯数据的操作。
  • 监听器主要用来监听某个数据的变化,从而去执行某些具体的回调业务逻辑,不仅仅局限于返回数据。

5、过滤器(不能改变原始值)

可以串联使用,也可增加参数。

6、用key管理

vue会尽可能高效地渲染元素,通常会复用已有元素而不是从头开始渲染,不想复用的话,可以添加一个具有唯一值的key属性即可。

7、v-show

带v-show的元素始终会被渲染并保留在DOM中,它只是简单地切换元素的css属性display,不支持template语法,也不支持v-else。

v-show和v-if区别:

  • v-if是真正的条件渲染,是惰性的,直到条件变为真才开始渲染,更高的切换开销。
  • v-show不管初始条件,总是渲染元素,基于css,更高的初始渲染开销。

8、vue响应式和数据双向绑定

vue数据双向绑定过程:当把一个js对象传给vue实例的data选项,vue将遍历此对象所有属性,并用Object.defineProperty()把这些属性全部转为getter/setter。每个组件实例都有相应的watcher实例对象,会在组件渲染过程中把属性记录为依赖,之后当依赖项的setter被调用时,会通知watcher重新计算,使和它关联的组件更新,视线数据data变化,更新视图view。

若一个对象的属性没有在data中声明,那他就不是响应式的。

9、修饰符

事件修饰符

  • .stop--在子元素使用,阻止事件冒泡。
  • .capture--在父元素使用,与冒泡相反,事件捕获由外到内。
  • .self--跳过冒泡事件和捕获事件,会监视事件是否直接作用在元素上。
  • .once--需要只执行一次的操作。
  • .prevent--阻止默认行为。
  • .passive--执行默认行为。

按键修饰符

  • keydown--键盘按键按下时触发。
  • keyup--键盘按键抬起时触发。
  • keypress--键盘按键按下抬起间隔期间触发。

表单修饰符

  • .lazy--失去焦点或者按下enter键才更新。
  • .number--将输入的值转为number类型。
  • .trim--自动过滤用户输入的首尾空格。

10、vue的data选项必须是一个函数 vue的data选项必须是一个函数,因此每个实例可以维护一份被返回对象的独立的拷贝。

11、webpack

12、项目脚手架vue-cli

使用vue-cli 3.x创建的项目如何实现跨域请求? 可以直接利用Node.js代理服务器,通过修改vue proxyTable接口实现跨域请求。在Vue-cli项目中的config文件夹下的index.js配置文件中。