知识篇 -- 前端工程化知识点清单
# 前端工程化知识点清单
# 一、模块化开发
- 模块化规范:
- CommonJS: Node.js 默认模块化规范,使用
require和module.exports。 - AMD: 异步模块定义,适用于浏览器端,使用
define和require。 - CMD: 通用模块定义,结合了 CommonJS 和 AMD 的特点,使用
define和require。 - ES Module: ECMAScript 官方模块化规范,使用
import和export。 - 对比表格:
规范 加载方式 适用场景 优点 缺点 CommonJS 同步 Node.js 简单易用 不支持浏览器端 AMD 异步 浏览器端 支持异步加载 语法复杂 CMD 异步 浏览器端 结合 CommonJS 和 AMD 的优点 社区生态不如 AMD ES Module 同步/异步 浏览器端/Node.js 官方标准,未来趋势 兼容性问题
- CommonJS: Node.js 默认模块化规范,使用
- 模块化工具:
- 打包工具:
- Webpack: 功能强大,社区生态丰富,配置灵活。
- Rollup: 专注于打包 JavaScript 库,生成更小体积的代码。
- Parcel: 零配置,开箱即用,适合小型项目。
- Vite: 基于原生 ES Module,开发体验极佳。
- 配置示例:
// webpack.config.js module.exports = { entry: './src/index.js', output: { filename: 'bundle.js', path: path.resolve(__dirname, 'dist') }, module: { rules: [ { test: /\.js$/, exclude: /node_modules/, use: { loader: 'babel-loader' } } ] } };
- 模块加载器:
- SystemJS: 支持加载各种模块化规范的模块。
- RequireJS: 专注于加载 AMD 模块。
- 打包工具:
- 模块化实践:
- 模块拆分原则: 单一职责、高内聚低耦合、可复用性。
- 模块依赖管理: 使用
package.json文件管理项目依赖。 - 模块按需加载: 使用
import()动态导入模块。 - Tree Shaking: 移除未使用的代码,减少打包体积。
# 二、代码规范
- 代码风格:
- ESLint: JavaScript 代码检查工具,可配置各种代码风格规则。
- Prettier: 代码格式化工具,支持多种编程语言。
- Stylelint: CSS 代码检查工具,可配置各种代码风格规则。
- 配置文件示例:
// .eslintrc.js module.exports = { extends: ['airbnb'], rules: { 'no-console': 'off', 'no-unused-vars': 'warn' } };
- 代码质量:
- SonarQube: 代码质量管理平台,提供代码质量报告和问题跟踪。
- Code Climate: 代码质量分析工具,提供代码质量评分和改进建议。
- Git 规范:
- Git Hooks: Git 钩子,可在特定 Git 操作时触发自定义脚本。
- Commitizen: Git Commit Message 格式化工具,提供交互式命令行界面。
- Commitlint: Git Commit Message 校验工具,可配置各种校验规则。
- Commit Message 模板:
<type>(<scope>): <subject> <BLANK LINE> <body> <BLANK LINE> <footer>
- 文档规范:
- JSDoc: JavaScript 文档生成工具,可根据代码注释生成 API 文档。
- TypeDoc: TypeScript 文档生成工具,可根据代码注释生成 API 文档。
# 三、版本控制
- Git 基础:
- 仓库管理:
git init,git clone,git remote,git fetch,git pull,git push - 分支管理:
git branch,git checkout,git merge,git rebase - 版本回退:
git reset,git revert - 冲突解决:
git status,git diff,git mergetool
- 仓库管理:
- Git 工作流:
- Git Flow: 功能分支工作流,适合大型项目。
- GitHub Flow: 简化版 Git Flow,适合小型项目。
- GitLab Flow: 基于 Git Flow 的改进版本,适合持续交付。
- Git 工具:
- SourceTree: 图形化 Git 客户端,支持 Windows 和 macOS。
- GitKraken: 图形化 Git 客户端,支持 Windows、macOS 和 Linux。
- TortoiseGit: Windows 资源管理器集成 Git 客户端。
# 四、构建工具
- 任务运行器:
- Grunt: 基于配置的构建工具,插件丰富。
- Gulp: 基于代码的构建工具,流式处理,性能优异。
- 打包工具:
- Webpack: 功能强大,社区生态丰富,配置灵活。
- Rollup: 专注于打包 JavaScript 库,生成更小体积的代码。
- Parcel: 零配置,开箱即用,适合小型项目。
- Vite: 基于原生 ES Module,开发体验极佳。
- 构建优化:
- 代码压缩: 使用 UglifyJS、Terser 等工具压缩 JavaScript 代码。
- 图片压缩: 使用 imagemin 等工具压缩图片。
- 代码分割: 使用 Webpack 的
SplitChunksPlugin进行代码分割。 - 缓存策略: 使用 Webpack 的
Cache配置缓存策略。 - 构建速度优化: 使用 Webpack 的
DllPlugin、HappyPack等插件优化构建速度。
# 五、自动化测试
- 单元测试:
- Jest: JavaScript 测试框架,功能强大,社区生态丰富。
- Mocha: JavaScript 测试框架,灵活易用。
- Chai: 断言库,提供多种断言风格。
- 代码示例:
// sum.js function sum(a, b) { return a + b; } module.exports = sum; // sum.test.js const sum = require('./sum'); test('adds 1 + 2 to equal 3', () => { expect(sum(1, 2)).toBe(3); });
- 组件测试:
- Enzyme: React 组件测试工具,提供多种 API 操作组件。
- Vue Test Utils: Vue 组件测试工具,提供多种 API 操作组件。
- React Testing Library: React 组件测试工具,鼓励从用户角度测试组件。
- 端到端测试:
- Cypress: 端到端测试框架,提供可视化界面和调试工具。
- Puppeteer: Node.js 库,提供 API 控制 Chrome 浏览器。
- Playwright: Node.js 库,提供 API 控制多种浏览器。
- 测试覆盖率:
- Istanbul: JavaScript 代码覆盖率工具,生成代码覆盖率报告。
- Jest: 内置代码覆盖率工具,生成代码覆盖率报告。
- 持续集成:
- Travis CI: 持续集成平台,支持 GitHub 项目。
- CircleCI: 持续集成平台,支持 GitHub 和 Bitbucket 项目。
- Jenkins: 持续集成工具,功能强大,可定制化程度高。
# 六、部署
- 静态资源部署:
- Nginx: Web 服务器,可用于部署静态资源。
- CDN: 内容分发网络,加速静态资源访问速度。
- 服务器部署:
- Docker: 容器化技术,可将应用打包成镜像,方便部署。
- Kubernetes: 容器编排工具,可管理多个 Docker 容器。
- 自动化部署:
- Jenkins: 持续集成工具,可用于自动化部署。
- GitLab CI/CD: GitLab 内置的持续集成和持续交付工具。
- 监控报警:
- Sentry: 错误监控平台,可捕获和跟踪应用程序错误。
- Prometheus: 监控系统,可收集和存储应用程序指标。
- Grafana: 数据可视化工具,可将 Prometheus 数据可视化。
# 七、性能优化
- 网络优化:
- 减少 HTTP 请求: 合并文件、使用 CSS Sprites、使用字体图标。
- 使用 CDN: 将静态资源部署到 CDN,加速资源访问速度。
- 启用 Gzip 压缩: 压缩 HTTP 响应体,减少传输数据量。
- 使用 HTTP/2: 支持多路复用、头部压缩等特性,提升网络性能。
- 资源优化:
- 图片优化: 压缩图片、使用 WebP 格式、使用懒加载。
- 代码压缩: 压缩 JavaScript、CSS 代码,减少文件体积。
- 代码分割: 将代码拆分成多个文件,按需加载。
- 懒加载: 延迟加载非关键资源,提升页面加载速度。
- 渲染优化:
- 减少重排重绘: 使用
transform代替top、left,使用visibility代替display: none。 - 使用 CSS 动画代替 JavaScript 动画: CSS 动画性能更优。
- 使用 Web Worker: 将耗时任务放到 Web Worker 中执行,避免阻塞主线程。
- 减少重排重绘: 使用
# 八、新技术
- TypeScript: JavaScript 的超集,提供类型系统和面向对象编程特性。
- WebAssembly: 一种新的二进制格式,可在浏览器中运行高性能代码。
- Progressive Web Apps (PWA): 渐进式 Web 应用,提供类似原生应用的体验。
- Web Components: 一组 Web 平台 API,允许创建可重用的自定义元素。
- Serverless: 无服务器架构,开发者无需管理服务器,只需关注业务逻辑。
# 九、其他
- 前端安全:
- XSS: 跨站脚本攻击,攻击者注入恶意脚本到网页中。
- CSRF: 跨站请求伪造,攻击者伪造用户身份发送恶意请求。
- SQL 注入: 攻击者注入恶意 SQL 语句到数据库中。
- 前端监控:
- 性能监控: 监控页面加载速度、资源加载时间等指标。
- 错误监控: 监控 JavaScript 错误、网络请求错误等。
- 用户行为监控: 监控用户点击、滚动、停留时间等行为。
- 前端架构:
- MVC: 模型-视图-控制器架构,将应用程序逻辑分为三个部分。
- MVVM: 模型-视图-视图模型架构,适用于数据驱动的应用程序。
- Flux: 一种应用架构模式,强调单向数据流。
- Redux: 基于 Flux 的应用状态管理工具。
- 前端框架:
- React: 用于构建用户界面的 JavaScript 库。
- Vue: 渐进式 JavaScript 框架,用于构建用户界面。
- Angular: 基于 TypeScript 的前端框架,用于构建大型应用程序。
# 总结:
这份优化后的前端工程化知识点清单涵盖了前端开发的各个方面,并提供了详细的解释和示例代码,希望能够帮助你更好地理解和掌握前端工程化。