了解es6吗?
了解.
1、class 类的继承ES6中不再像ES5一样使用原型链实现继承,而是引入Class这个概念
2、async、await。使用 async/await, 搭配promise,可以通过编写形似同步的代码来处理异步流程, 提高代码的简洁性和可读性。async 用于申明一个 function 是异步的,而 await 用于等待一个异步方法执行完成。
3、Promise是异步编程的一种解决方案,比传统的解决方案(回调函数和事件)更合理、强大 。
4、Symbol是一种基本类型。Symbol 通过调用symbol函数产生,它接收一个可选的名字参数,该函数返回的symbol是唯一的 。
5、Proxy代理使用代理(Proxy)监听对象的操作,然后可以做一些相应事情 。
6、Set是类似于数组的数据集合,无序,插入删除速度快,元素不重复,查找速度快。
7、Map是一个类似对象的数据结构,和对象不同的在于它的key可以是任意类型,但是对象只能使用 string和symbol类型,Map的存储关联性更强 。
8、生成器函数可以进行阻断函数执行的过程,通过传参可以传入新的值进入函数继续执行,可以用于将异步变为阻塞式同步。
说说你对Promise的理解
Promise是一个对象,从它可以获取异步操作的消息。
Promise有两个特点:(1)对象的状态不受外界影响。Promise有三种状态,分别是pending(进行中)、resolved(已成功)、rejected(已失败)。
(2)一旦状态改变,就不会在变,任何时候都可以得到这个结果。状态改变只有两种情况:
- pending -> resolved
- pending -> rejected
async await怎么实现?
async、await是基于Generator对Promise进行封装后的函数,返回一个Promise对象,并await暂停等待Promise执行resolve的结果。实际上async/await是Generator的一个语法糖 。
map和set
Set是类似于数组的数据集合,无序,插入删除速度快,元素不重复,查找速度快。
Map是一个类似对象的数据结构,和对象不同的在于它的key可以是任意类型,但是对象只能使用 string和symbol类型,Map的存储关联性更强 。
vue路由hash模式和history模式的区别
- hash模式的url中带有#号,history模式中没有。
- hash模式的兼容性更好
- hash实际的url之前使用哈希字符,这部分url不会发送到服务器,不需要在服务器层面上进行任何处理,history每访问一个页面都需要服务器进行路由匹配生成 html 文件再发送响应给浏览器,消耗服务器大量资源.
- hash刷新不会存在 404 问题,history浏览器直接访问嵌套路由时,会报 404 问题。
- hash不需要服务器任何配置,history需要在服务器配置一个回调路由.
history刷新为何会出现404?
history 进行刷新页面时,无法找到url对应的页面,会出现 404 问题。因为域名后面的路由是由前端控制的,后端只能保留域名部分,所以就会造成页面丢失的问题。
需要服务器端添加一个回退路由,就能解决该问题了。
Vue响应式原理
在vue中使用observer和definereactive两个方法的结合对数据进行递归劫持,然后通过 watch这个类来对属性进行订阅,Dep类用于解耦合,当数据变更的时候先触发数据的set方法,然后调用 Dep.notiify通知视图更新 。