vue-run
指南
推荐配置
读书笔记
Javascript书籍
编写高质量JavaScript的68个有效方法
编写可维护的JavaScript
你不知道的JavaScript(上卷)
你不知道的JavaScript(中卷)
ES6标准入门
深入理解ES6
深入理解TypeScript
深入浅出Vue.js
了不起的JavaScript工程师
JavaScript高级程序设计
JavaScript面向对象编程指南
JavaScript面向对象精要
JavaScript函数式编程指南
JavaScript忍者秘籍
JavaScript编程精解
JavaScript语言精髓与编程实践
JavaScript设计模式与开发实战
JavaScript框架设计
Node书籍
Node.js实战
Node.js开发实战
Node.js设计模式
算法书籍
学习JavaScript数据结构与算法
css书籍
CSS揭秘
面经
基础
JavaScript
CSS
HTTP
进阶
设计模式
Node
算法
兼容性
缓存
性能优化
RunTime
浏览器
Webpack
选型
Vue
React
能力周边
Git操作
前端监控
安全防范
最佳实践
只言片语
#
JavaScript 设计模式与开发实战
第1章 面向对象的JavaScript
1.1 动态类型语言和鸭子类型
1.2 多态
1.3 封装
1.4 原型模式和基于原型的JavaScript对象系统
第2章 this、call和apply
2.1 this
2.2 call和apply
第3章 闭包和高阶函数
3.1 闭包
3.2 高阶函数
3.3 小结
第4章 单例模式
4.1 实现单例模式
4.2 透明的单例模式
4.3 用代理实现单例模式
4.4 JavaScript中的单例模式
4.5 惰性单例
4.6 通用的惰性单例
4.7 小结
第5章 策略模式
5.1 使用策略模式计算奖金
5.2 JavaScript版本中的策略模式
5.3 多态在策略模式中的体现
5.4 使用策略模式实现缓动动画
5.5 更广义的“算法”
5.6 表单校验
5.7 策略模式的优缺点
5.8 一等函数对象与策略模式
5.9 小结
第6章 代理模式
6.1 第一个例子——小明追MM
6.2 保护代理和虚拟代理
6.3 虚拟代理实现图片预加载
6.4 代理的意义
6.5 代理和本体接口的一致性
6.6 虚拟代理合并HTTP请求
6.7 虚拟代理在惰性加载中的应用
6.8 缓存代理
6.9 用高阶函数动态创建代理
6.10 其他代理模式
6.11 小结
第7章 迭代器模式
7.1 jQuery中的迭代器
7.2 实现自己的迭代器
7.3 内部迭代器和外部迭代器
7.4 迭代类数组对象和字面量对象
7.5 倒序迭代器
7.6 中止迭代器
7.7 迭代器模式的应用举例
7.8 小结
7.9 小结
第8章 发布——订阅模式
8.1 现实中的发布——订阅模式
8.2 发布——订阅模式的作用
8.3 DOM事件
8.4 自定义事件
8.5 发布——订阅模式的通知实现
8.6 取消订阅的事件
8.7 真实的例子——网站登录
8.8 全局的发布——订阅对象
8.9 模块间通信
8.10 必须先订阅再发布吗
8.11 全局事件的命名冲突
8.12 JavaScript实现发布——订阅
8.13 小结
第9章 命令模式
9.1 命令模式的用途
9.2 命令模式的例子——菜单程序
9.3 JavaScript中的命令模式
9.4 撤销命令
9.5 撤销和重做
9.6 命令队列
9.7 宏命令
9.8 智能命令与傻瓜命令
9.9 小结
第10章 组合模式
10.1 回顾宏命令
10.2 组合模式的作用
10.3 请求在树中传递的过程
10.4 更强大的宏命令
10.5 抽象类在组合模式中的作用
10.6 透明性带来的安全问题
10.7 组合模式的例子——扫描文件夹
10.8 一些值得注意的地方
10.9 引用父对象
10.10 何时使用组合模式
10.11 小结
第11章 模版方法模式
11.1 模版方法模式的定义和组成
11.2 第一个例子——Coffe or Tea
11.3 抽象类
11.4 模版方法模式的使用场景
11.5 钩子方法
11.6 好莱坞原则
11.7 真的需要“继承”吗
11.8 小结
第12章 享元模式
12.1 初识享元模式
12.2 内部状态和外部状态
12.3 享元模式的通用结构
12.4 文件上传的例子
12.5 享元模式的适用性
12.6 再谈内部状态和外部状态
12.7 对象池
12.8 小结
第13章 职责链模式
13.1 现实中的职责链模式
13.2 实际开发中的职责链模式
13.3 用职责链模式重构代码
13.4 灵活可拆分的职责链节点
13.5 异步的职责链
13.6 职责链模式的优缺点
13.7 用AOP实现职责链
13.8 用职责链模式获取文件上传对象
13.9 小结
第14章 中介者模式
14.1 现实中的中介者
14.2 中介者模式的例子——泡泡堂游戏
14.3 中介者模式的例子——购买商品
14.4 小结
第15章 装饰者模式
15.1 传统模拟免息对象语言的装饰者模式
15.2 装饰者也是包装器
15.3 回到JavaScript的装饰者
15.4 装饰函数
15.5 用AOP装饰函数
15.6 AOP的应用实例
15.7 装饰者模式和代理模式
15.8 小结
第16章 状态模式
16.1 初识状态模式
16.2 状态模式的定义
16.3 状态模式的通用结构
16.4 缺少抽象类的变通方式
16.5 另一个状态模式示例——文件上传
16.6 状态模式的优缺点
16.7 状态模式的性能优化点
16.8 状态模式和策略模式的关系
16.9 JavaScript版本的状态机
16.10 表驱动的有限状态机
16.11 实际项目中的其他状态机
16.12 小结
第17章 适配器模式
17.1 现实中的适配器
17.2 适配器模式的应用
17.3 小结
第18章 单一职责原则
18.1 设计模式中的SRP原则
18.2 何时应该分离职责
18.3 违反SRP原则
18.4 SRP原则的优缺点
第19章 最少知识原则
19.1 减少对象之间的联系
19.2 设计模式中的最少知识原则
19.3 封装在最少知识原则中的体现
第20章 开放——封闭原则
20.1 扩展window.onload函数
20.2 开放和封闭
20.3 用对象的多态性消除条件分支
20.4 找出变化的地方
20.5 设计模式中的开放——封闭原则
20.6 开放——封闭原则的相对性
20.7 接受第一次愚弄
第21章 接口和面向接口编程
21.1 回到Java的抽象类
21.2 interface
21.3 JavaScript语言是否需要抽象类和interface
21.4 用鸭子类型进行接口检查
21.5 用TypeScript编写基于interface的命令模式
第22章 代码重构
22.1 提炼函数
22.2 合并重复的条件片段
22.3 把条件分支语句提炼成函数
22.4 合理使用循环
22.5 提前让函数退出代理嵌套条件分支
22.6 传递对象参数代替过长的参数列表
22.7 尽量减少参数数量
22.8 少用三目运算符
22.9 合理使用链式调用
22.10 分解大型类
22.11 用return退出多重循环
#
第1章 面向对象的JavaScript
#
1.1 动态类型语言和鸭子类型
#
1.2 多态
#
1.3 封装
#
1.4 原型模式和基于原型的JavaScript对象系统
#
第2章 this、call和apply
#
2.1 this
#
2.2 call和apply
#
第3章 闭包和高阶函数
#
3.1 闭包
#
3.2 高阶函数
#
3.3 小结
#
第4章 单例模式
#
4.1 实现单例模式
#
4.2 透明的单例模式
#
4.3 用代理实现单例模式
#
4.4 JavaScript中的单例模式
#
4.5 惰性单例
#
4.6 通用的惰性单例
#
4.7 小结
#
第5章 策略模式
#
5.1 使用策略模式计算奖金
#
5.2 JavaScript版本中的策略模式
#
5.3 多态在策略模式中的体现
#
5.4 使用策略模式实现缓动动画
#
5.5 更广义的“算法”
#
5.6 表单校验
#
5.7 策略模式的优缺点
#
5.8 一等函数对象与策略模式
#
5.9 小结
#
第6章 代理模式
#
6.1 第一个例子——小明追MM
#
6.2 保护代理和虚拟代理
#
6.3 虚拟代理实现图片预加载
#
6.4 代理的意义
#
6.5 代理和本体接口的一致性
#
6.6 虚拟代理合并HTTP请求
#
6.7 虚拟代理在惰性加载中的应用
#
6.8 缓存代理
#
6.9 用高阶函数动态创建代理
#
6.10 其他代理模式
#
6.11 小结
#
第7章 迭代器模式
#
7.1 jQuery中的迭代器
#
7.2 实现自己的迭代器
#
7.3 内部迭代器和外部迭代器
#
7.4 迭代类数组对象和字面量对象
#
7.5 倒序迭代器
#
7.6 中止迭代器
#
7.7 迭代器模式的应用举例
#
7.8 小结
#
7.9 小结
#
第8章 发布——订阅模式
#
8.1 现实中的发布——订阅模式
#
8.2 发布——订阅模式的作用
#
8.3 DOM事件
#
8.4 自定义事件
#
8.5 发布——订阅模式的通知实现
#
8.6 取消订阅的事件
#
8.7 真实的例子——网站登录
#
8.8 全局的发布——订阅对象
#
8.9 模块间通信
#
8.10 必须先订阅再发布吗
#
8.11 全局事件的命名冲突
#
8.12 JavaScript实现发布——订阅
#
8.13 小结
#
第9章 命令模式
#
9.1 命令模式的用途
#
9.2 命令模式的例子——菜单程序
#
9.3 JavaScript中的命令模式
#
9.4 撤销命令
#
9.5 撤销和重做
#
9.6 命令队列
#
9.7 宏命令
#
9.8 智能命令与傻瓜命令
#
9.9 小结
#
第10章 组合模式
#
10.1 回顾宏命令
#
10.2 组合模式的作用
#
10.3 请求在树中传递的过程
#
10.4 更强大的宏命令
#
10.5 抽象类在组合模式中的作用
#
10.6 透明性带来的安全问题
#
10.7 组合模式的例子——扫描文件夹
#
10.8 一些值得注意的地方
#
10.9 引用父对象
#
10.10 何时使用组合模式
#
10.11 小结
#
第11章 模版方法模式
#
11.1 模版方法模式的定义和组成
#
11.2 第一个例子——Coffe or Tea
#
11.3 抽象类
#
11.4 模版方法模式的使用场景
#
11.5 钩子方法
#
11.6 好莱坞原则
#
11.7 真的需要“继承”吗
#
11.8 小结
#
第12章 享元模式
#
12.1 初识享元模式
#
12.2 内部状态和外部状态
#
12.3 享元模式的通用结构
#
12.4 文件上传的例子
#
12.5 享元模式的适用性
#
12.6 再谈内部状态和外部状态
#
12.7 对象池
#
12.8 小结
#
第13章 职责链模式
#
13.1 现实中的职责链模式
#
13.2 实际开发中的职责链模式
#
13.3 用职责链模式重构代码
#
13.4 灵活可拆分的职责链节点
#
13.5 异步的职责链
#
13.6 职责链模式的优缺点
#
13.7 用AOP实现职责链
#
13.8 用职责链模式获取文件上传对象
#
13.9 小结
#
第14章 中介者模式
#
14.1 现实中的中介者
#
14.2 中介者模式的例子——泡泡堂游戏
#
14.3 中介者模式的例子——购买商品
#
14.4 小结
#
第15章 装饰者模式
#
15.1 传统模拟免息对象语言的装饰者模式
#
15.2 装饰者也是包装器
#
15.3 回到JavaScript的装饰者
#
15.4 装饰函数
#
15.5 用AOP装饰函数
#
15.6 AOP的应用实例
#
15.7 装饰者模式和代理模式
#
15.8 小结
#
第16章 状态模式
#
16.1 初识状态模式
#
16.2 状态模式的定义
#
16.3 状态模式的通用结构
#
16.4 缺少抽象类的变通方式
#
16.5 另一个状态模式示例——文件上传
#
16.6 状态模式的优缺点
#
16.7 状态模式的性能优化点
#
16.8 状态模式和策略模式的关系
#
16.9 JavaScript版本的状态机
#
16.10 表驱动的有限状态机
#
16.11 实际项目中的其他状态机
#
16.12 小结
#
第17章 适配器模式
#
17.1 现实中的适配器
#
17.2 适配器模式的应用
#
17.3 小结
#
第18章 单一职责原则
#
18.1 设计模式中的SRP原则
#
18.2 何时应该分离职责
#
18.3 违反SRP原则
#
18.4 SRP原则的优缺点
#
第19章 最少知识原则
#
19.1 减少对象之间的联系
#
19.2 设计模式中的最少知识原则
#
19.3 封装在最少知识原则中的体现
#
第20章 开放——封闭原则
#
20.1 扩展window.onload函数
#
20.2 开放和封闭
#
20.3 用对象的多态性消除条件分支
#
20.4 找出变化的地方
#
20.5 设计模式中的开放——封闭原则
#
20.6 开放——封闭原则的相对性
#
20.7 接受第一次愚弄
#
第21章 接口和面向接口编程
#
21.1 回到Java的抽象类
#
21.2 interface
#
21.3 JavaScript语言是否需要抽象类和interface
#
21.4 用鸭子类型进行接口检查
#
21.5 用TypeScript编写基于interface的命令模式
#
第22章 代码重构
#
22.1 提炼函数
#
22.2 合并重复的条件片段
#
22.3 把条件分支语句提炼成函数
#
22.4 合理使用循环
#
22.5 提前让函数退出代理嵌套条件分支
#
22.6 传递对象参数代替过长的参数列表
#
22.7 尽量减少参数数量
#
22.8 少用三目运算符
#
22.9 合理使用链式调用
#
22.10 分解大型类
#
22.11 用return退出多重循环