前言 随着Web技术的迭代更新,前端框架和编程语言也没有停下迭代的脚步。JavaScript编程语言从ECMA5标准更新到如今的ECMA2022标准,前端开发也从静态页面构建,正式进入了工程化开发时代。 笔者从业互联网十多年,亲眼见证了前端技术的发展历程。JavaScript编程语言与其他前端框架的更新迭代速度并驾齐驱,每年都会推出新的语法标准。随着Node.js的问世,JavaScript从无人问津的渺小脚本语言,变成了同样可以构建大型Web应用的主流编程语言。随着TypeScript等类型约束器的问世,JavaScript生态已变得空前强大。笔者从国内的前端架构变迁时代起,便开始致力于JavaScript应用建设工作,构建了大量基于JavaScript编程语言的Web应用,所以笔者打算通过编写书籍的形式,将JavaScript编程语言的岁月变迁分享给读者。 本书从JavaScript基础入门起,以静态页面开发和工程化开发两个方向,介绍了从脚本语言到工程化项目构建的完整历程。读者可以通过阅读本书,快速地掌握JavaScript从发布至今的重要发展历程,以及现代工程化项目中所涉及的所有JavaScript常用特性。从理论基础和API文档到应用开发和底层实现,读者可以通过阅读本书,自底至上地领略JavaScript编程语言的核心。前端技术发展至今,其生态迭代速度异常惊人,但任何框架和其生态都是基于JavaScript核心编程基础实现的,笔者希望阅读本书的读者可以放下浮躁的心,踏实巩固编程语言基础和编程思想。由于JavaScript体系异常庞大,本书以实用性为主,着重介绍开发场景中高频使用的重点的技术及思想,有不完善的地方请各位读者多多包涵。 本书主要内容 第1章主要介绍JavaScript的运行环境、基础语法、内存结构、流程结构及常用的JavaScript基础开发案例。 第2章以API文档为主,主要介绍JavaScript的面向对象编程思想、JavaScript内置对象、浏览器内置对象及开发中涉及的常用对象API。 第3章主要介绍JavaScript的常规DOM操作,结合实际项目案例介绍工作场景中主流的DOM操作思想和常用API。还介绍了浏览器的事件系统、事件传递方式及事件监听器的实现,通过仿真的方式实现浏览器事件监听体系。最后介绍了浏览器常用的其他API。 第4章主要介绍ECMA标准和JavaScript历代ECMA新特性,集中介绍了ES5与ES6以后的新语法对比,附带介绍了ECMA标准迭代过程中更新的新对象与其使用方式。 第5章主要介绍JavaScript的异步编程解决方案,结合浏览器的内存结构,介绍了JavaScript同步异步关系、浏览器线程组成、EventLoop、函数执行栈、递归和栈溢出及Promise的发展历程。 第6章主要介绍JavaScript模块化编程发展历程,包括浏览器中JavaScript模块化发展史、Node.js的环境搭建、CommonJS模块系统、ESM模块系统、工程化开发、打包构建工具及基于脚手架开发的前端工程化项目搭建。 第7章主要介绍NPM包管理器系统、企业级NPM使用规则、Node.js的命令行工具开发、NPM公共依赖发布及NPM私服的搭建。 第8章主要介绍JavaScript的类型约束器来源、静态类型的JavaScript、Flow和TypeScript入门、TypeScript语法和编程特性及基于TypeScript的前后端工程化项目搭建和业务开发。 第9章主要介绍前端工程师需要掌握的网络安全知识,包括客户端脚本攻击、SQL注入攻击、文件上传攻击、DDoS攻击等常用攻防案例,还介绍了HTTP的发展历程及浏览器缓存的工作原理。 第10章主要介绍前端工程师需要掌握的入门级数据结构思想、常用算法思想和编译原理,并结合各种思想实现HTML语法解释器的案例开发。 阅读建议 本书是一本集基础入门、文档大全及案例开发三位一体的技术教程,既包括详细的基础知识介绍,又提供了丰富的实际项目和代码案例,包括详细的项目开发步骤,每个代码片段都有详细的注释标注和对应的操作说明。本书的基础知识、项目实战及原理剖析部分均提供了完整可运行的代码示例,并将涉及的项目源代码开源到线上,这样可以帮助读者更好地自学全方位的技术体系。 阅读本书的读者需要有一定的HTML、CSS及JavaScript基础,有基础的读者可简要阅读前4章内容,研读第5~10章内容。没有相关经验的读者需要先学习Web开发基础再阅读本书,或一边学习Web开发基础一边阅读本书。 第5章异步编程知识集合了大量的文字说明和代码案例,以图文并茂与底层代码实现的方式展开内容,无论是学习期的读者,还是工作经验不满3年的开发者,都要仔细阅读第5章的内容。 第6章和第7章以工作中的脚手架工具为输出目标,介绍了JavaScript模块化及工程化的发展历程,从0到1讲解了JavaScript脚手架工具的由来和原理,并对其进行了代码实现。除此之外,还融入了基于Node.js的命令行工具组件开发和依赖包发布的完整流程,尤其适合对脚手架工具陌生或没有头绪的读者阅读。 第8章以静态类型为核心,结合TypeScript语法,通过企业级项目搭建的标准流程介绍了强类型的JavaScript,以及在企业级应用中的开发方式。本章内容适合有JavaScript工程化项目经验的读者及从事基于TypeScript开发React项目的开发者阅读。 第9章和第10章以理论思想为主,从网络通信到浏览器底层原理进行了全方位介绍,适合编程思想薄弱或理论基础薄弱的读者阅读。第9章介绍的网络安全攻防案例,在实际开发场景中非常重要。读者还可以着重阅读第10章实现的HTML语法解释器,并独立编程实现。 扫描目录上方的二维码可下载本书配套源代码。 致谢 感谢我的家人,尤其是我的大小宝贝,在写作的过程中给予我大力支持和陪伴,使我得以全身心投入写作工作。感谢清华大学出版社赵佳霓编辑,在写作的过程中对我的耐心指导和帮助。 感谢北京华育兴业科技有限公司对我的大力支持; 感谢我的读者,对本书的大力支持,读者的支持就是我写作的动力; 最后,感谢清华大学出版社所有为本书的出版付出努力的老师们,得益于大家的帮助才有本书的顺利出版。 由于时间仓促,书中难免存在不妥之处,请读者见谅,并提出宝贵意见。 张云鹏 2023年9月