面试题vue

4 篇文章 0 订阅

vue路由传参方式?

query        params        path


Vue路由里的$router和$route的区别是什么?

Router是路由实例对象,route是当前路由信息

v-for中的key作用是?

1. 用v-for,需要给元素加上一个key属性

2. key用来提高渲染性能

3. key可以避免数据混乱的情况出现 

谈谈vue-Router的原理

原理核心就是 更新视图但不重新请求页面。

vue-router实现单页面路由跳转,提供了三种方式:hash模式、history模式、abstract模式,根据mode参数来决定采用哪一种方式。

组件间的通信方式有哪些?越多越好

1. props和$emit

2.$attrs和$listeners

3.中央事件总线

4. provide和inject

5. v-model

6. $parent和$children

7.vuex处理组件之间的数据交互
 

路由钩子函数 (组件内的守卫) 导航钩子有哪些?作用分别是?

全局守卫

router.beforeEach:全局前置守卫,进入路由之前
router.beforeResolve:全局解析守卫,在beforeRouteEnter调用之后调用
router.afterEach:全局后置钩子,进入路由之后

路由组件内的守卫

beforeRouteEnter():进入路由前
beforeRouteUpdate():路由复用同一个组件时
beforeRouteLeave():离开当前路由时

17. keep-alive的作用是什么?

包裹动态组件时,会缓存不活动的组件实例,而不是销毁它们

Vue中计算属性和监听器的不同点?

computed可以观察多个数据,watch只能是一个数据
computed生成一个新的数据,直接渲染至视图中,watch是修改本身已经存在的数据
computed不可以执行异步的,因为需要返回值,返回值是由js主线程控制,watch可以执行异步的,因为不需要返回数据,定时器是属于异步的线程
 

概念.概述

1.vue响应式原理:object.defineProperty

2.vue的作者尤雨溪,java出身.

3.vue是什么?以数据驱动视图的单页面(spa)渐进式MVVM框架, 特点是数据双向绑定.

4.模块化开发,解耦,为了不让所有的代码乱糟糟的,写在一个文件里,每个部分都是一个独立的文件(像积木一样,哪里使用,就引入到那里).目的是,好控制,代码量减少,代码进最大化复用.比如把轮播部分提出来,做成独立的插件,这种思想就是模块化

 vue的api组成部分

 data:存数据的,里面的数据被响应式监听.

 methods:写方法的,用于事件的回调函数

 components:注册子组件的

 name:当前组件的名称,名字必须和文件名一样.(递归组件是必须有name)

 watch:监听器,默认对监听的简单数据做响应,如果是数组或对象,需要开启深度监听

 computed:计算属性,对一个数据进行监听操作,并返回一个新的数据.默认是只读的,如需修改,使用set函数

 filter:过滤器,在不修改元数据的情况下,得到处理后得值,并可以用管道符`|`使用多个过滤器

 directive:自定义指令,用于指令扩展,例:给input框添加获取焦点

 生命周期8个函数.

 vue的指令

 -1.v-model :数据双向绑定

 -2.v-text :渲染文本

 -3.v-html :可用来渲染dom片段

 4.v-if v-else-if v-else :控制元素,加载与销毁

 5.v-show:控制元素,显示隐藏

 6.v-for:循环渲染,如果是对象,需要三个参数,值,键,下标

 7.v-bind:绑定属性的,缩写 : ,除了常规属性还可以绑定自定义属性

 8.v-on:绑定事件的,缩写 @ ,除了常规事件还可以绑定自定义事件

 9.v-once:让事件触发一次

修饰符

指令修饰符

    v-model: .lazy .trim .number

属性修饰符

    v-bind:data.sync 让子组件可以修改props

键盘修饰符

    .enter === .13

    .esc

    .ctrl

    .shift

事件修饰符                                

    .native:绑定原生事件,用在自定义组件上,如:饿了吗

    .left:点击事件加left是监听鼠标左键的

生命周期

    创建阶段:(第一次页面加载执行)

        1.beforeCreate

        2.created

    挂在阶段:(第一次页面加载执行)

        1.beforeMount

        2.mounted(页面打开后发起请求)

    更新阶段:(data或props修改时触发)

        1.beforeUpdate

        2.updated

    销毁阶段:

        1.beforeDestroy (清除全局数据,比如定时器)

        2.destroyed

内置组件

    component 动态加载组件  

    keep-alive 缓存组件状态 

    slot 插槽组件

    template 模板组件

 自定义组件

    所有.vue后置的文件都是自定义组件

 组建通信

父传子

父组件使用v-bind给子组件添加一个自定义属性,自定义属性接收一个数据,子组件使用props接收该数据 

子传父

父组件使用自定义函数向子组件传入一个函数,子组件使用$emit调用该函数,并传入数组,完成子传父通信

父子互相通信

使用.sync修饰符

使用v-model

跨级通信

vuex

 插槽

在自定义组件中传入dom片段.

语法:

父组件:`<My><div> 456 </div></My>`

子组件:`<slot/>`

插件开发

一个对象用install属性书写插件,该属性是一个函数,该函数接收Vue构造器.

安装插件用Vue.use()

{

    install:function{

        Vue.use("vue构造器")

    }

}

vuex是什么? 

一个专门为vue.js应用程序开发的状态管理插件.

vuex解决了什么?

多个组件依赖与统一状态时.来自不同组件的行为需要变更同意状态.

vuex使用与什么场景?

单页应用中,组件之间的状态.音乐播放,登录状态,加入购物车.

vuex有哪几种状态?

state,getters,mutations,actions,modules

vuex中状态存储在哪里?怎么改变?

存储在state中,改变vuex中的状态的唯一途径就是显示的提交(commit)mutation.

 vuex中状态是对象时,使用时需要注意什么?

对象是引用类型,复制后改变属性还是影响原始数据,这样会改变state里面的状态,是不允许,所以用深度克隆,复制对象,在修改.

vue的优缺点?

优点:轻量级框架、简单易学、双向数据绑定组件化、数据和结构的分离、虚拟DOM、运行速度快。

缺点:

1、VUE不支持IE8

2、生态环境差不如angular和react

3、社区不大

vuex的工作流程?

Vue组件(action里面的dispatch )--> actions(commit方法) -->mutations(Mutate)--> state(getter) -->store更新所有调用vuex的组件(Vue Component组件)

如何让CSS只在当前组件中起作用?

在组件中的style前面加上scoped

<keep-alive></keep-alive>的作用是什么?

keep-alive 是 Vue 内置的一个组件,可以使被包含的组件保留状态,或避免重新渲染。

如何获取dom? 

ref="domName" 用法:this.$refs.domName

vue-loader是什么?使用它的用途有哪些?

vue文件的一个加载器,将template/js/style转换成js模块。
用途:js可以写es6、style样式可以scss或less、template可以加jade等

v-modal的使用

v-model用于表单数据的双向绑定,其实它就是一个语法糖,这个背后就做了两个操作:
v-bind绑定一个value属性;
v-on指令给当前元素绑定input事件。

vue组件中data为什么必须是一个函数?

因为JavaScript的特性所导致,在component中,data必须以函数的形式存在,不可以是对象。
  组建中的data写成一个函数,数据以函数返回值的形式定义,这样每次复用组件的时候,都会返回一份新的data,相当于每个组件实例都有自己私有的数据空间,它们只负责各自维护的数据,不会造成混乱。而单纯的写成对象形式,就是所有的组件实例共用了一个data,这样改一个全都改了。

渐进式框架的理解?

主张最少;可以根据不同的需求选择不同的层级; 

Vue中双向数据绑定是如何实现的?

vue 双向数据绑定是通过 数据劫持 结合 发布订阅模式的方式来实现的, 也就是说数据和视图同步,数据发生变化,视图跟着变化,视图变化,数据也随之发生改变;
核心:关于VUE双向数据绑定,其核心是 Object.defineProperty()方法。

vue的两个核心点?

数据驱动、组件系统
数据驱动:ViewModel,保证数据和视图的一致性。
组件系统:应用类UI可以看作全部是由组件树构成的。

Vue-router跳转和location.href有什么区别?

使用location.href='/url'来跳转,简单方便,但是刷新了页面;
使用history.pushState('/url'),无刷新页面,静态跳转;
引进router,然后使用router.push('/url')来跳转,使用了diff算法,实现了按需加载,减少了dom的消耗。
其实使用router跳转和使用history.pushState()没什么差别的,因为vue-router就是用了history.pushState(),尤其是在history模式下。

 vue更新数组时触发视图更新的方法?

push();pop();shift();unshift();splice(); sort();reverse()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值