es6
模块化的使用和编译环境
…
Class 与 JS 构造函数的区别
Promise的用法
- new Promise 实例,而且要 return
- new Promise 时要传入函数,函数有 reslove reject 两个参数
- 成功时执行 resolve() 失败时执行 reject()
- then 监听结果
ES6 其他常用功能
- let/const
- 多行字符串/模版变量
- 结构赋值
- 块级作用域
- 函数默认参数
- 箭头函数
异步
什么是单线程,和异步有何关系
- 单线程 - 只有一个线程,同时只能做一件事
- 原因 - 避免 DOM 渲染的冲突
- 解决方案 - 异步
什么是 event-loop
- 事件轮询,JS 实现异步的具体解决方案
- 同步代码,直接执行
- 异步函数先放在 异步队列 中
- 待同步函数执行完毕,轮询执行 异步队列 的函数
JS中的异步操作:
- 定时器都是异步操作
- 事件绑定都是异步操作
- AJAX中一般我们都采取异步操作(也可以同步)
- 回调函数可以理解为异步(不是严谨的异步操作)
剩下的都是同步处理
Promise 的标准
all/race
- Promise.all 待全部完成后,执行then
- Promise.race 一个promise 完成后,执行then
状态
三种状态:pending fulfilled rejected
then
- Promise 实例必须实现 then 这个方法
- then() 必须可以接收两个函数作为参数
- then() 返回的必须是一个 Promise 实例
async/await 的使用
- 基本语法
- 使用了 Promise ,并没有和 Promise 冲突
- 完全是同步的写法,再也没有回调函数
- 但是:改变不了 JS 单线程、异步的本质
原型
原型如何实际应用
原型如何满足扩展
vdom
…
MVVM
之前使用jquery和现在使用vue或React框架的区别
- 数据和视图的分离,解耦(开放封闭原则)
- 以数据驱动视图,只关心数据变化,DOM 操作被封装
你如何理解MVVM
- Model - 模型、数据
- View - 视图、模板(视图和模型是分离的)
- ViewModel - 连接 Model 和 View
vue 如何实现响应式
vue 三要素
- 响应式:vue 如何监听到 data 的每个属性变化?
- 模板引擎:vue 的模板如何被解析,指令如何处理?
- 渲染:vue 的模板如何被渲染成 html ?以及渲染过程
答案
- 关键是理解 Object.defineProperty
- 将 data 的属性代理到 vm 上
vue 如何解析模版
- 模板:字符串,有逻辑,嵌入 JS 变量……
- 模板必须转换为 JS 代码(有逻辑、渲染 html、JS 变量)
- render 函数是什么样子的
- render 函数执行是返回 vnode
- updateComponent
介绍 vue 的实现流程
- 解析模板成 render 函数
- 响应式开始监听
- 首次渲染,显示页面,且绑定依赖
- data 属性变化,触发 rerender
组件化
…