2020年前端Vue面试题(03-18)

前言

温故而知新,技术是学不完的。但学习的动力却是永无止境的!

1、如何理解vue中MVVM模式?

   MVVM全称是Model-View-ViewModel;vue是以数据为驱动的,一旦创建dom和数据就保持同步,
   每当数据发生变化时,dom也会变化。DOMListeners和DataBindings是实现双向绑定的关键。
   DOMListeners监听页面所有View层DOM元素的变化,当发生变化,Model层的数据随之变化;
   DataBindings监听Model层的数据,当数据发生变化,View层的DOM元素随之变化。

2、怎么定义vue-router的动态路由?怎么获取传过来的动态参数?

   在router目录下的index.js文件中,对path属性加上/:id。 使用router对象的params.id

3、vue-router有哪几种导航钩子?

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

4、vuex是什么?怎么使用?哪种功能场景使用它?

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

5、v-show和v-if指令的共同点和不同点?

v-show指令是通过修改元素的display属性让其显示或者隐藏,
v-if指令是直接销毁和重建DOM达到让元素显示和隐藏的效果

6、$ route和$ router的区别?

$router:全局路由对象,又称‘全局路由守卫’。该对象包括了路由的跳转方法,钩子函数等
$route:当前路由对象,包括path,params等路由信息参数

7、vue和react的区别?

相同点:都鼓励组件化,都有’props’的概念,都有自己的构建工具,Reat与Vue只有框架的骨架,
其他的功能如路由、状态管理等是框架分离的组件
不同点:React:数据流单向,语法—JSX,在React中你需要使用setState()方法去更新状态。
Vue:数据双向绑定,语法–HTML,state对象并不是必须的,数据由data属性在Vue对象中进行管理。
适用于小型应用,但对于对于大型应用而言不太适合

8、fetch是什么?你了解吗?

fetch号称是AJAX的替代品,是在ES6出现的,使用了ES6中的promise对象。
Fetch是基于promise设计的。Fetch的代码结构比起ajax简单多了,参数有点像jQuery ajax。
但是,一定记住fetch不是ajax的进一步封装,而是原生js,没有使用XMLHttpRequest对象。

fetch(url)
.then(res.json())
.then((res)=>{
         console.log(res);
})


优点 : 1.更加底层,提供的API丰富(request, response)
        2.脱离了XHR,是ES规范里新的实现方式
        3.语法简洁,更加语义化
        
注意:fetch只对网络请求报错,对400,500都当做成功的请求,
服务器返回 400,500 错误码时并不会 reject,只有网络错误这些导致
请求不能完成时,fetch 才会被 reject。

9、 组件之间的传值?

父组件与子组件传值
父组件通过标签上面定义传值
子组件通过props方法接受数据

子组件向父组件传递数据
子组件通过$emit方法传递参数

10、vue如何实现按需加载配合webpack设置

webpack中提供了require.ensure()来实现按需加载。以前引入路由是通过import 这样的方式引入,
改为const定义的方式进行引入。
不进行页面按需加载引入方式:
import home from '../../common/home.vue'
进行页面按需加载的引入方式:
const home = r => require.ensure( [], () => r (require('../../common/home.vue')))

11、生命周期相关知识点

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

创建前/后: 在beforeCreate阶段,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结构依然存在

12、为什么使用key?

当有相同标签名的元素切换时,需要通过 key 特性设置唯一的值来标记以让 Vue 区分它们,
否则 Vue 为了效率只会替换相同标签内部的内容。
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值