1、如何让一个元素水平垂直居中
display:flex
justify-content:center;
align-items:center;
2、Var,let和const的区别
var为函数作用域,没有暂时性死区,let const 为块级作用域有暂时性死区
var有变量提升,而let const不能
var可以重新赋值 在同一作用域内let不能重复声明 const不能修改
3、普通函数和箭头函数有什么区别
箭头函数不能使用构造函数 相当于匿名函数,不能使用new命令 他的this永远指向上下文,且任何方法不能修改
箭头函数可以使用构造函数,有具名函熟也有匿名函数,可以使用new命令,this指向调用他的那个函数
4、详细说说你对闭包的理解
闭包就是函数嵌套函数 内部函数可以访问外部函数作用域内中的变量,参数和变量不会被回收
5、浏览器输入url到页面加载全过程
(1)浏览器构建HTTP Request请求
(2)网络传输
(3)服务器构建HTTP Response 响应
(4)网络传输
(5)浏览器渲染页面
6、什么是回流和重绘
回流:DOM树中的元素有增加或者删除,导致浏览器会重新渲染整个DOM树,回流比重绘更消耗性能,发生回流必定重绘,重绘不一定导致回流
重绘:DOM树中没有元素增加或者删除,只是改变样式宽高颜色这样的,浏览器会针对某一元素进行单独的渲染,这个过程就是重绘
7、什么是原型链,谈谈你的理解
8、什么是事件冒泡
事件由内向外触发
9、说说Vue的生命周期
就是vue实例从创建到销毁的过程,
在生命周期的不同阶段通过对应的钩子函数来实现组件之间的数据管理和DOM渲染量大重要功能
10、data为什么是函数
当data是个函数的时候,那么每个实例都会有自己的作用域,这样他们就会独立且不会互相影响,
如果data是个对象,那么在多次使用实例的时候,修改一个值,其他值也会发生改变,这样就会造成数据共享,不利于我们功能的实现
11、Vue组件通信有哪些方法
父传子 props
子传父$emit
兄弟传值 总站bus
vuex
$parent
$children
12、Watch和computed的区别
computed:是计算属性,具有依赖性,有缓存属性,只有当数据修改的时候才会执行,如果没修改那就从缓存中获取,改数据的值根据依赖目标的改变而改变。
watch:监听属性,没有依赖性,当监听对象发生改变的时候,那么所对应的对象也会发生改变
13、说说你对hash和history的理解,history模式刷新出现空白怎么解决
14、v-if和v-show的区别
共同点:都是条件渲染指令,都能控制元素的显示与隐藏
不同点:v-if通过DOM来控制元素的显示与隐藏,而v-show通过DOM元素的display,block为显示,none为隐藏
v-if是惰性的,只有当条件为真时,才开始渲染并缓存,而v-show不管条件是否为真都会渲染并缓存,
v-if有更高的切换消耗,v-show有更高的初始化消耗,频繁切换时推荐使用v-show 不频繁切换推荐使用v-if
15、说一下路由导航守卫的用法
16、Vue双向数据绑定的原理
采用数据劫持,结合发布者订阅者模式的方式,通过object.defineproperty这个方法来劫持数据的setter与getter,当数据发生改变的时候来通知给订阅者,来触发相应的监听回调
17、说一说你对vuex的理解
1.vuex的使用
官方说明:
Vuex 是一个专为 Vue.js应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。Vuex 也集成到 Vue 的官方调试工具 devtools extension,提供了诸如零配置的 time-travel 调试、状态快照导入导出等高级调试功能。
个人理解:
vuex就是一个状态管理的工具,如果我们没有用vuex,那么每个组件之间的传值就只能通过存储的方式来存储。这样一旦项目大了过后就不利于数据状态的管理。所以如果我们用到了vuex那么就会方便管理很多。
怎么使用?
下载vuex后在文件夹中会生成一个store文件,里面有一个index.js文件,也会在mian.js中自动引入这个index.js文件。store里面的state就相当于data,getters相当于computed,mutations存放同步的方法,actions存放异步的方法。
commit 和dispatch的区别在于commit是提交mutatious的同步操作,dispatch是分发actions的异步操作
1)dispatch:含有异步操作,例如向后台提交数据,写法this.$store.dispatch(‘action方法名’,值)
2)commit:同步操作,写法:this.$store.commit(‘mutations方法名’,值)
18、谈谈你对axios的了解
axios 是一个基于 Promise 的 HTTP 库,可以用在浏览器和 node.js 中。在Web端本质上就是Ajax + Promise,服务端是htttp + Promise
19、说说你对spa单页面应用的理解
在页面加载时,会加载相应的css HTML js 一旦页面加载完成spa就不会因为用户的操作而进行页面的重新渲染和跳转,他是根据路由机制来实现页面内容的衡欢,ui与用户交互,避免了页面的重新加载
优点:用户体验好,加载速度快,内容的改变不需要加载整个页面,避免了不必要的跳转和重新渲染,基于这一点对服务器压力小,前后端职责分离,前端负责交互逻辑后端负责数据处理
缺点:初次加载页面时消耗过多,为了实现单页面应用及显示效果,需要在加载页面的时候将css js 统一加载,部分页面按需加载