美文网首页
VUE面试题

VUE面试题

作者: geeklibin | 来源:发表于2020-06-30 12:55 被阅读0次

Q1、Vue.js核心是什么?

数据驱动,组件化。

Q2、Vue生命周期钩子函数有哪些?

created/beforeCreate;创建前/后

mounted/beforeMounted;载入前/后

update/beforeUpdate;更新前/后

destroy/beforeDestroy;销毁前/后

Q3、Vue中created与mounted的区别?

created:当组件实例创建后被立即调用,可以进行获取数据,初始化一些属性值;

mounted:当Dom渲染后调用,可以进行dom节点操作;

Q4、Vue中v-if和v-show的共同点和区别?

共同点:都能显示隐藏元素;

不同点:

v-if根据条件真假直接从dom上删除或 重建组件节点,切换时会销毁或重建内部的事件监听和子组件,切换有更高的性能消耗,不适合频繁切换。v-if是惰性的,条件为false时什么也不做。

v-show根据条件真假从而更改元素css样式的display属性。适合频繁切换。

Q5、Vue中常用的修饰符?

按键修饰符:.delete、enter、tab、esc、up、down、left、right、space;

事件修饰符:stop(阻止事件传播)、prevent(阻止表单提交)、capture(使用事件捕获)、self(跳过冒泡和捕获阶段,仅在元素自身的事件才可执行)、once(让事件只执行一次)

表单修饰符:.number(用户输入转为数值类型)、.trim(自动过滤用户输入的首尾空白符)

Q6、v-on可以监听多个方法吗?

可以

Q7、元素节点上的key属性的作用?

元素的唯一表示,为了更高效的更新虚拟dom。

Q8、vue-cli项目,如何升级vue版本?

项目目录里运行 npm upgrade vue vue-template-compiler,不出意外的话,可以正常运行和 build。如果有任何问题,删除 node_modules 文件夹然后重新运行 npm i 即可。

Q9、Vue中的data为什么必须是一个函数?

写成函数是为了组件(实例)的每次被复用,返回一份新的data,让每个实例都有一个独立的数据空间;

如果是一个对象的形式,就会产生所有的组件实例都用一份data,从而导致一个组件变了所有组件都变了。这是js特性,与vue设计无关;

Q10、v-for 与 v-if 的优先级?

v-for 优先级高于 v-if;过滤列表时建议将数据列表使用计算属性(computed)替换,返回过滤后的列表。

Q11、vue子组件如何调用父组件的方法?

方法一:$parent;子组件直接使用 $parent 调用父级方法;

方法二:props;父组件添加自定义属性传入方法名,子组件定义props然后直接调用属性名;

方法三:$emit;父组件对子组件添加事件监听,传入方法名,子组件使用$emit('事件名')调用。

第一种不推荐,一般使用第三种;

Q12、keep-alive组件的作用?

保留组件状态避免重新渲染。接受两个属性,include:字符串或正则,只有匹配的组件会被缓存。exclude:匹配的组件不缓存;

Q13、vue-loader的作用?

vue文件的加载器,将template、style、script转换成js模块。

Q14、vue slot的作用?

slot插槽;父组件需要在子组件内放入一些DOM时,这些dom如何显示,是否显示,在哪里显示,由slot负责分发。

Q15、location.href和vue-router有什么区别?

location.href用来进行url跳转,可跳转至其他站点网址,简单方便,但是刷新了页面。

vue-router跳转无刷新页面,静态调转,使用了diff算法,实现了按需加载,减少了dom消耗,原理和history.pushState()类似;

Q16、如何解决vue初始化dom时,页面闪动,出现{{ message }}变量名的现象?

使用v-cloak这个指令可以防止页面加载时出现vuejs变量名而设计的,

[v-cloak]{

display:none!important;

}

Q17、vue和jquery的区别?

jquery使用选择器对DOM进行选择,然后进行一系列操作,数据(M)和界面(V)是在一起的;

vue则是MVVM框架,通过vue将数据和视图完全分离开来了。、

Q18、params和query的区别?

使用方法类似,都是用于页面间传递数据。

query类似于get请求,参数会在地址栏中显示,使用query刷新页面不会丢失query参数。

params参数不会在地址栏中显示,使用params刷新页面会丢失params参数,params参数名需要在路由中定义。

Q19、vue常见的UI组件库?

element-ui、vux、vant、ant-design、iview、mint-ui。。

Q20、什么是MVVM?

模型(Model)-视图(View)-视图模型(ViewModel)

让view的变化能实时让model发生变化,model变化也能更新到view。

Q21、vue-router是什么?有哪些组件?

用于编写路由的插件。组件有router-link、router-view。

Q22、$router和$route的区别?

$router是Vue-Router的实例,常见有push、replace、to等方法。

$route是当前路由跳转的对象,可以通过$route获取当前路由的name\path\query\params等。

Q23、vue-router的两种模式?

history和hash;

Q24、VUEX是什么?一般用于哪些场景?

vue中状态管理的框架。用于单页应用中,共享组件之间的状态和数据,常用场景有登录、购物车等。

Q25、VUE请求数据的代码?应该写在vuex的actions中还是组件的methods中?

如果请求的数据要被其他地方复用,建议放入actions中。如果仅仅是组件内部使用就不要放入vuex。

Q26、VUEX如何实现刷新页面数据不丢失(数据持久化)?

vuex中存储的state会在刷新后被浏览器释放掉,因为state保存在内存中,可以使用vuex-persistedstate插件来实现将数据存储至本地。

Q27、什么是promise?

promise是异步编程问题的一种解决方案,避免多级异步操作的回调嵌套,支持多个并发请求,用来对异步执行结果的描述。promise有3种状态:pending等待、fulfilled成功、rejected失败;

Q28、vue中如何获取/操作dom?

给元素加ref属性,ref="domName",用法:this.$refs.domName

Q29、Vue全家桶有哪些?

vue、vue-router、vuex、vue-cli、vue-resource;

Q30、Vue单页如何优化首屏加载?

1、按需加载

2、异步组件

3、优化组件加载时机

相关文章

网友评论

      本文标题:VUE面试题

      本文链接:https://www.haomeiwen.com/subject/naeatktx.html