Vue经典面试题

92 阅读2分钟

v-show 与 v-if 的区别?

  • v-show指令是通过修改元素的displayCSS属性让其显示或者隐藏;
  • v-if指令是直接销毁重建DOM达到让元素显示和隐藏的效果;
  • 使用v-show会更加节省性能上的开销;当只需要一次显示或隐藏时,使用v-if更加合理。

组件之间的传值?

  • 父组件通过标签上:data=data方式定义传值
  • 子组件通过props方法接受数据
  • 子组件通过$emit方法传递参数

vue 优点?

  • 低耦合。视图(View)可以独立于Model变化和修改,一个ViewModel可以绑定到不同的"View"上,当View变化的时候Model可以不变,当Model变化的时候View也可以不变。

  • 可重用性。可以把一些视图逻辑放在一个ViewModel里面,让很多view重用这段视图逻辑。

  • 独立开发。开发人员可以专注于业务逻辑和数据的开发(ViewModel),设计人员可以专注于页面设计。

  • 可测试。界面素来是比较难于测试的,而现在测试可以针对ViewModel来写。

列举出3个 Vue 中常用的生命周期钩子函数

  • created: 实例创建完成之后调用,在这一步,实例已经完成数据观测、 属性和方法的运算、watch/event事件回调。然而,挂载阶段还没有开始, $el属性目前还不可见。

  • mounted: el被新创建的 vm.el替换,并挂载到实例上去之后调用该钩子。如果root实例挂载了一个文档内元素,当mounted被调用时vm.el 替换,并挂载到实例上去之后调用该钩子。如果 root 实例挂载了一个文档内元素,当 mounted 被调用时 vm.el 也在文档内。

  • activated: keep-alive组件激活时调用。

scss 是什么?在 vue.cli 中的安装使用步骤?有哪几大特性?

css的预编译语言。

使用步骤:

第一步:先装css-loader、node-loader、sass-loader等加载器模块;

第二步:在build目录找到webpack.base.config.js,在extends属性中加一个拓展.scss;

第三步:在同一个文件,配置一个module属性;

第四步:然后在组件的style标签加上lang属性 ,例如:lang=”scss”;

特性:

可以用变量,例如($变量名称=值);

可以用混合器;

可以嵌套;

页面渲染为什么使用 key?

当有相同标签名的元素切换时,为避免渲染问题,需要通过 key 特性设置唯一的值来标记以让 Vue 区分它们,否则 Vue 为了效率只会替换相同标签内部的内容。

为什么避免 v-if 和 v-for 一起用?

Vue 处理指令时,v-forv-if 具有更高的优先级,通过v-if 移动到容器元素,不会再重复遍历列表中的每个值。取而代之的是,只检查它一次,且不会在 v-if 为否的时候运算 v-for