VUE
1、vue最大的特点vue的核心是什么!:
vue最大的两个特点就是"组件化"和"数据驱动",
组件化
组件就是在页面和页面中能够被复用的元素就成为组件,写组件就是在写页面,然后页面就是被组件"拼装"起来的组件树。
数据驱动
数据驱动就是让我们只关注数据层,当数据发生变化后,页面(即视图)也会跟着自动同步更新,关于如何去操作dom,完全交给vue去执行,我们管好数据就行,数据变化了,页面也就跟着变化了,很方便。
2、vue双向数据绑定的原理
vue.js整体采用的是数据劫持结合发布者模式-订阅者模式通过Object.defineProperty()来劫持各个属性的getter和setter,在数据变动时发布消息给订阅者触发相应的监听回调 ps(基于一个事件中心,这里的发布者模式就是触发事件的对象,订阅者就是接收通知的对象,发布者通过触发事件通知各个订阅者,js中绑定事件就是发布订阅模式)
整体思路
核心:通过Object.defineProperty()来实现对属性的劫持,达到监听数据变动的目的。
要实现mvvm模式要实现以下4点
- 实现一个数据监听器Observer(噢不赛ver),能够对数据对象的所有属性进行遍历监听,如果有变动就拿到最新值并通知订阅者
- 实现一个指令解析器Compile(康拍奥),对每个元素节点的指令进行扫描和解析,根据指令模板替换数据,以及绑定相应的更新函数
- 实现一个Watcher(沃吃儿)作为连接Observer 和Compile的桥梁,能够订阅并收到每个属性的变动的通知,执行指令绑定的相应回调函数,从而更新视图
- mvvm入口函数,整合以上三者
JS
3、 Promise是什么?
promise是es6提供的一种解决异步的方案
两个特点
Primise翻译过来就是承诺的意思 (1)对象的状态不受外界影响,Promise代表一个异步操作,,有三种状态:pending(盆顶):进行中、fulfilled(富父爱儿的):已成功、和rejected(瑞杰克踢得):已失败。 (2)z状态一旦改变,就不会再变,任何时候都可以得到这个结果。
一个缺点
(1)一旦新建他就会立即执行,无法中途取出,需要设置回调函数或用.catch来引出错误或是try catch来解决