第一节:前端必须知道的开发调试知识
1.1 Chrome DevTools 调试
Chrome DevTools 是开发 Web 应用时非常重要的调试工具。它可以帮助开发者进行页面调试、性能优化、网络分析等工作。DevTools 的主要功能包含:
- Elements:查看和实时编辑 DOM 树和 CSS。
- Console:查看控制台日志,执行 JavaScript 命令。
- Sources:查看和调试 JavaScript 源代码,包括设置断点、查看变量值等。
- Network:分析网络请求和响应,查看加载资源的详细信息,优化性能。
- Performance:用于性能分析和优化,帮助找出导致页面卡顿的瓶颈。
问题:如何通过 Chrome DevTools 识别阻塞页面加载的脚本? 回答:通过 Network 面板查看加载时间,查看是否有脚本文件的加载时间特别长,或者在 Performance 面板中查看页面的加载和渲染流程,以找到阻塞的脚本。
1.2 移动端 H5 调试
移动端的 H5 页面调试需要模拟真实的移动设备环境。常用的调试方式包括:
- Chrome 远程调试:通过 Chrome 浏览器将移动设备连接到电脑,然后在 DevTools 中直接调试移动端页面。
- 模拟器调试:通过 Chrome DevTools 的设备模拟功能,模拟不同型号的移动设备,检查页面的适配效果。
问题:如何通过 Chrome DevTools 模拟不同的网络环境进行 H5 页面调试? 回答:在 Network 面板中,使用网络速度选项模拟 3G、4G 等不同的网络情况,以检查页面在不同网络下的加载表现。
1.3 Node.js 应用调试
Node.js 应用的调试可以通过 内置调试器 或 VSCode 调试功能 实现:
- Node.js 内置调试器:可以通过命令
node --inspect your_script.js启动调试,在浏览器中通过chrome://inspect进行调试。 - VSCode 调试:配置 VSCode 中的
launch.json文件,然后使用断点调试,调试体验更加友好和直观。
问题:如何在 VSCode 中配置 Node.js 调试? 回答:在 VSCode 中创建
launch.json文件,配置调试项,例如程序入口文件路径和 Node.js 环境等,点击 Debug 按钮即可调试 Node.js 应用。
1.4 常用代理工具的使用
在开发过程中,常常需要调试不同环境下的 API 请求,这时代理工具非常有用。常见的代理工具包括:
- Charles:可用于抓包、修改 HTTP 请求和响应,用于调试 API、测试接口等。
- Fiddler:另一款强大的抓包工具,适用于 Windows 环境。
代理工具可以帮助调试跨域问题、查看和修改网络请求,并了解请求响应的具体细节。
问题:如何使用 Charles 来调试 HTTPS 请求? 回答:首先安装并信任 Charles 的根证书,然后在移动设备或浏览器中配置代理,将网络流量引导到 Charles 进行抓包和调试。
1.5 课前与课后材料
- 课前:
- 安装 Chrome 浏览器。
- 可选:安装代理工具,如 Charles,并学习其基础用法。
- 课后:
- 使用 Chrome DevTools 实践各个面板的功能。
- 使用代理工具,如 Charles,进行实际调试操作,以提高对网络请求的理解和调试能力。
第二节:TypeScript 入门
2.1 TypeScript 概述
TypeScript 是 JavaScript 的超集,提供了静态类型检查功能,使代码更加健壮,易于调试和维护。TypeScript 增加了类型系统和一些 JavaScript 没有的新特性,帮助开发者更好地构建大型项目。
问题:为什么使用 TypeScript 而不是纯 JavaScript? 回答:TypeScript 通过类型系统捕捉潜在错误,在编写代码时提供编译器的实时检查,可以减少运行时错误,提高代码的可维护性和团队协作效率。
2.2 TypeScript 基础语法
TypeScript 的基础语法包括:
- 类型系统:例如
number、string、boolean等原始类型,以及对象、数组、函数类型等。 - 泛型:使得函数和类具有更高的复用性。例如:
function identity<T>(arg: T): T { return arg; } - 类型别名:可以为复杂的类型定义别名,便于代码的简化和复用。
- 类型字面量:通过使用特定的值来限制类型,比如使用固定的字符串值:
let direction: 'left' | 'right'; direction = 'left'; // 只能是 'left' 或 'right'
2.3 TypeScript 高级类型与实例
TypeScript 还提供了诸如 联合类型、交叉类型 和 条件类型 等高级类型,使得开发者能够更灵活地表达变量和函数的行为。类型推断功能允许 TypeScript 自动推断出变量的类型,简化代码编写。
问题:什么是交叉类型和联合类型? 回答:
- 联合类型(Union Types) 允许一个变量有多种可能的类型,用
|连接。例如:let value: string | number;。 - 交叉类型(Intersection Types) 是将多个类型合并为一个类型,用
&连接。例如:type A = { name: string }; type B = { age: number }; type AB = A & B;。
2.4 TypeScript 工程应用
在工程应用中,TypeScript 的 tsconfig.json 文件用于配置编译选项,开发者可以自定义目标语言版本、编译输出路径等。此外,通过结合 TypeScript 和 JavaScript,一步步将项目迁移到 TypeScript,是一种推荐的渐进式开发方式。
问题:如何将现有的 JavaScript 项目逐步迁移到 TypeScript? 回答:可以从最小化改动开始,首先添加类型声明文件(
.d.ts),然后逐步将 JavaScript 文件重命名为.ts,并通过添加类型注释,慢慢增强代码的类型系统。
2.5 课前与课后材料
- 课前:
- 学习 JavaScript 的基础语法,可以参考 MDN。
- 可选:安装 TypeScript 开发工具,推荐使用 Visual Studio Code。
- 课后:
- 学习官网的 TypeScript 文档,更深入了解 TypeScript 特性。
- 尝试将一个简单的 JavaScript 项目,如 Todo List,用 TypeScript 改造,以巩固所学内容。