一、 JS高级
1.作用域/作用域链
2.原型/原型链
3.闭包
4.This指向call/apply
6.Ajax原理、Axios库
7.同步/异步编程
8.jQuery源码学习
二、ES6
1.字符串、数组对象扩展API
2.变量扩展:let 、const的解构赋值,块级作用域
3.函数扩展:箭头函数默认参数、rest参数
4.展开运算符、模板字符串
5.Set、map数据结构
6.迭代器和生成器函数next和yield的理解
7.Proxy对象属性代理器:属性的读取(get)和设置(set)相关操作
8.Promise对象、异步编程的解决方案
9.Async+await:异步编程的终极方案 promise+generator的语法糖
10.Class语法、构造函数的语法糖
11.模块化编程export + import 的导入和导出
三、DOM
四、浏览器BOM
1.浏览器的构成和运行机制
2.浏览器内核
3.浏览器交互:BOM和DOM相关的webapi、监听事件
4.浏览器缓存机制
5.浏览器的渲染原理
6.浏览器的安全行:跨域和攻击
五、模块化编程AMD/UMD/COMMONJS
1.
六、关于网络协议
1. http协议
2. cookie、session、token
七、HTML/CSS/LESS
1.HTML
1.1 Html语义化标签的理解、结构化的理解;
1.2 SEO优化
1.3 H5新增属性,如data、类名className;新增表单元素,拖拽drag
2. CSS
1、css选择器(三大特性)
2、BFC机制
3、盒子模型
4、css模块化开发(封装);SCSS和LESS的使用
5、屏幕适配以及页面自适应
6、css3中心轴的选择器
7、css3新增属性,transform、transition、animation等
4. 关于布局
1. 标准文档流(padding + margin + 负margin) + 浮动float + 定位left + right + top + bottom
2. 百分比布局: px单位用%num 代替,占父级元素的百分比
3. flex弹性布局: 主轴、辅助轴的几个数学
4. grid栅格布局: 使用框架中的类名来替代,本质上还是百分比布局
八、NODE/EXPRESS
九、Webpack
1.打包原理
十、VUE
1.Vue双向绑定数据的原理
vue实现数据双向绑定主要是:采用数据劫持结合“发布者-订阅者”模式的方式,通过Object.defineProperty()来劫持各个属性的setter、getter,在数据变动时发布消息给订阅者,触发相应监听回调
2.解释单向数据流和双向数据绑定
单向数据流:顾名思义,数据流是单向的。数据流动方向可以跟踪,流动单一,追查问题的时候可以更快捷。缺点就是写起来不太方便。要使UI发生变更就必须创建各种action来维护对应的state。
双向数据绑定:数据直接是相通的, 将数据变更的操作隐藏在框架内部。优点是在表单交互较多的场景下,会简化大量与业务无关的代码。缺点就是无法追踪局部状态的变化,增加了出错时debug的难度
3.Vue 生命周期的理解
beforeCreate: 在实例创建之前执行
create:在实例创建、数据加载后,能初始化数据,DOM渲染之前执行
beforeMount:虚拟dom已创建完成,在数据渲染前最后一次更改数据
Mounted:页面、数据渲染完成,真实DOM挂载完成
beforeUpdate:重新渲染之前触发
Updated: 数据已更改完成,DOM也重新reder完成,更改数据会陷入死循环
beforeDestory和destoryed:前者是销毁实例前执行(实例仍然完全可用),后者则是销毁后执行。
4.组件通信
4.1子组件通过props属性,绑定父组件数据,实现双方通信
4.2子组件向父组件通信
将父组件的事件在子组件通过$emit触发
4.3非父子、兄弟组件之间的数据传递
如:EventBus
5.v-if和v-show区别
使用v-if 的时候,如果值为false, 那么页面将不会有html标签生成
v-show则是不管值为true,还是false, html元素都会存在,只是css中display显示或隐藏
6.NextTick
$nextTick 是在下次DOM更新循环结束之后执行延迟回调,在修改数据之后使用$nextTick,则可以在回调中获取更新后的DOM
7.Vue组件data为什么必须是函数
因为js本身的特性带来的,如果data是一个对象,那么由于对象本身属于引用类型,当我们修改其中的一个属性时,会影响到所有vue实力的数据。如果将data作为一个函数返回一个对象,那么每一个实例的data属性都是独立的,不会相互影响了。
8.Computed/methods区别
我们可以将同一个函数定义为一个method或者一个计算属性。对于最终的结果,两种方式是相同的。
不同点:
-- computed:计算属性是基于它们的依赖进行缓存的,只有在它的相关依赖发生改变时才会重新求值
-- methods:只要发生重新渲染,method调用总会执行该函数
9.jQuery、vue有什么不同
Jquery专注视图层,通过操作DOM去实现页面的一些逻辑;vue专注于数据层,通过数据的双向绑定,最终表现在DOM层面,减少DOM操作。
Vue 使用了组件化思想,使得项目子集职责清晰,提高了开发效率,方便重复利用,便于协同开发
10.Vue中key的作用
Key的特殊属性主要用在vue的虚拟DOM算法,在新旧nodes对比时辨识VNodes。如果不使用key,vue会使用一种最大限度减少动态元素并且尽可能地尝试修复/再利用相同类型元素的算法。使用key,它会基于key的变化重新排列元素顺序,并且会移除key不存在的元素
有相同父元素的子元素必须有独特的key。重复的key会造成渲染错误
11.插槽slot
12.Vuex
13.Vue-router
搭建SPA单页应用
1.路由组件配置
2.路由间传参
3.路由跳转
4.路由导航守卫
14.Vue-cli
15.Vue 深入、源码阅读
1.数据响应式原理
2.Virtual dom
3.Diff算法
4.NextTick等等
十一、面向对象的编程思想
1、类的抽象
2、对象的封装、继承
3、为了更好的去管理数据、分类数据,实现高内聚、低耦合
十二、设计模式
1、常用设计模式:单例、工厂
十三、数据结构/算法
1.学习常用的排序搜索算法、顺序表、链表、栈、队列、树、堆
十四、系统编程
1.LINUX命令行操作、系统文件管理
2.多任务、多线程、多进程、协程、并发、并行、串行、同步、异步等概念的理解