aurora blog
  • JS

    • 基本汇总
    • Date时间
    • Array方法
    • String 方法
    • Object方法
    • RegExp正则
    • Es6 新特性等
    • Event-Loop
    • Http and Https
    • for in和for of区别
    • Web Worker
    • Promise && async
    • 堆内存 & 栈内存
    • JS设计模式探索
    • npm & yarn
    • Fetch和Axios的区别
    • 学习及面试问题整理
    • URL 输入到页面加载过程
    • 跨域&nginx本地项目代理
  • FE框架

    • react

      • 基本用法
      • react生命周期
      • hooks 16.8版本后
      • Route原理
      • Redux源码解析
      • React16 Fiber
      • React-VirtualDOM
      • React事件委托机制
      • React性能优化
      • 状态管理方案对比
      • React 18新特性
    • vue

      • vue 基本用法
      • vue 生命周期
      • VirtualDOM
      • vue 事件委托
      • vue 架构
      • vue 状态管理
      • 问题等
    • React-Native

      • React-Native 基本用法
    • 微前端

      • 遇到的问题
    • 鸿蒙 harmony

      • harmony 基础
  • 构建工具

    • webpack

      • Webpack配置详解
      • Webpack的使用
      • Babel-polyfill
      • webpack面试题
    • vite

      • vite配置详解
      • vite面试题
    • rollup

      • Rollup配置详解
      • rollup面试题
    • 构建工具对比
  • 性能优化

    • 性能优化策略
    • 缓存策略
    • 性能优化面试题
  • 浏览器

    • 浏览器渲染原理
    • 浏览器缓存机制
    • 浏览器面试题
  • 工程化

    • 代码规范
    • 工程化面试题
  • 前端安全

    • XSS 攻击与防护
    • CSRF 攻击与防护
    • 前端安全面试题
  • 移动端开发

    • 移动端适配
    • 移动端开发面试题
  • 前端监控

    • 错误监控
    • 性能监控
    • 前端监控面试题
  • Typescript

    • Typescript详解
  • Servers

    • Nodejs
    • Nginx
  • Git命令

    • git常用规范
  • 数据库

    • mongodb
    • mongodb
  • Other

    • Jenkins自动化部署

工程化面试题

  • 代码规范
    • ESLint 和 Prettier 的区别?
    • 如何配置 Git Hooks?
    • Commit 规范有哪些?
  • Monorepo
    • 什么是 Monorepo?
    • Monorepo 工具有哪些?
    • 如何选择 Monorepo 工具?
  • 构建工具
    • 如何优化构建速度?
    • 如何优化构建产物?
  • CI/CD
    • 什么是 CI/CD?
    • CI/CD 流程是什么?
    • 常用的 CI/CD 工具有哪些?
  • 代码审查
    • Code Review 的重要性?
    • Code Review 应该关注什么?
  • 组件库开发
    • 如何开发组件库?
    • 组件库的构建配置?
    • 如何维护组件库?
  • 最佳实践
    • 前端工程化的核心是什么?
    • 如何提升团队开发效率?

代码规范

ESLint 和 Prettier 的区别?

ESLint:

  • 代码质量检查
  • 发现潜在问题
  • 可配置规则

Prettier:

  • 代码格式化
  • 统一代码风格
  • 自动格式化

配合使用:

  • ESLint 负责代码质量
  • Prettier 负责代码格式
  • 使用 eslint-config-prettier 避免冲突

如何配置 Git Hooks?

使用 Husky:

npm install --save-dev husky
npx husky install

Pre-commit:

# .husky/pre-commit
npm run lint
npm run test

lint-staged:

{
  "lint-staged": {
    "*.{js,jsx}": ["eslint --fix", "prettier --write"]
  }
}

Commit 规范有哪些?

Conventional Commits:

  • feat:新功能
  • fix:修复 bug
  • docs:文档变更
  • style:代码格式
  • refactor:重构
  • perf:性能优化
  • test:测试
  • chore:构建工具

Monorepo

什么是 Monorepo?

定义:

  • 多个项目放在一个仓库
  • 共享代码和配置
  • 统一管理依赖

优势:

  • 代码复用方便
  • 统一版本管理
  • 原子性提交

劣势:

  • 仓库体积大
  • 权限管理复杂
  • 构建时间长

Monorepo 工具有哪些?

Lerna:

  • 传统的 Monorepo 工具
  • 管理包版本
  • 发布包

Nx:

  • 更快的构建
  • 更好的缓存
  • 依赖图可视化

Turborepo:

  • 增量构建
  • 并行执行
  • 远程缓存

如何选择 Monorepo 工具?

选择 Lerna 如果:

  • 项目较小
  • 需要简单的包管理

选择 Nx 如果:

  • 项目较大
  • 需要构建优化
  • 需要依赖图

选择 Turborepo 如果:

  • 需要最快的构建速度
  • 需要远程缓存

构建工具

如何优化构建速度?

方法:

  1. 使用缓存
  2. 并行构建
  3. 增量构建
  4. 使用 esbuild
  5. 减少插件

如何优化构建产物?

方法:

  1. 代码分割
  2. Tree Shaking
  3. 代码压缩
  4. 资源优化
  5. 使用 CDN

CI/CD

什么是 CI/CD?

CI (Continuous Integration):

  • 持续集成
  • 自动构建和测试
  • 快速发现问题

CD (Continuous Deployment):

  • 持续部署
  • 自动部署到生产环境

CI/CD 流程是什么?

流程:

  1. 代码提交
  2. 触发 CI
  3. 运行测试
  4. 构建项目
  5. 部署到测试环境
  6. 部署到生产环境

常用的 CI/CD 工具有哪些?

GitHub Actions:

name: CI
on: [push]
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - run: npm install
      - run: npm test

Jenkins:

  • 可配置性强
  • 插件丰富
  • 适合复杂场景

GitLab CI:

  • 集成在 GitLab
  • 配置简单
  • 适合 GitLab 项目

代码审查

Code Review 的重要性?

好处:

  1. 发现 bug
  2. 提升代码质量
  3. 知识分享
  4. 统一代码风格

Code Review 应该关注什么?

关注点:

  1. 功能是否正确
  2. 代码是否清晰
  3. 是否有性能问题
  4. 是否有安全漏洞
  5. 测试是否充分

组件库开发

如何开发组件库?

步骤:

  1. 搭建项目结构
  2. 配置构建工具
  3. 编写组件
  4. 编写文档
  5. 编写测试
  6. 发布包

组件库的构建配置?

Rollup 配置:

export default {
  input: 'src/index.ts',
  output: [
    { file: 'dist/index.esm.js', format: 'es' },
    { file: 'dist/index.cjs.js', format: 'cjs' },
  ],
  external: ['react'],
};

如何维护组件库?

方法:

  1. 版本管理(Semantic Versioning)
  2. 文档维护
  3. 测试覆盖
  4. 更新日志
  5. 社区反馈

最佳实践

前端工程化的核心是什么?

核心:

  1. 代码规范
  2. 构建优化
  3. 自动化测试
  4. 持续集成
  5. 文档完善

如何提升团队开发效率?

方法:

  1. 统一代码规范
  2. 使用 Monorepo
  3. 自动化流程
  4. 代码审查
  5. 知识分享
最近更新:: 2025/11/20 14:50
Contributors: liyulai
Prev
代码规范