1. vue优点?
答:轻量级框架:只关注视图层,是一个构建数据的视图集合,大小只有几十kb;
简单易学:国人开发,中文文档,不存在语言障碍 ,易于理解和学习;
双向数据绑定:保留了angular的特点,在数据操作方面更为简单;
组件化:保留了react的优点,实现了html的封装和重用,在构建单页面应用方面有着独特的优势;
视图,数据,结构分离:使数据的更改更为简单,不需要进行逻辑代码的修改,只需要操作数据就能完成相关操作;
虚拟DOM:dom操作是非常耗费性能的, 不再使用原生的dom操作节点,极大解放dom操作,但具体操作的还是dom不过是换了另一种方式;
运行速度更快:相比较与react而言,同样是操作虚拟dom,就性能而言,vue存在很大的优势。
2.vue父组件向子组件传递数据?
答:通过props。
3.子组件像父组件传递事件?
答: e m i t 方 法 。 ∗ ∗ 4. v − s h o w 和 v − i f 指 令 的 共 同 点 和 不 同 点 ? ∗ ∗ 答 : 共 同 点 : 都 能 控 制 元 素 的 显 示 和 隐 藏 ; 不 同 点 : 实 现 本 质 方 法 不 同 , v − s h o w 本 质 就 是 通 过 控 制 c s s 中 的 d i s p l a y 设 置 为 n o n e , 控 制 隐 藏 , 只 会 编 译 一 次 ; v − i f 是 动 态 的 向 D O M 树 内 添 加 或 者 删 除 D O M 元 素 , 若 初 始 值 为 f a l s e , 就 不 会 编 译 了 。 而 且 v − i f 不 停 的 销 毁 和 创 建 比 较 消 耗 性 能 。 总 结 : 如 果 要 频 繁 切 换 某 节 点 , 使 用 v − s h o w ( 切 换 开 销 比 较 小 , 初 始 开 销 较 大 ) 。 如 果 不 需 要 频 繁 切 换 某 节 点 使 用 v − i f ( 初 始 渲 染 开 销 较 小 , 切 换 开 销 比 较 大 ) 。 ∗ ∗ 5. 如 何 让 C S S 只 在 当 前 组 件 中 起 作 用 ? ∗ ∗ 答 : 在 组 件 中 的 s t y l e 前 面 加 上 s c o p e d ∗ ∗ 6. < k e e p − a l i v e > < / k e e p − a l i v e > 的 作 用 是 什 么 ? 答 : k e e p − a l i v e 是 V u e 内 置 的 一 个 组 件 , 可 以 使 被 包 含 的 组 件 保 留 状 态 , 或 避 免 重 新 渲 染 , 当 组 件 切 换 时 不 会 对 当 前 组 件 进 行 卸 载 。 k e e p − a l i v e 属 性 : i n c l u d e − 字 符 串 或 正 则 表 达 式 。 只 有 匹 配 的 组 件 会 被 缓 存 。 e x c l u d e − 字 符 串 或 正 则 表 达 式 。 任 何 匹 配 的 组 件 都 不 会 被 缓 存 。 7. 如 何 获 取 d o m ? 答 : r e f = " d o m N a m e " 用 法 : t h i s . emit方法。 **4.v-show和v-if指令的共同点和不同点?** 答: 共同点:都能控制元素的显示和隐藏; 不同点:实现本质方法不同,v-show本质就是通过控制css中的display设置为none,控制隐藏,只会编译一次;v-if是动态的向DOM树内添加或者删除DOM元素,若初始值为false,就不会编译了。而且v-if不停的销毁和创建比较消耗性能。 总结:如果要频繁切换某节点,使用v-show(切换开销比较小,初始开销较大)。如果不需要频繁切换某节点使用v-if(初始渲染开销较小,切换开销比较大)。 **5.如何让CSS只在当前组件中起作用?** 答:在组件中的style前面加上scoped **6.<keep-alive></keep-alive>的作用是什么? 答:keep-alive 是 Vue 内置的一个组件,可以使被包含的组件保留状态,或避免重新渲染,当组件切换时不会对当前组件进行卸载。keep-alive属性: include - 字符串或正则表达式。只有匹配的组件会被缓存。 exclude - 字符串或正则表达式。任何匹配的组件都不会被缓存。 7.如何获取dom? 答:ref="domName" 用法:this. emit方法。∗∗4.v−show和v−if指令的共同点和不同点?∗∗答:共同点:都能控制元素的显示和隐藏;不同点:实现本质方法不同,v−show本质就是通过控制css中的display设置为none,控制隐藏,只会编译一次;v−if是动态的向DOM树内添加或者删除DOM元素,若初始值为false,就不会编译了。而且v−if不停的销毁和创建比较消耗性能。总结:如果要频繁切换某节点,使用v−show(切换开销比较小,初始开销较大)。如果不需要频繁切换某节点使用v−if(初始渲染开销较小,切换开销比较大)。∗∗5.如何让CSS只在当前组件中起作用?∗∗答:在组件中的style前面加上scoped∗∗6.<keep−alive></keep−alive>的作用是什么?答:keep−alive是Vue内置的一个组件,可以使被包含的组件保留状态,或避免重新渲染,当组件切换时不会对当前组件进行卸载。keep−alive属性:include−字符串或正则表达式。只有匹配的组件会被缓存。exclude−字符串或正则表达式。任何匹配的组件都不会被缓存。7.如何获取dom?答:ref="domName"用法:this.refs.domName
8.说出几种vue当中的指令和它的用法?
答:v-model双向数据绑定;
v-for循环;
v-if v-show 显示与隐藏;
v-on事件;v-once: 只绑定一次。
9. vue-loader是什么?使用它的用途有哪些?
答:vue文件的一个加载器,将template/js/style转换成js模块。
用途:js可以写es6、style样式可以scss或less、template可以加jade等
10.v-for中为什么要使用key?
答:需要使用key来给每个节点做一个唯一标识,Diff算法就可以正确的识别此节点。
作用主要是为了高效的更新虚拟DOM。
11.axios及安装?
答:请求后台资源的模块。npm install axios --save装好,
js中使用import进来,然后.get或.post。返回在.then函数中如果成功,失败则是在.catch函数中。
12.v-model的使用。
答:v-model用于表单数据的双向绑定,其实它就是一个语法糖,这个背后就做了两个操作:
v-bind绑定一个value属性;
v-on指令给当前元素绑定input事件。
13.请说出vue.cli项目中src目录每个文件夹和文件的用法?
答:assets文件夹是放静态资源;components是放组件;router是定义路由相关的配置; app.vue是一个应用主组件;main.js是入口文件。
14.分别简述computed和watch的使用场景
答:computed:
    当一个属性受多个属性影响的时候就需要用到computed
    最典型的栗子: 购物车商品结算的时候
watch:
    当一条数据影响多条数据的时候就需要用watch
    栗子:搜索数据
计算属性computed:

  1. 支持缓存,只有依赖数据发生改变,才会重新进行计算
  2. 不支持异步,当computed内有异步操作时无效,无法监听数据的变化
  3. computed 属性值会默认走缓存,计算属性是基于它们的响应式依赖进行缓存的,也就是基于data中声明过或者父组件传递的props中的数据通过计算得到的值
    侦听属性watch:
  4. 不支持缓存,数据变,直接会触发相应的操作
  5. watch支持异步;
  6. 监听的函数接收两个参数,第一个参数是最新的值;第二个参数是输入之前的值;
    适用场景
    • computed 适⽤于计算⽐较消耗性能的计算场景
    • 当我们要进⾏数值计算,⽽且依赖于其他数据,那么把这个数据设计为computed
    • 如果你需要在某个数据变化时做⼀些事情,使⽤watch来观察这个数据变化

15.v-on可以监听多个方法吗?
答:可以,栗子:。
**16. n e x t T i c k 的 使 用 ∗ ∗ 答 : 当 你 修 改 了 d a t a 的 值 然 后 马 上 获 取 这 个 d o m 元 素 的 值 , 是 不 能 获 取 到 更 新 后 的 值 , 你 需 要 使 用 nextTick的使用** 答:当你修改了data的值然后马上获取这个dom元素的值,是不能获取到更新后的值, 你需要使用 nextTick的使用∗∗答:当你修改了data的值然后马上获取这个dom元素的值,是不能获取到更新后的值,你需要使用nextTick这个回调,让修改后的data值在dom元素渲染更新之后在获取,才能成功。
17.vue组件中data为什么必须是一个函数?
答:因为JavaScript的特性所导致,在component中,data必须以函数的形式存在,不可以是对象。
  组建中的data写成一个函数,数据以函数返回值的形式定义,这样每次复用组件的时候,都会返回一份新的data,相当于每个组件实例都有自己私有的数据空间,它们只负责各自维护的数据,不会造成混乱。而单纯的写成对象形式,就是所有的组件实例共用了一个data,这样改一个全都改了。
18.渐进式框架的理解
答:主张最少;可以根据不同的需求选择不同的层级;
19.Vue中双向数据绑定是如何实现的?
答:vue 双向数据绑定是通过 数据劫持 结合 发布订阅模式的方式来实现的, 也就是说数据和视图同步,数据发生变化,视图跟着变化,视图变化,数据也随之发生改变;
核心:关于VUE双向数据绑定,其核心是 Object.defineProperty()方法。
20.单页面应用和多页面应用区别及优缺点
答:单页面应用(SPA),通俗一点说就是指只有一个主页面的应用,浏览器一开始要加载所有必须的 html, js, css。所有的页面内容都包含在这个所谓的主页面中。但在写的时候,还是会分开写(页面片段),然后在交互的时候由路由程序动态载入,单页面的页面跳转,仅刷新局部资源。多应用于pc端。
多页面(MPA),就是指一个应用中有多个页面,页面跳转时是整页刷新
单页面的优点:
用户体验好,快,内容的改变不需要重新加载整个页面,基于这一点spa对服务器压力较小;前后端分离;页面效果会比较炫酷(比如切换页面内容时的专场动画)。
单页面缺点:
不利于seo;导航不可用,如果一定要导航需要自行实现前进、后退。(由于是单页面不能用浏览器的前进后退功能,所以需要自己建立堆栈管理);初次加载时耗时多;页面复杂度提高很多。
21.v-if和v-for的优先级
答:当 v-if 与 v-for 一起使用时,v-for 具有比 v-if 更高的优先级,这意味着 v-if 将分别重复运行于每个 v-for 循环中。所以,不推荐v-if和v-for同时使用。
如果v-if和v-for一起用的话,vue中的会自动提示v-if应该放到外层去。
22.assets和static的区别
答:相同点:assets和static两个都是存放静态资源文件。项目中所需要的资源文件图片,字体图标,样式文件等都可以放在这两个文件下,这是相同点
不相同点:assets中存放的静态资源文件在项目打包时,也就是运行npm run build时会将assets中放置的静态资源文件进行打包上传,所谓打包简单点可以理解为压缩体积,代码格式化。而压缩后的静态资源文件最终也都会放置在static文件中跟着index.html一同上传至服务器。static中放置的静态资源文件就不会要走打包压缩格式化等流程,而是直接进入打包好的目录,直接上传至服务器。因为避免了压缩直接进行上传,在打包时会提高一定的效率,但是static中的资源文件由于没有进行压缩等操作,所以文件的体积也就相对于assets中打包后的文件提交较大点。在服务器中就会占据更大的空间。
建议:将项目中template需要的样式文件js文件等都可以放置在assets中,走打包这一流程。减少体积。而项目中引入的第三方的资源文件如iconfoont.css等文件可以放置在static中,因为这些引入的第三方文件已经经过处理,我们不再需要处理,直接上传。
23.vue常用的修饰符
答:.stop:等同于JavaScript中的event.stopPropagation(),防止事件冒泡;
.prevent:等同于JavaScript中的event.preventDefault(),防止执行预设的行为(如果事件可取消,则取消该事件,而不停止事件的进一步传播);
.capture:与事件冒泡的方向相反,事件捕获由外到内;
.self:只会触发自己范围内的事件,不包含子元素;
.once:只会触发一次。
24.vue的两个核心点
答:数据驱动、组件系统
数据驱动:ViewModel,保证数据和视图的一致性。
组件系统:应用类UI可以看作全部是由组件树构成的。
25.vue和jQuery的区别
答:jQuery是使用选择器( ) 选 取 D O M 对 象 , 对 其 进 行 赋 值 、 取 值 、 事 件 绑 定 等 操 作 , 其 实 和 原 生 的 H T M L 的 区 别 只 在 于 可 以 更 方 便 的 选 取 和 操 作 D O M 对 象 , 而 数 据 和 界 面 是 在 一 起 的 。 比 如 需 要 获 取 l a b e l 标 签 的 内 容 : )选取DOM对象,对其进行赋值、取值、事件绑定等操作,其实和原生的HTML的区别只在于可以更方便的选取和操作DOM对象,而数据和界面是在一起的。比如需要获取label标签的内容: )选取DOM对象,对其进行赋值、取值、事件绑定等操作,其实和原生的HTML的区别只在于可以更方便的选取和操作DOM对象,而数据和界面是在一起的。比如需要获取label标签的内容:(“lable”).val();,它还是依赖DOM元素的值。
Vue则是通过Vue对象将数据和View完全分离开来了。对数据进行操作不再需要引用相应的DOM对象,可以说数据和View是分离的,他们通过Vue对象这个vm实现相互的绑定。这就是传说中的MVVM。
26. 引进组件的步骤
答: 在template中引入组件;
在script的第一行用import引入路径;
用component中写上组件名称。
27.delete和Vue.delete删除数组的区别
答:delete只是被删除的元素变成了 empty/undefined 其他的元素的键值还是不变。Vue.delete 直接删除了数组 改变了数组的键值。
28.SPA首屏加载慢如何解决
答:安装动态懒加载所需插件;使用CDN资源。
29.Vue-router跳转和location.href有什么区别
答:使用location.href=’/url’来跳转,简单方便,但是刷新了页面;
使用history.pushState(’/url’),无刷新页面,静态跳转;
引进router,然后使用router.push(’/url’)来跳转,使用了diff算法,实现了按需加载,减少了dom的消耗。
其实使用router跳转和使用history.pushState()没什么差别的,因为vue-router就是用了history.pushState(),尤其是在history模式下。
30. vue slot的作用
答:简单来说,假如父组件需要在子组件内放一些DOM,那么这些DOM是显示、不显示、在哪个地方显示、如何显示,就是slot分发负责的活。
31.你们vue项目是打包了一个js文件,一个css文件,还是有多个文件?
答:根据vue-cli脚手架规范,一个js文件,一个CSS文件。
32.Vue里面router-link在电脑上有用,在安卓上没反应怎么解决?
答:Vue路由在Android机上有问题,babel问题,安装babel polypill插件解决。
33.Vue2中注册在router-link上事件无效解决方法
答: 使用@click.native。原因:router-link会阻止click事件,.native指直接监听一个原生事件。
34.RouterLink在IE和Firefox中不起作用(路由不跳转)的问题
答: 方法一:只用a标签,不适用button标签;方法二:使用button标签和Router.navigate方法
35.axios的特点有哪些
答:从浏览器中创建XMLHttpRequests;
node.js创建http请求;
支持Promise API;
拦截请求和响应;
转换请求数据和响应数据;
取消请求;
自动换成json。
axios中的发送字段的参数是data跟params两个,两者的区别在于params是跟请求地址一起发送的,data的作为一个请求体进行发送
params一般适用于get请求,data一般适用于post put 请求。
36.请说下封装 vue 组件的过程?
答:1. 建立组件的模板,先把架子搭起来,写写样式,考虑好组件的基本逻辑。(os:思考1小时,码码10分钟,程序猿的准则。)
  2. 准备好组件的数据输入。即分析好逻辑,定好 props 里面的数据、类型。
  3. 准备好组件的数据输出。即根据组件逻辑,做好要暴露出来的方法。
  4. 封装完毕了,直接调用即可
37.params和query的区别
答:用法:query要用path来引入,params要用name来引入,接收参数都是类似的,分别是this. r o u t e . q u e r y . n a m e 和 t h i s . route.query.name和this. route.query.name和this.route.params.name。
url地址显示:query更加类似于我们ajax中get传参,params则类似于post,说的再简单一点,前者在浏览器地址栏中显示参数,后者则不显示
注意点:query刷新不会丢失query里面的数据
params刷新 会 丢失 params里面的数据。
38.vue初始化页面闪动问题
答:使用vue开发时,在vue初始化之前,由于div是不归vue管的,所以我们写的代码在还没有解析的情况下会容易出现花屏现象,看到类似于{{message}}的字样,虽然一般情况下这个时间很短暂,但是我们还是有必要让解决这个问题的。
首先:在css里加上[v-cloak] {
display: none;
}。
如果没有彻底解决问题,则在根元素加上style=“display: none;” :style="{display: ‘block’}"
39.vue更新数组时触发视图更新的方法
答:push();pop();shift();unshift();splice(); sort();reverse()
40.vue常用的UI组件库
答:Mint UI,element,VUX
41.vue修改打包后静态资源路径的修改
答:cli2版本:将 config/index.js 里的 assetsPublicPath 的值改为 ‘./’ 。
build: {

assetsPublicPath: ‘./’,

}
cli3版本:在根目录下新建vue.config.js 文件,然后加上以下内容:(如果已经有此文件就直接修改)
module.exports = {
publicPath: ‘’, // 相对于 HTML 页面(目录相同) }
42.如何实现vue的响应式
Vue的响应式是vue用来实现UI的核心原理,核心思路:当用户改变数据时,UI自动更新
怎么实现:数据代理和数据劫持,用object.defaultProperty()方法
优点:用户不需要操作dom就可以完成UI制作
缺点:vue使用的API是有缺陷的,导致vue在新增属性的时候,没有办法做到响应式,这个问题直到vue3中才解决

43.生命周期函数面试题

1.什么是 vue 生命周期?有什么作用? 答:每个 Vue 实例在被创建时都要经过一系列的初始化过程——例如,需要设置数据监听、编译模板、将实例挂载到 DOM 并在数据变化时更新 DOM 等。同时在这个过程中也会运行一些叫做 生命周期钩子 的函数,这给了用户在不同阶段添加自己的代码的机会。(ps:生命周期钩子就是生命周期函数)例如,如果要通过某些插件操作DOM节点,如想在页面渲染完后弹出广告窗, 那我们最早可在mounted 中进行。 2.第一次页面加载会触发哪几个钩子? 答:beforeCreate, created, beforeMount, mounted 3.简述每个周期具体适合哪些场景 答:beforeCreate:在new一个vue实例后,只有一些默认的生命周期钩子和默认事件,其他的东西都还没创建。在beforeCreate生命周期执行的时候,data和methods中的数据都还没有初始化。不能在这个阶段使用data中的数据和methods中的方法 create:data 和 methods都已经被初始化好了,如果要调用 methods 中的方法,或者操作 data 中的数据,最早可以在这个阶段中操作 beforeMount:执行到这个钩子的时候,在内存中已经编译好了模板了,但是还没有挂载到页面中,此时,页面还是旧的 mounted:执行到这个钩子的时候,就表示Vue实例已经初始化完成了。此时组件脱离了创建阶段,进入到了运行阶段。 如果我们想要通过插件操作页面上的DOM节点,最早可以在和这个阶段中进行 beforeUpdate: 当执行这个钩子时,页面中的显示的数据还是旧的,data中的数据是更新后的, 页面还没有和最新的数据保持同步 updated:页面显示的数据和data中的数据已经保持同步了,都是最新的 beforeDestory:Vue实例从运行阶段进入到了销毁阶段,这个时候上所有的 data 和 methods , 指令, 过滤器 ……都是处于可用状态。还没有真正被销毁 destroyed: 这个时候上所有的 data 和 methods , 指令, 过滤器 ……都是处于不可用状态。组件已经被销毁了。 4.created和mounted的区别 答:created:在模板渲染成html前调用,即通常初始化某些属性值,然后再渲染成视图。 mounted:在模板渲染成html后调用,通常是初始化页面完成后,再对html的dom节点进行一些需要的操作。 5.vue获取数据在哪个周期函数 答:一般 created/beforeMount/mounted 皆可. 比如如果你要操作 DOM , 那肯定 mounted 时候才能操作. 6.请详细说下你对vue生命周期的理解? 答:总共分为8个阶段创建前/后,载入前/后,更新前/后,销毁前/后。 创建前/后: 在beforeCreated阶段,vue实例的挂载元素$el和**数据对象**data都为undefined,还未初始化。在created阶段,vue实例的数据对象data有了,$el还没有。 载入前/后:在beforeMount阶段,vue实例的$el和data都初始化了,但还是挂载之前为虚拟的dom节点,data.message还未替换。在mounted阶段,vue实例挂载完成,data.message成功渲染。 更新前/后:当data变化时,会触发beforeUpdate和updated方法。 销毁前/后:在执行destroy方法后,对data的改变不会再触发周期函数,说明此时vue实例已经解除了事件监听以及和dom的绑定,但是dom结构依然存在。 vue路由面试题 **44.mvvm 框架是什么** 答:vue是实现了双向数据绑定的mvvm框架,当视图改变更新模型层,当模型层改变更新视图层。在vue中,使用了双向绑定技术,就是View的变化能实时让Model发生变化,而Model的变化也能实时更新到View。

45.vue-router 是什么?它有哪些组件

答:vue用来写路由一个插件。router-link、router-view 3.active-class 是哪个组件的属性? 答:vue-router模块的router-link组件。children数组来定义子路由 4.怎么定义 vue-router 的动态路由? 怎么获取传过来的值? 答:在router目录下的index.js文件中,对path属性加上/:id。 使用router对象的params.id。

46.vue-router 有哪几种导航钩子?

答:三种, 第一种:是全局导航钩子:router.beforeEach(to,from,next),作用:跳转前进行判断拦截。 第二种:组件内的钩子 第三种:单独路由独享组件

47.$route 和 $router 的区别

答:$router是VueRouter的实例,在script标签中想要导航到不同的URL,使用$router.push方法。相当于一个全局的路由器对象,里面包含有很多属性和子对象。 $route为当前router跳转对象。里面可以获取当前路由的name,path,query,parmas等。

48.vue-router的两种模式

hash模式:hash虽然在URL中,但不被包括在HTTP请求中,而且在url地址栏中有#符号 用来指导浏览器动作,对服务端安全无用,hash不会重新加载页面 History模式:HTML5推出的history API,里面有pushState() 和 replaceState()方法,由pushState()记录操作历史,由popstate事件来监听到状态变更;

49.vue-router实现路由懒加载( 动态加载路由 )

答:三种方式 第一种:vue异步组件技术 ==== 异步加载,vue-router配置路由 , 使用vue的异步组件技术 , 可以实现按需加载 .但是,这种情况下一个组件生成一个js文件。 第二种:路由懒加载(使用import)。 第三种:webpack提供的require.ensure(),vue-router配置路由,使用webpack的require.ensure技术,也可以实现按需加载。这种情况下,多个路由指定相同的chunkName,会合并打包成一个js文件。

vuex常见面试题

1.vuex是什么?怎么使用?哪种功能场景使用它?

答:vue框架中状态管理。在main.js引入store,注入。 新建了一个目录store.js,….. export 。 场景有:单页应用中,组件之间的状态。音乐播放、登录状态、加入购物车

2.vuex有哪几种属性?

答:有五种,分别是 State、 Getter、Mutation 、Action、 Module state => 基本数据(数据源存放地) getters => 从基本数据派生出来的数据 mutations => 提交更改数据的方法,同步! actions => 像一个装饰器,包裹mutations,使之可以异步。 modules => 模块化Vuex

3.Vue.js中ajax请求代码应该写在组件的methods中还是vuex的actions中?

答:如果请求来的数据是不是要被其他组件公用,仅仅在请求的组件内使用,就不需要放入vuex 的state里。 如果被其他地方复用,这个很大几率上是需要的,如果需要,请将请求放入action里,方便复用。

生命周期钩子是如何实现的?

核心答案: Vue的生命周期钩子就是回调函数而已,当创建组件实例的过程中会调用对应的钩子方法。 补充回答: 内部主要是使用callHook方法来调用对应的方法。核心是一个发布订阅模式,将钩子订阅好(内部采用数组的方式存储),在对应的阶段进行发布。

v-if 和 v-for 为什么不建议一起使用

v-for和v-if不要在同一标签中使用,因为解析时先解析v-for在解析v-if。如果遇到需要同时使用时可以考虑写成计算属性的方式。

Vuex 页面刷新数据丢失怎么解决?

需要做 vuex 数据持久化,一般使用本地储存的方案来保存数据,可以自己设计存储方案,也可以使用第三方插件。 推荐使用 vuex-persist (脯肉赛斯特)插件,它是为 Vuex 持久化储存而生的一个插件。不需要你手动存取 storage,而是直接将状态保存至 cookie 或者 localStorage中。

Vue 为什么需要虚拟DOM? 虚拟DOM的优劣如何?

核心答案: Virtual DOM 就是用js对象来描述真实DOM,是对真实DOM的抽象,由于直接操作DOM性能低但是js层的操作效率高,可以将DOM操作转化成对象操作,最终通过diff算法比对差异进行更新DOM (减少了对真实DOM的操作)。虚拟DOM不依赖真实平台环境从而也可以实现跨平台。 Vue 中的diff原理 核心答案: vue的diff算法是平级比较,不考虑跨级比较的情况。内部采用深度递归的方式 + 双指针的方式进行比较。 如何理解自定义指令? 核心答案: 指令的实现原理,可以从编译原理 =>代码生成=> 指令钩子实现进行概述 1、在生成 ast 语法树时,遇到指令会给当前元素添加directives属性 2、通过 genDirectives 生成指令代码 3、在patch前将指令的钩子提取到 cbs中,在patch过程中调用对应的钩子。 4、当执行指令对应钩子函数时,调用对应指令定义的方法

vue-router的几种导航守卫

1.全局前置守卫 2.全局解析守卫 3.全局后置守卫 4.路由独享的守卫 5.组件内的守卫

美女都在背的vue面试题,面试必备相关推荐

  1. JVM面试题(面试必备)

    文章目录 JVM面试题 1.内存模型以及分区,需要详细到每个区放什么. 2. 堆里面的分区:Eden,survival (from+ to),老年代,各自的特点. 3. GC 的两种判定方法 4. M ...

  2. spring boot +vue用什么记录登录状态_2019年web前端Vue面试题总结

    点击右上方红色按钮关注"web秀",让你真正秀起来 面试必备:2019Vue经典面试题总结(含答案) 一.什么是MVVM? MVVM是Model-View-ViewModel的缩写 ...

  3. 游戏必备组件有哪些_面试必备:2019Vue经典面试题总结(含答案)

    点击右上方红色按钮关注"web秀",让你真正秀起来 面试必备:2019Vue经典面试题总结(含答案) 一.什么是MVVM? MVVM是Model-View-ViewModel的缩写 ...

  4. 2020年Vue面试题汇总

    2020年Vue面试题 Interview ●●●● 作者:@烦恼会解决烦恼 vue核心知识--理论篇 1.对于Vue是一套渐进式框架的理解 渐进式代表的含义是:主张最少. Vue可能有些方面是不如R ...

  5. dom不刷新 vue 加数据后_高频出现的Vue 面试题及答案

    前言 本文讲解高频出现的 Vue 面试题及答案. 复习前端面试的知识,是为了巩固前端的基础知识,最重要的还是平时的积累! 注意:文章的题与题之间用下划线分隔开,答案仅供参考. Vue 对 MVC.MV ...

  6. 常见的前端vue面试题

    常见的前端vue面试题 1.请讲述下VUE的MVVM的理解? MVVM 是 Model-View-ViewModel的缩写,即将数据模型与数据表现层通过数据驱动进行分离,从而只需要关系数据模型的开发, ...

  7. antd vue 树更新数据后不展开_很全面的vue面试题总结

    VUE面试题 v-show 与 v-if 区别 动态绑定class的方法 计算属性和 watch 的区别 怎样理解单向数据流 keep-alive 自定义组件的语法糖 v-model 是怎样实现的 生 ...

  8. Vue面试题 70道题目及答案

    Vue面试题 Vue.js介绍 Vue.js是一个轻巧.高性能.可组件化的MVVM库,同时拥有非常容易上手的API Vue.js是一个构建数据驱动的Web界面的库. Vue.js是一套构建用户界面的 ...

  9. web开发者工具,118页Vue面试题总结,涨姿势!

    逻辑运算符 JavaScript中有三个逻辑运算符,&&与.||或.!非. JavaScript 中的逻辑运算符可用来确定变量或者是值之间的逻辑关系.通常用于布尔型值,会返回一个布尔值 ...

最新文章

  1. IOS长按识别二维码失败
  2. 一句话总结LLE(流形学习)
  3. sql数据库基础知识整理,常用函数及常用语法
  4. docker 安装 mysql和Navicat Premium 远程连接
  5. 【CVPR2019】Workshops 研讨会列表及链接
  6. 今天被BSE指摘了2个问题,感觉很典型
  7. forEach,for in,for of循环的用法
  8. 漫游项目服务器,漫游Radius服务器的设计与实现
  9. 怎么隐藏电脑桌面计算机,怎么隐藏电脑桌面软件
  10. varbinary mysql_MySQL中的数据类型binary和varbinary详解
  11. 使用“网吧卫士”实现网吧带宽完美管理(转)
  12. 猿创征文 | 国产数据库之南大通用数据库详解安装和使用
  13. java ftp 250状态码_FTP状态码
  14. 使用matlab作单位阶跃响应,基于MATLAB的控制系统单位阶跃响应分析[共7页]
  15. MTCNN论文翻译 人脸检测
  16. 零基础学Python需要用到哪些软件?
  17. VSCode 修改系统界面和编辑面板字体大小
  18. 参加AKM DSP芯片代理培训
  19. 解决谷歌的but your computer or network may be sending automated queries
  20. 电脑技巧:原版Windows系统与Ghost系统的区别

热门文章

  1. 不通过网页版微信如何制作微信机器人
  2. 侦察系列之杀猪盘作案流程
  3. 【小卜学编程】Python面试知识点梳理——一些废话以及知识点分类(一)
  4. 算法设计与分析——顺序统计量:期望为线性时间的选择算法
  5. 一加官网 一加官网首页 OnePlus
  6. 计算机网络:第3章 数据链路层
  7. linux三种不同的防火墙设置
  8. c语言实验报告第四章答案,理工大学2010C语言实验报告参考答案
  9. 文件名批量转换为拼音名
  10. Ubuntu Wine 微信 QQ等工具出现字体变方框的解决方案