- 课程目录
- 课程介绍
-
在线阅读:开篇词 | JavaScript的进阶之路
这门课的初衷,就是让学习JavaScript的你,能够对这个开始比较不那么“专业”的语言,有一个系统的专业理解。帮助你一步一个脚印,把点连成线,把线连成面,把面搭建起一座空间立体的“思维大厦”。
-
01 | 函数式vs.面向对象:响应未知和不确定
我会先带你从“思维大厦”的顶层开始,来了解JavaScript语言的核心思想,然后再带你看看如何因地制宜地使用这两种编程模式。这样你在日后面对已知和未知问题,做复杂系统开发的时候,也能找到一套行之有效的方法了。
-
02 | 如何通过闭包对象管理程序中状态的变化?
一个活的系统,它的状态肯定是在不停变化的,那么如何才能在不可变的原则下来管理这种变化?今天,我们就一起来看看在函数式编程中,有哪些值是可变的、哪些不可变,以及如何能在状态管理的时候做到不可变。
-
03 | 如何通过部分应用和柯里化让函数具象化?
在面对未知、动态和不可控时,函数式编程很重要的一点就是控制好输入。
-
04 | 如何通过组合、管道和reducer让函数抽象化?
组合与管道,跟上节课讲到的部分应用和柯里化正好相反,一个是从具象走向抽象,一个是从抽象走向具象。不过虽然说它们的方向是相反的,但有一条原则是一致的,那就是每个函数尽量有一个单一职责,只专注做好一件事。
-
05|map、reduce和monad如何围绕值进行操作?
通过数组的map、filter和reduce,进一步了解transducer的原理,做到既知其然又知其所以然
-
06 | 如何通过模块化、异步和观察做到动态加载?
从时间的角度看异步中的事件如何引起副作用,以及要如何管理这种副作用。
-
07 | 深入理解对象的私有和静态属性
深入了解JavaScript的对象构建和面向对象的编程模式。
-
08|深入理解继承、Delegation和组合
通过JavaScript做到代码复用的几种核心思想和方法。
-
09|面向对象:通过词法作用域和调用点理解this绑定
学习this的绑定,一个和函数式中的closure有着同等重要性的概念。
-
10|JS有哪8种数据类型,你需要注意什么?
通过不同类型在实际应用时会出现的各种问题,进一步了解它们的原理和使用方法
-
11|通过JS引擎的堆栈了解闭包原理
如果说一个函数“出生”的地方是作用域,从出生到被回收的“一生”是它的生命周期,那么闭包则可以突破这种空间和时间上的限制,那它是怎么做到这种突破的呢?
-
12|JS语义分析该用迭代还是递归?
如果说函数式编程是输入、计算和输出,那中间的计算部分就可能用到算法了,而迭代和递归可以说是非常基础的算法。
-
13 | JS引擎如何实现数组的稳定排序?
数据结构与算法两者是什么关系?这一讲,通过数组这一常用的数据结构来了解一下排序算法
-
14 | 通过SparkPlug深入了解调用栈
通过V8的Sparkplug编译器深入了解JavaScript引擎中的调用栈
-
15 | 如何通过哈希查找JS对象内存地址?
通过这一讲,你也能更好地理解哈希、散列表、字典,这些初学者都比较容易混淆的概念……
-
16 | 为什么环形队列适合做Node数据流缓存?
只是实现一个队列并不复杂,重要的是,你要理解队列在编程中的应用。
-
17 | 如何通过链表做LRU/LFU缓存?
在链表结构里,每一个元素都是节点,每个节点有自己的内容和相连的下一个元素的地址参考。
-
在线阅读:18 | TurboFan如何用图做JS编译优化?
图在JS引擎的编译器中作用是非常大的,如果说整个V8的编译器TurboFan都基于图也毫不夸张。
-
19 | 通过树和图看如何在无序中找到路径和秩序
通过拓扑排序建立资源依赖;通过字典树建立Web API的路由
-
20 | 算法思想:JS中分治、贪心、回溯和动态规划
用硬币找零的例子解释递归、分治、贪心、回溯和动态规划这些不同的算法思想
-
21 | 创建型:为什么说Redux可以替代单例状态管理
在解决单例的问题上,针对前端的应用,聊聊如何因地制宜地解决相关的状态管理问题。
-
22|结构型:Vue.js如何通过代理实现响应式编程
Vue.js的一个很大的特点就是用到了如今流行的响应式编程(Reactive Programming)。那它是怎么做到这一点的呢?这里面离不开代理模式,
-
23 | 结构型:通过jQuery看结构型模式
经典结构型模式之享元模式、门面模式、组合模式介绍
-
24 | 行为型:通过观察者、迭代器模式看JS异步回调
今天我们会讲到行为型设计模式中的观察者模式,它是事件驱动在设计层面上的体现。通过这一讲的内容,你也可以更了解JS开发中事件驱动和异步的特性。
-
25 | 行为型:模版、策略和状态模式有什么区别?
剩下这六种行为型模式可以大致分为两类,一类是偏向“策略模型”的设计模式,包含策略、状态和模版这三种模式。另外一大类是偏向“数据传递”的设计模式,包含了中介、命令和职责链这几种模式。
-
26|特殊型:前端有哪些处理加载和渲染的特殊“模式”?
系统学习响应式编程在JS中的设计模式,包括组件化、加载渲染和性能优化模式。
-
27|性能:如何理解JavaScript中的并行、并发?(上)
学习线程和进程、并行和并发的区别,对比前后端不同语言对多线程并行开发的支持。
-
28|性能:如何理解JavaScript中的并行、并发?(下)
如何在信息互传的基础上,让数据真正地在多线程间共享和修改。
-
29|性能:通过Orinoco、Jank Busters看垃圾回收
聚焦Chrome和V8为了解决性能问题都做了哪些优化。
-
30|网络:从HTTP/1到HTTP/3,你都需要了解什么?
看HTTP的前世今生,以及在这个过程中对前端开发有哪些影响。
-
31|安全:JS代码和程序都需要注意哪些安全问题?
这节课重点学习Web中常见的漏洞和攻击。
-
32|测试(一):开发到重构中的测试
在很多讲TDD测试的书或文章中,通常会偏概念化,希望通过今天的学习,你能对它有更具象的了解。
-
33|测试(二):功能性测试
这节课将进一步通过具体的单元测试来掌握TDD这种开发模式的实施。
-
34|测试(三):非功能性测试
这节课学习非功能性测试中的性能、安全和辅助功能测试。
-
35|静态类型检查:ESLint语法规则和代码风格的检查
linter作为代码检查工具,可以帮助我们将代码出现质量问题的风险降到最低。
-
36|Flow:通过Flow类看JS的类型检查
一旦掌握了类型规范,就会发现它可以避免很多的潜在问题。
-
37|包管理和分发:通过NPM做包的管理和分发
在JavaScript不断模块化的今天,NPM让我们更容易分享和使用其他开发者所提供的工具,但我们也看到了它的很多安全隐患。
-
38|编译和打包:通过Webpack、Babel做编译和打包
这节课我们来学习JavaScript中编译和打包工具的前世今生和“成功转型”。
-
39|语法扩展:通过JSX来做语法扩展
这节课我们就来看看JSX是如何用在Web UI开发中的。即使你不使用React,这样的模版模式也有很大的借鉴意义。
-
40|Polyfill:通过Polyfill让浏览器提供原生支持
想必你之前一定使用过Polyfill,希望通过这节课的学习,你不仅会用,还可以掌握设计和编写一个Polyfill的能力。
-
41|微前端:从MVC贫血模式到DDD充血模式
这节课我们详细看看“微前端”这个近些年兴起的概念。
-
42|大前端:通过一云多端搭建跨PC/移动的平台应用
大前端的出现,可以让数据的存储和数据的获取方式更好地服务于前端的交互和业务的需求。
-
43|元编程:通过Proxies和Reflect赋能元编程
这节课我们来一步步了解下元编程的概念及使用。
-
结束语|JavaScript的未来之路:源于一个以终为始的初心
感谢一起走过的这段时间,辞旧迎新之际,希望你也能够在新的一年,通过JavaScript这门语言更好地拥抱不确定性。
-
期末测验|来赴一场100分之约!
结课测试共20道题,10道单选,10道多选,满分为100分,快来挑战吧!
课程介绍
限时福利 你将获得 以终为始:透过核心编程模式看编程本质 实战驱动:剖析JavaScript算法和设计模式 开发提效:总结常用工具使用技巧与原理 前沿视野:洞察语言及应用变化趋势 讲师介绍 此外,石川也是《HTML5...限时福利
你将获得
- 以终为始:透过核心编程模式看编程本质
- 实战驱动:剖析JavaScript算法和设计模式
- 开发提效:总结常用工具使用技巧与原理
- 前沿视野:洞察语言及应用变化趋势
讲师介绍
此外,石川也是《HTML5 移动Web开发实战》的作者,并作为O’Reilly的技术评审,参与了Building Micro-Frontends一书的评审工作。
课程介绍
现在,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语言应用强者。

课程目录

适合人群
本课程面向从“初中级”向“中高级”迈进的前端开发者,或是想对前端有所了解的Tech Leader或架构师。