精妙的 JavaScript:编程的现代入门
一本关于使用 JavaScript 进行现代编程的全面指南。课程涵盖编程基本原理、JavaScript 语言规范、浏览器集成以及使用 Node.js 进行服务器端开发,包括五个实际应用项目。
课程概述
📚 内容概要
一本关于使用 JavaScript 进行现代编程的全面指南。课程涵盖编程基础原理、JavaScript 语言规范、浏览器集成以及基于 Node.js 的服务器端开发,包含五个真实世界的项目应用。
深入而优雅地探索 JavaScript 编程的核心。
作者: Marijn Haverbeke
致谢: 得到 454 名财务支持者的资助;插图由 Wasif Hyder、Max Xiantu、Margarita Martínez、José Menor、Jim Tierney、Dyle MacGregor、Jeff Avallone、Thomas Palef 及 Antonio Perdomo Pastor 绘制。
🎯 学习目标
- 定义程序的概念,并解释计算机语言中不同抽象层次。
- 使用 JavaScript 数字和算术运算符生成数值。
- 声明并更新变量,同时遵守命名规范和保留字限制。
- 使用
do循环、for循环和switch语句实现稳健的控制流,并通过缩进和注释保持代码整洁。 - 使用多种语法定义和调用函数,处理参数、可选参数及嵌套词法作用域。
- 应用递归、闭包和调用栈等高级函数式概念来解决复杂的算法难题。
- 利用专门的对象和数组方法管理复杂的数据结构和字符串。
- 实现高阶函数(
filter、map、reduce),抽象逻辑并组合数据转换。 - 遍历和操作原型链,创建结构化、可复用的对象实例和多态接口。
- 实现多态接口以处理复杂的数据可视化(表格)。
课程 共 10 课时 · 预计 30.0h
课程
Lesson
This lesson introduces the concept of programming as the art of subduing complexity by creating immaterial logic that directs physical hardware. Students will learn the fundamental structure of JavaScript, including the roles of variables, control flow, and the distinction between statements and expressions.
This lesson explores advanced control flow in JavaScript, focusing on sophisticated iteration patterns like for loops, do-while loops, and multi-way branching with switch statements. Students will learn to manage program execution precisely using break and continue keywords, modular arithmetic, and nested loops to solve complex algorithmic challenges.
This lesson explores the concept of abstraction in programming, focusing on how to transition from imperative, hardware-level logic to declarative, human-readable code. Students will learn to implement and refine flexible functions, such as range and sum, while analyzing the performance trade-offs associated with the abstraction tax.
This lesson explores interface-based polymorphism by defining a standardized Table Interface that allows layout engines to process diverse data types through a consistent set of methods. Students will learn to implement flexible, decoupled systems by using defensive programming techniques and interface contracts to manage object rendering and alignment.
This lesson introduces Regular Expressions (RegExp) in JavaScript, covering how to define patterns using literal notation or constructors and how to use the .test() method for validation. Students will learn to manage case sensitivity, handle special characters through escaping, and apply these techniques to dynamic string matching tasks.
This lesson explores the evolution of JavaScript module systems, focusing on how to prevent namespace pollution through techniques like Immediately Invoked Function Expressions (IIFEs) and closures. Students will learn to design robust, encapsulated code by creating private scopes and structured public interfaces for their modules.
AI020: Events and Interactive Platforms (Lesson 7) explores the technical foundations of building dynamic web experiences through DOM manipulation, regular expressions, and event handling. Students will learn to transform static content into interactive environments by implementing efficient workflows for real-time feedback and user input tracking.
This lesson explores the performance advantages of the HTML5 Canvas API over SVG for high-density graphics by utilizing a 2D rendering context to bypass DOM overhead. Students will also examine the role of the transport layer in web applications, specifically analyzing the performance trade-offs between TCP and UDP for data transmission.
This lesson explores the necessity of asynchronous programming in web development to prevent UI freezing caused by synchronous I/O operations. Students will learn to implement event-driven patterns and browser persistence APIs to maintain responsive, high-performance applications during network-intensive tasks.
This lesson explores advanced Canvas API techniques for building interactive drawing tools, focusing on state management, composite operations, and mathematical constraints. Students will learn to implement dynamic features like spray brushes and erasers by manipulating canvas context properties and handling mouse events through higher-order patterns.