你将获得什么?
- 以终为始:透过核心编程模式看编程本质
- 实战驱动:剖析 JavaScript 算法和设计模式
- 开发提效:总结常用工具使用技巧与原理
- 前沿视野:洞察语言及应用变化趋势
课程介绍
现在,JavaScript 早已不是当年的一个脚本语言,随着 Web 应用和 Node.js 的兴起、函数式编程的复兴,以及响应式编程开始进入人们视野,让 JavaScript 看上去更“专业”了。虽然和十几年前相比较,JavaScript 也加入了很多功能和语法糖,但是它的核心原理并没有太大变化。
可即使没有太多本质上的变化,JavaScript 也仍然具有容易入门但难以进阶的问题。
造成这个问题的原因主要有两个:一是早期写 JavaScript 的很多程序员的编程基础并不扎实,知识点很杂,导致大家对 JS 的理解不够深入;二是后来入局的一些大咖,很多都是从其它语言转来的,他们认为一些知识没法分享和讲解。
这就使得 JavaScript 的开发者两极分化很严重,一部分一直停留在入门级,一部分出道即巅峰。
所以,我们邀请了JavaScript Patterns and Anti-Patterns等开源项目的创建者石川老师,来帮你化解学习难题。石川设计这门课的初衷,就是让学习 JavaScript 的你,能够对这个一开始比较不那么“专业”的语言,有一个系统的专业理解。帮助你一步一个脚印,把点连成线,把线连成面,把面搭建起一座空间立体的“思维大厦”。
此外,石川在课程中还总结了学习 JavaScript 的三大痛点,并据此来设计课程,让你能通过对底层原理和实践经验的理解,达成融会贯通的目的,从而实现突破 JavaScript 语言应用进阶的目标。
课程模块设计
课程分为五个模块。
- JavaScript 之道
课程首先从函数式和面向对象的编程模式开始讲起,毕竟其中一些核心概念或元认知即使不是恒久不变,也至少是到目前为止,经受住了时间考验的核心理论和实践。当你理解和掌握了这两类核心编程范式之后,你就知道要如何结合 JavaScript 的特性进行取长补短了,也能够因地制宜地解决实际问题了。
- JavaScript 之法
学习 JavaScript 的底层逻辑和所用到的数据结构与算法,以此帮助你写出更高效的代码。课程会从大量的开源项目等案例出发,带你了解、学习和掌握 JS 引擎及浏览器在编译和运行时的一些特点,帮助你达成对这些知识点的真正理解,最后能够融会贯通。这样你在使用 JS 的一些功能,如排序或者做代码优化的时候,就能够更好地抓住重点,管理预期。
- JavaScript 之术
在理解了 JavaScript 的数据结构与算法之后,还要来看看它用到的设计模式。这个部分其实是前面 JS 编程模式的延续,课程会结合一些三方的库,来帮你理解和掌握如何通过设计模式进一步提高“生产力”,优化“生产关系”。
- JavaScript 之器
通过工具的有效使用,可以减少重复的工作,帮助提高开发质量和效率。因此在这个模块中,依然是从案例出发,来了解、学习 JavaScript 中的常用工具及其背后的使用原理、使用场景,让你能够通过对原理和实践经验的理解,更好地为开发赋能。
- JavaScript 之势
我们说唯一不变的就是变化本身,通过前面对 JavaScript 知识体系的系统性理解,最后也来看看前端一些新的技术趋势,了解下这些变化和趋势会对我们产生哪些影响,以此进一步巩固知识体系,进阶为一名 JavaScript 语言应用强者。
课程目录
开篇词 | JavaScript的进阶之路
JavaScript之道
01函数式vs.面向对象:响应未知和不确定
函数式
02如何通过闭包对象管理程序中状态的变化?
03如何通过部分应用和柯里化让函数具象化?
04如何通过组合、管道和reducer让函数抽象化?
05 map、 reduce和monad如何围绕值进行操作?
响应式
06如何通过模块化、异步和观察做到动态加载?
面向对象
07深入理解对象的私有和静态属性
08深入理解继承、delegation和组合
09通过词法作用域和调用点看this绑定
JavaScript之法
10JavaScript有哪8种数据类型,你需要注意什么?
数据结构及算法
11通过JS引擎的堆栈了解闭包原理
12JavaScript语义分析该用迭代还是递归?
13JS引擎如何实现数组的稳定排序?
14通过SparkPlug深入了解调用栈
15如何通过哈希查找JS对象内存地址?
16为什么环形队列适合做Node数据流缓存?
17如何通过链表做LRU/LFU缓存?
18TurboFan如何用图做JS编译优化?
19通过Bitmap看浏览器渲染
20算法思想:分治、贪心、回溯和动态规划
JavaScript之术
设计模式
21创建型:为什么说Redux可以替代单例状态管理?
22结构型:Vue.js如何通过代理实现响应式编程?
23结构型:通过jQuery看结构型模式
24行为型:通过观察者、迭代器模式看JS的异步回调
25行为型:模版、策略和状态模式有什么区别?
26特殊型:前端有哪些处理加载和渲染的特殊“模式”?
非功能性优化
27性能:如何理解JavaScript中的并行、并发?
28性能:如何处理JavaScript中的并行、并发?
29性能通过Orinoco、 Jank Busters看垃圾回收
30网络从HTTP/1到HTTP/3,你都需要了解什么?
31安全:JS代码和程序,都需要注意哪些安全问题?
JavaScript之器
32测试(一):开发到重构中的测试
33测试(二):功能性测试
34测试(三):非功能性测试
35静态类型检查:ESLint语法规则和代码风格的检查
36格式化:在AST上重新按照自己的风格输出代码
37包管理和分发:通过npm做包的管理和分发
38编译和打包:通过Webpack、Babel做编译和打包
39语法扩展:通过JSX来做语法扩展
40Polyfll:通过Polyfll让浏览器提供原生支持
JavaScript之势
41微前端:从MVC贫血模式到DDD充血模式
42大前端:通过一云多端搭建跨PC/移动的平台应用
43元编程:通过Proxies和Reflect赋能元编程
结束语 | JavaScript的未来之路:源于一个以终为始的初心
讲师介绍
石川,HTML5 Boilerplate、JavaScript Patterns and Anti-Patterns等开源项目创建者,拥有雅虎、奥美、环球等世界 500 强企业开发经验。曾任梅赛德斯 – 奔驰集团数字化体验 IT 经理,负责奔驰 Web 前端的互通整合,并主导了 Web 应用系统响应式设计,从单体结构到基于云的微服务架构、容器化设计,以及 DevOps CI/CD 的技术转型、建设和交付。在环球期间,石川参与了北京环球度假区从 0 到 1 的数字化建设,并与阿里及腾讯技术 ToB 团队合作,重点完成了移动项目集中所有子项目一云多端的前端应用建设,其后管理范围延伸到了整个数字化应用和平台服务。
此外,石川也是《HTML5 移动 Web 开发实战》的作者,并作为 O’Reilly 的技术评审,参与了Building Micro-Frontends一书的评审工作。