vue常用知识点总结

1,生命周期

 

从创建到渲染的过程,不仅仅问8个函数四个阶段

组件创建时:creating 模板渲染时:mounting 数据更新时:updating  组件卸载时:destroying

1.1 图示

 

 

 

 

 

 

 

1.2 生命周期钩子函数

 

beforeCreate:创建前,在数据观测和初始化事件还未开始

created:创建后,完成数据观测,属性和方法的运算,初始化事件,el属性还没有显示出来

beforeMount:载入前,在挂载开始之前被调用,相关的render函数首次被调用。实例已完成以下的配置:编译模  板,把data里面的数据和模板生成html。注意此时还没有挂载html到页面上。

mounted:载入后,在el 被新创建的 vm.$el 替换,并挂载到实例上去之后调用。实例已完成以下的配置:用上面编译好的html内容替换el属性指向的DOM对象。完成模板中的html渲染到html页面中。此过程中进行ajax交互。

 

beforeUpdate:更新前,在数据更新之前调用,发生在虚拟DOM重新渲染和打补丁之前。可以在该钩子中进一步地更改状态,不会触发附加的重渲染过程。

updated:更新后,在由于数据更改导致的虚拟DOM重新渲染和打补丁之后调用。调用时,组件DOM已经更新,所以可以执行依赖于DOM的操作。然而在大多数情况下,应该避免在此期间更改状态,因为这可能会导致更新无限循环。该钩子在服务器端渲染期间不被调用。

beforeDestroy:销毁前,在实例销毁之前调用。实例仍然完全可用。

destroyed:销毁后,在实例销毁之后调用。调用后,所有的事件监听器会被移除,所有的子实例也会被销毁。该钩子在服务器端渲染期间不被调用。

 

1.3 回答的相关问题

  1. 什么是vue生命周期?

答: Vue 实例从创建到销毁的过程,就是生命周期。从开始创建、初始化数据、编译模板、挂载Dom→渲染、更新→渲染、销毁等一系列过程,称之为 Vue 的生命周期。

  1. vue生命周期的作用是什么?

答:它的生命周期中有多个事件钩子,让我们在控制整个Vue 实例的过程时更容易形成好的逻辑。

  1. vue生命周期总共有几个阶段?

答:它可以总共分为8个阶段:创建前/后, 载入前/后,更新前/ 后,销毁前/销毁后。

 

  1. 第一次页面加载会触发哪几个钩子?

答:会触发 下面这几个beforeCreate, created, beforeMount, mounted 。

  1. DOM 渲染在 哪个周期中就已经完成?

答:DOM 渲染在 mounted 中就已经完成了。

 
   

 

  1. created阶段的ajax请求与mounted请求的区别:前者页  面视图未出现,如果请求信息过多,页面会长时间处于白屏状态
  2. mounted 不会承诺所有的子组件也都一起被挂载。如果你希望等到整个视图都渲染

 

 

 

 

2,组件封装

 

封装组件:主要是为了解耦,具备高性能、低耦合,在通用组件的时候要留一个插槽

 
   

 

 

 

 

为什么data必须是一个函数:主要是防止组件与组件之前 声明的变量相互影响

3axios

 

3.1 axios是什么?

 

axios是基于promise的用于浏览器和node.js的http客户   端,主要作用就是向后退发送请求。

支持promise

提供并发方法:同时请求两个接口提供了拦截器

提供支持CSRF(跨站请求伪造)

 

4vuex

 

4.1 vuex是什么?

 

vuex为vue构建一个状态集管理,主要是为了解决组件状态共享的问题,强调的是集中式管理,便于便于维护,便于解耦,适用于大型项目

 

 
   

 

 

 

 

state

Vuex 使用单一状态树,即每个应用将仅仅包含一个store 实例,但单一状态树和模块化并不冲突。存放的数据状态, 不可以直接修改里面的数据。

mutations

mutations定义的方法动态修改Vuex  store 中的状态或数据。

 

getters

类似vue的计算属性,主要用来过滤一些数据。

action

actions可以理解为通过将mutations里面处里数据的方 法变成可异步的处理数据的方法,简单的说就是异步操作数据。view 层通过 store.dispath 来分发 action。

 
   

 

 

modules

项目特别复杂的时候,可以让每一个模块拥有自己的state、mutation、action、getters,使得结构非常清晰,方   便管理。

 
   

 

 

 

 

 

 

4.2 怎么使用?

 

vuex包含5个模块:

state:存放数据的位置mutations:变更状态getters:动态变更数据

actions:actions从动作层调用mutations去更改状态modules:拆分仓库

4.3 哪种场景使用它?

大型应用

vue指令

 

 

4个vue中的指令和它的用法

v-if:条件渲染指令,代表存在消耗v-bind:用来绑定属性,简写(:)

v-on:监听指令,简写(@ v-for:循环指令

 

 

导航钩子

 

vue-router 提供的导航守卫主要用来通过跳转或取消的方式守卫导航。

6.1 导航钩子有哪些?

 

导航钩子就是路由的生命周期函数,主要包括全局和局部。

6.1.1 全局钩子函数

beforeEach:路由切换开始调用,类似路由守卫

 
   

 

 

对于登录的设置案例:

 

 

 

afterEach:路由切换离开时调用

6.1.2 局部的钩子函数

局部到单个路由:

beforeEnter

组件的钩子函数:

beforeRouterEnter beforeRouterUpdate beforeRouterLeave

 
   

v-model是什么?Vue中标签怎么绑定事件?

Vue利用v-model进行表单数据双向绑定,做了两个操作v-bind绑定一个value的属性

v-on帮当前的元素绑定到一个事件上

 
   

 

 

 

 

如何使用Vue构建项目

 

 
   

 

 

1,使用Vue-cli脚手架构建项目

2,直接引用vue.js进行项目的构建

swiper插件

 

swiper插件从后台获取数据没有问题,css代码也没有问题,但是图片没有动,怎么解决?

swiper提前初始化,这个时候数据还没有完全出来。

 

解决方法,主要有两个方向,一个从swiper,一个从

vue方面

9.1 vue方面

 

vue方面:vue中专门提供了一个nextTick(),用于解决dom

的先后执行问题

当数据加载完毕后,才执行swiper

 
   

 

 

9.1 swiper方面

 

 
   

 

 

10,路由懒加载

 

延迟加载、当需要的时候再加载,有效的分担首页的加载时间

 
   

 

 

11 Vue-loader

 
   

 

vue-loader就是一个加载器,把Vue编译javaScript的模块,  方便浏览器读文件。

 

11.1 为什么要转译vue组件

 

 

动态的渲染一些数据

对三个标签(template、script、style)都做了优化script中可以直接使用es6  style   也默认使用sass 提供作用域的选择

开发阶段提供热加载

 

 

12 插槽

 

 
   

vue插槽:slot是一个占位about.vue

 

 

 

 

12.1 具名插槽

 

 
   

 

 

 

 

12.2 默认插槽

 

 

默认插槽就是匿名插槽

 
   

 

 

 

 

12.3 作用域插槽

 

 
   

 

 

13 vue虚拟DOM的理解

(重点)

 

13.1 什么是虚拟dom

 

使用js对象形式去添加dom元素,本质上是优化了diff算法,先在js上面批量更改,然后批量在真实节点上面修改。采用了新旧节点的对比,获取差异的dom,一次性更新到真实的dom上,从而

13.2 缺陷?

 

一般是同级或者兄弟层级的修改,尽量不要跨层级修改

dom,设置key,可以最大的理由节点

14 MVVM模式

 

 

14.1 mvc

 
   

 

 

控制器:Controller 视图:View

模型:Model

14.2 MVVM(重看)

 

 

Model:代表数据模型,也可以在Model中定义数据修改和操作的业务逻辑。

View:代表UI 组件,它负责将数据模型转化成UI 展现出来                                                           ViewModel:监听模型数据的改变和控制视图行为、处理用户交互,简单理解就是一个同步View  Model的对

象,连接Model和View。

【模型】指的是后端传递的数据。【视图】指的是所看到的页面。【视图模型】mvvm模式的核心,它是连接view和model的桥梁。它有两个方向:一是将【模型】转化成【视 图】,即将后端传递的数据转化成所看到的页面。实现的方式是:数据绑定。二是将【视图】转化成【模型】,即将所看到的页面转化成后端的数据。实现的方式是:DOM 事件监听。这两个方向都实现的,我们称之为数据的双向绑定。

 

在MVVM的框架下视图和模型是不能直接通信的。它们通过ViewModel来通信,ViewModel通常要实现一个  observer观察者,当数据发生变化,ViewModel能够监听到 数据的这种变化,然后通知到对应的视图做自动更新,而当用户操作视图,ViewModel也能监听到视图的变化,然后通

 

知数据做改动,这实际上就实现了数据的双向绑定。并且

MVVM中的View ViewModel可以互相通信。

15 keep-alive

 
   

 

15.1 什么是keep-alive

 

它能让不活动的组件“活着”,从A页面跳转到B页面,一般从B页面返回A页面,A页面会重新加载,但是keep-alive会保存到内存里面。

它提供了include与exclude两个属性,允许组件有条件的缓存

15.2 实现的原理

 

在created时候,将需要缓存的vnode节点放到cache中,在

render的时候根据name取出

15.3 使用

 

 
   

 

 

 

 

App.vue

 
   

 

 

16 Vue组件间的参数传递

 

16.1 父组件与子组件传值

 

父组件传给子组件:子组件通过props方法接受数据; 子组件传给父组件:$emit方法传递参数

16.2 

 
   

非父子组件间的数据传递,兄弟组件传值

 

eventBus,就是创建一个事件中心,相当于中转站,可以用它来传递事件和接收事件。项目比较小时,用这个比较合

适。

 
   

17vue-cli如何新增自定义指令

17.1 创建局部指令

 

 
   

 

 

17.2 全局指令

 

 
   

 

 

18 自定义过滤器

 

html代码:

 
   

 

 

JS代码:

 

 

 

全局定义过滤器

 
   

 

 

过滤器接收表达式的值 (msg) 作为第一个参数。capitalize 过滤器将会收到 msg的值作为第一个参数。

 

19 

 
   

css只在当前组件起作

答:在style标签中写入scoped即可 例如:

 

20 v-if  v-show 区别

 

答:v-if按照条件是否渲染,v-show是display的block或

none;

21 router的区别

 

答:是路由信息对象,包括,,,,,,等路由信息参数。而router是“路由实例”对象包括了路由的跳转方法,钩子函数等。

 

22 

 
   

vue.js的两个核心是什么?

两个核心分别是数据驱动和组件系统

22.1 数据驱动

 

当数据发生变化的时候,用户界面发生相应的变化,开发者不需要手动的去修改dom。

22.2 组件系统

 

vue中的组件分为两种,全局组件和局部组件。

23 vue几种常用的指令

 

 

答:v-for v-if 、v-bind、v-on、v-show、v-else

24 vue常用的修饰符?

 

答:.prevent: 提交事件不再重载页面;.stop: 阻止单击事件冒泡;.self: 当事件发生在该元素本身而不是子元素的时候会触发;.capture: 事件侦听,事件发生的时候会调用

 

25 

 
   

v-on 可以绑定多个方法吗?

答:可以

26 vue key 值的作用?

 

答:当 Vue.js v-for 正在更新已渲染过的元素列表时,它默认用“就地复用”策略。如果数据项的顺序被改变,Vue 将不会移动 DOM 元素来匹配数据项的顺序, 而是简单复用此处每个元素,并且确保它在特定索引下显示已被渲染过的每个元素。key的作用主要是为了高效的更新虚拟DOM。

 

27 

 
   

什么是vue的计算属性?

 

答:在模板中放入太多的逻辑会让模板过重且难以维护,在需要对数据进行复杂处理,且可能多次使用的情况下,尽量采取计算属性的方式。好处:①使得数据处理结构清晰;② 依赖于数据,数据更新,处理结果自动更新;③计算属性内部this指向vm实例;④在template调用时,直接写计算属性名即可;⑤常用的是getter方法,获取数据,也可以使用set 方法改变数据;⑥相较于methods,不管依赖的数据变不   变,methods都会重新计算,但是依赖数据不变的时候computed从缓存中获取,不会重新计算。

 

28 

 
   

vue等单页面应用及其优缺点

答:优点:Vue 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件,核心是一个响应的数据绑定系统。MVVM、数据驱动、组件化、轻量、简洁、高效、快 速、模块友好。

缺点:不支持低版本的浏览器,最低只支持到IE9;不利于SEO的优化(如果要支持SEO,建议通过服务端来进行渲染组件);第一次加载首页耗时相对长一些;不可以使用浏览器的导航按钮需要自行实现前进、后退。

 

29 

 
   

怎么定义 vue-router 的动态路由? 怎么获取传过来的值

 

答:在 router 目录下的 index.js 文件中,对 path 属性加上

/:id,使用 router 对象的 params.id 获取。

30 vue的双向绑定原理

 

 

j

posted @ 2021-04-12 19:13  诡道也  阅读(1088)  评论(0编辑  收藏  举报