css

css盒模型

css常见长度单位

em rem区别

未知宽高居中

css画三角形

sass和less

如何定义一个变量

sass:$ less:@

继承、混合

js基础

js反转字符串

箭头函数和普通函数的区别

数组去重

数组reduce,filter,

防抖和节流

promise

promise.all

只要任何一个输入的promise的reject回调执行或者输入不合法的promise就会立即抛出错误,并且reject的是第一个抛出的错误信息。

Promise.any

只要其中的一个 promise 成功,就返回那个已经成功的 promise

Promise.race

一旦迭代器中的某个promise解决或拒绝,返回的 promise就会解决或拒绝

vue

生命周期

vue组件通讯

event bus

自定义v-model

自定义指令

vue2.0和3.0响应式区别

2.0

原理

Object.defineProperty对属性的利用setter,getter读取,修改进行拦截

存在的问题
  • 新增属性、删除属性,视图不能刷新,必须用前端面试 - 图1delete移除
  • 直接通过下标修改数组,视图不刷新,只能通过this.$set(this.arr,0,newValue)或者this.arr.splice(0,1,newValue)

3.0

原理
  • 通过Proxy(代理):拦截对象中任意属性的变化,包括:属性值的读写、属性的添加、属性的删除
  • 通过Reflect(反射):对被代理对象的属性进行操作

vue-router

前端路由的两种模式及区别

hash和history两种模式。

hash模式

hash 就是指 url 尾巴后的 # 号以及后面的字符,也称作锚点,本身是用来做页面定位的,她可以使对应 id 的元素显示在可视区域内。

由于 hash 值变化不会导致浏览器向服务器发出请求,而且 hash 改变会触发 hashchange 事件(hashchange只能改变 # 后面的url片段);更关键的一点是,因为hash发生变化的url都会被浏览器记录下来,从而你会发现浏览器的前进后退都可以用了,所以人们在 html5 的 history 出现前,基本都是使用 hash 来实现前端路由的。

history模式

hash 能兼容到IE8, history 只能兼容到 IE10;

histrory没有#号,url更简洁hash 的传参是基于 url 的,如果要传递复杂的数据,会有体积的限制,而 history 模式不仅可以在url里放参数,还可以将数据存放在一个特定的对象中。

修改历史状态包括了 pushState, replaceState两个方法

导航守卫

router.beforeEach

VueX

五个核心概念

State,Getter,Mutations,Actions,Modules,

Mutations和Actions如何触发

commit和dispatch

mapsate和mapgetter区别

优化

事件代理

重排重绘