🔥 欢迎来到前端面试通关指南专栏!从js精讲到框架到实战,渐进系统化学习,坚持解锁新技能,祝你轻松拿下心仪offer。
前端面试通关指南专栏主页
前端面试专栏规划详情
项目实战与工程化模块:项目亮点与技术难点梳理
在项目实战中,工程化能力是保障项目质量、效率和可维护性的核心。工程化不仅包含技术选型和架构设计,还涉及开发流程、自动化工具、协作规范等多个维度。本文将从工程化视角,梳理项目亮点与技术难点,聚焦如何通过工程化手段解决实战中的问题,提升项目整体效能。
一、工程化驱动的项目亮点
工程化背景下的项目亮点,更强调"流程优化""工具链整合""规范落地"带来的系统性提升,而非单一技术点的突破。
1.1 自动化流程与效率提升
在现代化软件开发中,自动化流程是提升工程效率的关键策略。通过构建完善的自动化工具链,团队能够显著减少重复性劳动,优化开发流程,从而缩短从代码提交到产品上线的整个周期。
具体而言,一个完整的自动化工具链通常包含以下关键环节:
-
代码构建自动化:
- 使用如Webpack、Rollup等构建工具自动化处理代码打包
- 示例:配置自动化的ES6转ES5、代码压缩、Tree Shaking等优化步骤
-
持续集成(CI):
- 通过Jenkins、GitHub Actions等平台实现代码提交后的自动构建和测试
- 典型工作流:代码提交 → 触发构建 → 运行单元测试 → 生成测试报告
-
自动化测试:
- 单元测试(Jest/Mocha)
- E2E测试(Cypress/Selenium)
- 集成测试(确保各模块协同工作)
-
自动化部署(CD):
- 基于Docker的容器化部署
- 蓝绿部署、金丝雀发布等策略的自动化实施
- 与云平台(AWS、Azure等)集成的自动化发布流程
应用场景示例:
- 电商平台:自动化处理每日数百次的商品信息更新部署
- SaaS服务:实现多环境(dev/staging/prod)的自动化同步部署
- 移动应用:自动化构建不同渠道的安装包并分发到测试平台
通过实施这些自动化措施,团队可以将原本需要数小时的手动操作缩短至分钟级别,同时显著降低人为错误率。根据行业实践数据,完善的自动化流程通常能使发布效率提升300%以上,使工程师能够将更多精力投入到核心业务逻辑的开发中。
案例场景
某中型前端团队(10人+)开发企业级管理系统,此前存在"环境不一致导致bug频发""手动部署耗时且易出错"等问题。
亮点提炼
-
CI/CD流水线搭建:基于GitLab CI+Docker构建自动化流程,实现"提交代码→自动 lint→单元测试→构建镜像→部署测试环境"全链路自动化。具体技术栈包括:
- 代码检查工具 :ESLint(代码规范校验)+ Prettier(代码格式化)+ StyleLint(CSS规范校验),通过
lint-staged
仅检查暂存区代码,提升检查效率。 - 测试工具链 :Jest(单元测试)+ React Testing Library(组件测试)+ Cypress(端到端测试),配置
jest --coverage
生成测试覆盖率报告,强制核心模块覆盖率≥80%。 - 构建工具 :Webpack 5(生产环境构建)+ Vite(开发环境热更新),结合
webpack-bundle-analyzer
分析包体积,通过splitChunks
拆分公共依赖,构建产物体积减少40%。 - 部署工具 :Docker(容器化打包)+ Docker Compose(多服务编排)+ Nginx(静态资源托管),通过
docker build --cache-from
复用缓存层,构建时间从15分钟压缩至5分钟。
最终,单次部署时间从30分钟(手动)降至5分钟,部署成功率从85%提升至100%。
- 代码检查工具 :ESLint(代码规范校验)+ Prettier(代码格式化)+ StyleLint(CSS规范校验),通过
-
环境一致性保障:
- 开发环境:采用
docker-compose.yml
定义前端、后端、数据库等服务,通过npm run dev:docker
一键启动整套环境,新成员入职环境配置时间从1天缩短至10分钟。 - 生产环境:基于Alpine Linux制作轻量化镜像(体积从800MB压缩至150MB),通过
docker-entrypoint.sh
脚本自动注入环境变量(区分开发/测试/生产配置),解决"开发环境正常,生产环境报错"的问题,环境相关bug占比从30%降至5%。
- 开发环境:采用
-
自动化测试体系:
- 单元测试:Jest配置
transform: { '^.+\\.(ts|tsx)$': 'ts-jest' }
处理TypeScript文件,通过jest.mock
模拟接口请求,实现前端逻辑的独立测试。 - E2E测试:Cypress配置
baseUrl: 'http://localhost:8080'
,编写核心流程测试用例(如登录→创建订单→支付),设置CI阶段自动运行,拦截70%的回归bug。
核心模块测试覆盖率从20%提升至80%,线上bug率下降60%。
- 单元测试:Jest配置
工程化价值
- 用工具替代人工操作,减少人为失误(如部署命令输错、测试用例漏执行)。
- 量化效率提升(如部署时间、bug率),体现流程优化的实际收益。
1.2 模块化与可复用架构
现代前端工程化项目的核心原则之一就是强调"复用"与"解耦"。通过模块化设计和组件化开发实践,可以显著提升代码质量,增强项目的可维护性和扩展性。
1.2.1 模块化设计原则
模块化是指将系统分解为多个独立的、可替换的功能单元。常见实现方式包括:
- ES6 Module:使用import/export语法组织代码
- CommonJS:Node.js环境的模块规范
- AMD:异步模块定义规范
例如,一个电商网站可以将商品展示、购物车、支付等功能拆分为独立模块:
javascript
// 商品模块
export function getProductList() {...}
// 购物车模块
export function addToCart() {...}
// 支付模块
export function processPayment() {...}
1.2.2 组件化开发实践
组件化是模块化在前端UI层的具体实现:
- UI组件:按钮、表单等基础元素
- 业务组件:商品卡片、订单列表等
- 页面组件:组合多个业务组件形成完整页面
以React为例的组件封装:
jsx
// 可复用的按钮组件
function PrimaryButton({children, onClick}) {
return (
<button className="btn-primary" onClick={onClick}>
{children}
</button>
);
}
1.2.3 架构分层示例
典型的三层架构:
- 展现层:处理UI渲染和用户交互
- 业务逻辑层:处理核心业务流程
- 数据访问层:负责数据持久化和外部API调用
1.2.4 实现解耦的关键技术
- 依赖注入:通过控制反转降低模块耦合度
- 接口抽象:定义清晰的模块边界
- 事件通信:使用自定义事件实现模块交互
1.2.5 实际效益
- 开发效率:复用现有模块可节省30%-50%开发时间
- 维护成本:错误定位和修复时间减少40%以上
- 团队协作:不同模块可并行开发,提升交付速度
通过合理应用这些原则,可以使系统具备更好的可扩展性,当需求变更时,只需修改特定模块而不会影响整体系统稳定性。
案例场景
某电商平台需快速迭代多个业务线(如生鲜、家电、服饰),各业务线存在大量相似功能(如商品列表、购物车、结算),但此前存在"重复开发、维护成本高"的问题。
亮点提炼
- 业务组件库与设计系统:基于Vue3+TypeScript开发业务组件库(包含30+通用组件),统一UI设计规范与交互逻辑,新业务线开发周期从2个月缩短至2周,代码复用率从30%提升至70%。
- 微前端架构落地:采用qiankun框架实现各业务线独立开发、独立部署,主应用负责公共资源(如用户登录、权限管理),子应用专注业务逻辑,跨团队协作冲突减少80%,单业务线迭代周期从2周压缩至3天。
工程化价值
- 通过"抽象共性、隔离个性",实现业务快速复制与扩展,支撑企业规模化发展。
- 组件库和架构设计需配套文档(如Storybook)和版本管理,确保复用性和兼容性。
1.3 质量监控与线上稳定性
在现代软件开发中,工程化项目不仅关注功能实现,更需要建立完善的质量保障体系。通过全方位的质量监控手段和智能化的告警机制,确保系统在复杂多变的线上环境中稳定运行。
主要监控维度包括:
-
性能监控:实时追踪系统响应时间(如API平均响应时间控制在200ms以内)、吞吐量(如QPS峰值预警机制)和资源利用率(CPU、内存、磁盘I/O等)
-
业务监控:核心业务指标监控(如支付成功率、订单转化率等),设置动态阈值告警(如波动超过±15%自动触发告警)
-
日志监控:通过ELK等日志系统实现:
- 错误日志实时采集(自动捕获500/400等状态码)
- 异常堆栈智能聚类(相同的报错自动合并)
- 关键操作审计追踪(如管理员权限变更记录)
-
全链路追踪:基于OpenTelemetry等标准实现:
- 分布式事务追踪(跨服务调用链路可视化)
- 慢请求根因分析(自动标记耗时超过1s的调用链)
- 依赖服务健康度评估(下游服务可用性评分)
稳定性保障措施:
- 灰度发布:采用分批次滚动更新策略(如先5%流量,观察30分钟无异常再全量)
- 熔断降级:配置Hystrix等熔断规则(如连续失败3次触发熔断,30秒后自动恢复)
- 容量规划:基于历史数据预测(如大促前压力测试+50%资源预留)
- 应急预案:标准化故障处理流程(1-5-10原则:1分钟发现,5分钟定位,10分钟恢复)
通过建立这样的全链路监控体系,项目团队可以提前发现潜在问题(如通过趋势预测提前扩容),快速定位线上故障(平均定位时间缩短80%),最终实现99.99%的系统可用性目标。同时,所有的监控数据都会进入数据仓库,为后续的系统优化提供数据支撑。
案例场景
某高并发交易系统(日均订单10万+),此前因"缺乏实时监控,线上故障发现滞后"导致用户投诉。
亮点提炼
- 全链路监控体系:整合Prometheus(指标监控)、ELK(日志分析)、Sentry(前端错误跟踪),实现"接口响应时间、错误率、用户行为"的实时可视化。线上故障平均发现时间从2小时缩短至5分钟,故障修复时间从1小时降至15分钟。
- 灰度发布与A/B测试:基于K8s实现金丝雀发布,新功能先上线10%流量,通过监控指标验证稳定性后再全量发布。近3次重大功能迭代,线上问题率从15%降至3%。
工程化价值
- 监控体系不仅是"故障报警器",更是"性能优化指南针"(如通过指标定位高频慢接口)。
- 灰度发布降低试错成本,是大型项目迭代的"安全网"。
二、工程化实践中的技术难点
工程化落地过程中,面临的难点往往是"工具链整合的复杂性""团队规范的执行阻力""跨模块协作的壁垒"等系统性问题,需结合技术手段与管理策略解决。
2.1 多工具链整合与兼容性
在现代前端工程化实践中,多工具链的整合与兼容性是一个关键挑战。随着技术生态的快速发展,项目通常会同时使用多种工具链来完成不同阶段的任务,例如:
- 构建工具链:Webpack、Rollup、Vite、Parcel等
- 测试工具链:Jest、Mocha、Cypress、Playwright等
- 部署工具链:GitHub Actions、Jenkins、Docker、Kubernetes等
- 代码质量工具链:ESLint、Prettier、Stylelint等
当团队技术栈呈现多元化时,这些工具间的兼容性问题尤为突出。常见问题包括:
- 版本冲突:不同工具依赖相同库的不同版本(如Babel 6 vs Babel 7)
- 配置不一致:各工具配置文件格式差异(如webpack.config.js vs rollup.config.js)
- 执行环境差异:开发环境与生产环境的工具表现不一致
- 插件生态不兼容:特定插件可能只支持某个工具的特定版本
解决方案建议:
-
统一版本管理:
- 使用package.json的peerDependencies明确依赖关系
- 通过npm/yarn resolutions特性强制统一版本
- 示例:在monorepo项目中统一所有子包的Babel版本
-
标准化配置:
- 开发共享配置预设(如eslint-config-prettier)
- 使用cosmiconfig等工具实现配置文件的统一解析
- 示例:创建团队统一的webpack基础配置模板
-
抽象工具层:
- 开发内部CLI工具封装底层工具调用
- 使用NX、Lerna等monorepo工具管理多包项目
- 示例:通过自定义脚本统一处理jest和cypress的测试执行
-
持续集成优化:
- 在CI流程中添加工具兼容性检查步骤
- 使用Docker保证环境一致性
- 示例:在GitHub Actions中添加工具版本校验的job
随着微前端、模块化等架构的普及,工具链的兼容性问题将变得更加复杂。建议团队建立定期的工具链评估机制,及时更新技术方案,并在项目初期就规划好工具整合策略。
案例场景
某团队同时维护Vue2、Vue3、React三个技术栈的项目,需统一构建、测试和部署流程。
难点与解决方案
- 难点:不同框架的构建配置差异大(如Vue2用vue-cli,Vue3用Vite,React用create-react-app);测试工具对不同框架的支持度不一(如Enzyme对React更友好,Vue Test Utils对Vue更适配)。
- 解决方案 :
- 抽象"工程化基座":基于Node.js封装统一的CLI工具,屏蔽底层框架差异,提供标准化命令(如
cli dev
启动开发环境、cli test
执行测试),底层根据项目类型自动适配对应工具。 - 测试层统一:采用Jest作为测试运行器,针对不同框架编写适配层(如Vue项目集成Vue Test Utils,React项目集成React Testing Library),实现测试用例语法一致。
- 抽象"工程化基座":基于Node.js封装统一的CLI工具,屏蔽底层框架差异,提供标准化命令(如
工程化视角
- 避免"为统一而统一",需平衡"规范一致性"与"框架特性",允许底层工具差异,但对外暴露统一接口。
2.2 大型项目的模块化与依赖管理
随着项目规模扩大,代码组织方式需要从简单的单文件结构转变为模块化架构。以典型的前端项目为例,当代码量超过10万行时,通常会采用以下模块化方案:
-
功能模块划分:
-
按业务功能划分(如用户中心、订单系统)
-
按技术层次划分(如UI组件层、数据服务层)
-
典型目录结构示例:
/src /modules /user # 用户模块 /components /services /stores /order # 订单模块 /shared # 公共模块
-
-
依赖关系管理:
- 使用package.json(Node.js)或build.gradle(Android)等配置文件
- 常见依赖类型:
- 直接依赖(dependencies)
- 开发依赖(devDependencies)
- 对等依赖(peerDependencies)
-
典型问题及解决方案:
-
循环依赖:
- 场景:模块A依赖模块B,同时模块B又反向依赖模块A
- 解决方案:引入中间抽象层(interface),使用依赖注入
- 检测工具:madge(Node.js)、JDepend(Java)
-
版本冲突:
- 示例:模块A需要lodash@4.x,模块B需要lodash@3.x
- 解决方案:
- 使用版本范围语法(^1.2.3)
- 通过yarn resolutions或Maven dependencyManagement强制统一版本
-
构建体积膨胀:
- 现象:最终打包包含多个版本的相同库
- 优化方案:
- 代码分割(code splitting)
- Tree Shaking(Webpack/Rollup)
- 动态导入(import()语法)
-
-
现代解决方案:
- 微前端架构(single-spa、qiankun)
- Monorepo管理(Lerna、Nx、Turborepo)
- 模块联邦(Webpack 5特性)
在企业级项目中,通常会结合CI/CD建立依赖自动化检查机制,例如:
- 定期运行
npm audit
检查安全漏洞 - 使用RenovateBot自动更新依赖
- 通过SonarQube进行依赖质量分析
案例场景
某大型前端项目(代码量50万行+,依赖包200+),构建时间长达15分钟,且常因依赖版本冲突导致构建失败。
难点与解决方案
- 难点:第三方依赖版本不一致(如A模块依赖lodash@4.17.0,B模块依赖lodash@3.0.0);内部模块划分模糊,导致循环依赖(如"用户模块"与"订单模块"相互引用)。
- 解决方案 :
- 依赖管理:引入pnpm作为包管理器,利用其"硬链接+符号链接"特性实现依赖共享,依赖安装时间从5分钟降至1分钟;通过
pnpm dedupe
统一第三方依赖版本,冲突率下降90%。 - 模块治理:基于ESModule规范梳理内部依赖,通过"领域驱动设计(DDD)"划分模块边界(如"用户中心""商品管理"等独立领域),禁止跨领域直接引用,循环依赖问题从每周3次降至0次。
- 依赖管理:引入pnpm作为包管理器,利用其"硬链接+符号链接"特性实现依赖共享,依赖安装时间从5分钟降至1分钟;通过
工程化视角
- 依赖管理需"工具+规范"双管齐下:工具解决版本冲突,规范明确模块职责与通信方式(如通过事件总线或API网关通信)。
2.3 团队协作与规范落地
在多人协作的软件开发项目中,代码风格不一致、分支管理混乱和文档滞后是影响开发效率的三大常见问题。这些问题往往会导致以下具体后果:
-
代码风格不一:
- 不同开发者使用不同的缩进、命名规范(如有的用camelCase,有的用snake_case)
- 注释风格差异导致可读性下降
- 示例:一个团队中有人使用2空格缩进,有人使用4空格,合并时产生大量无意义冲突
-
分支管理混乱:
- feature分支长期不合并产生"僵尸分支"
- 多个hotfix分支同时存在导致修复版本混乱
- 典型场景:开发人员A在feature/login分支修改了与main分支冲突的公共组件
-
文档滞后:
- API文档与实现不同步
- 过时的架构图导致新成员理解偏差
- 常见现象:接口返回字段已变更但Swagger文档未更新
工程化解决方案应包含以下强制措施:
- 代码层面:通过ESLint/Prettier等工具实现自动化代码风格检查
- 流程层面:制定清晰的Git Flow规范,设置protected分支
- 文档层面:将文档更新纳入CI流程,设置文档覆盖率检查
- 文化层面:定期组织代码评审会议,建立规范考试机制
实施示例:
- 在package.json中配置husky钩子,在pre-commit阶段自动运行lint检查
- 使用GitLab的Merge Request模板强制要求填写变更说明
- 搭建内部文档平台,设置文档更新提醒机器人
注:规范落地需要结合自动化工具+人工检查+奖惩制度,建议初期采用渐进式策略,先从新项目试点再逐步推广到全团队。
案例场景
某跨部门协作项目(前端、后端、测试共20+人),因"代码提交不规范""测试环境频繁被覆盖"导致协作效率低下。
难点与解决方案
- 难点:开发人员提交信息随意(如"fix bug""更新代码"),难以追溯变更原因;测试环境仅有一个,不同功能的开发分支频繁部署,相互干扰。
- 解决方案 :
- 规范工具化:引入husky+lint-staged强制代码提交规范,提交信息需符合Conventional Commits(如
feat(login): 添加验证码登录
),不符合则拦截提交;ESLint+Prettier统一代码风格,CI阶段自动检查,代码评审时间缩短40%。 - 环境隔离:基于K8s创建"动态环境",每个开发分支对应独立测试环境(如
feature/login
分支部署至login.test.example.com
),通过Jenkins自动创建与销毁,环境冲突问题彻底解决。
- 规范工具化:引入husky+lint-staged强制代码提交规范,提交信息需符合Conventional Commits(如
工程化视角
- 规范的核心是"降低协作成本",而非"约束开发",需通过工具将规范"嵌入流程"(如提交前自动校验),而非依赖人工遵守。
三、工程化项目的亮点与难点梳理技巧
3.1 聚焦"系统性收益"而非"单点技术"
在技术方案说明中,应当避免简单地罗列技术栈,而要着重展示技术升级带来的系统性价值。这需要将技术选择与可量化的业务/工程指标相结合,通过前后对比数据来证明决策的正确性。具体来说:
-
单点技术示例:"我们采用了Vite作为前端构建工具"
- 问题:仅说明技术选型,未体现实际价值
- 典型特征:技术名词堆砌,缺乏上下文关联
-
系统收益示例:"通过将构建工具从Webpack迁移至Vite+esbuild方案:
- 开发效率提升:
- 冷启动时间从40s优化至3s(降低92.5%)
- 热更新时间从500ms缩短至50ms(提升10倍)
- 基于团队10人的日均开发频次统计,每人每日节省等待时间约1.5小时
- 工程化改进:
- 构建配置复杂度降低70%(从2000行webpack配置精简至600行)
- 依赖预编译使生产构建速度提升65%
- 业务影响:
- 功能迭代周期从2周缩短至1周
- 紧急热修复响应时间控制在30分钟内"
- 优势:建立技术→指标→业务的价值传导链条
- 最佳实践:建议配合CI/CD监控系统的时序数据图表佐证
- 开发效率提升:
这种表述方式适用于:
- 技术方案评审会议
- 项目复盘报告
- 晋升答辩材料
- 技术博客写作
关键要把握三个层次:
- 技术变更点(What)
- 可测量改进(How much)
- 业务影响(Why it matters)
3.2 突出"工具链整合能力"
工程化项目的核心价值往往体现在"工具链的有机整合与协同效应",这需要在描述中展示:
-
工具组合的合理性:
- 技术选型要体现"1+1>2"的效果,例如:
- 测试组合:Jest(单元测试框架)+ React Testing Library(UI测试库)+ MSW(API Mock服务)
- 构建组合:ESBuild(极速编译)+ Vite(开发服务器)+ Rollup(生产打包)
- 技术选型要体现"1+1>2"的效果,例如:
-
量化改进效果(建议包含前后对比):
markdown- 测试效率提升: * 单元测试覆盖率:30% → 70%(SonarQube报告验证) * UI回归测试耗时:2天/周 → 1小时/周(通过并行测试+快照比对实现) * 缺陷发现阶段:60%上线后 → 85%开发阶段(通过Git Hooks强制测试) - 构建速度优化: * 冷启动时间:47s → 1.8s(Vite+HMR) * 生产构建体积:8MB → 2.3MB(Tree-shaking+Bundle分析)
-
典型应用场景:
-
微前端架构中的工具链联动:
javascript// 共享工具配置示例 module.exports = { preset: 'jest-puppeteer', globalSetup: './setup.js', reporters: [ 'default', ['jest-junit', { outputDirectory: 'coverage' }] ] }
-
CI/CD流水线中的工具集成:
yaml# GitLab CI示例 stages: - test - build unit_test: image: node:16 script: - npm run test:cov - npx nyc report --reporter=lcov
-
-
行业实践参考:
工具链类型 明星组合案例 适用场景 前端监控 Sentry + Lighthouse + RUM 用户体验优化 移动端开发 Flutter + Firebase + Codemagic 跨平台应用开发 微服务治理 Prometheus + Grafana + Jaeger 分布式系统观测
建议通过架构图展示工具链关系(如Mermaid流程图),并说明各环节的数据流转机制。
3.3 难点梳理需体现"从问题到体系的演进"
避免仅描述问题表象,需完整呈现问题定位、解决路径和体系化落地的全过程。关键要展示技术方案如何从单点突破演变为系统工程,最终形成可复制、可迭代的标准化机制:
-
问题场景具象化
- 初期问题需量化(如频率、影响范围、修复成本)
示例:早期手动部署时,每次发布平均需2小时人工操作,且因环境差异导致30%的部署需要回滚,每月因此产生3-5次线上事故
- 初期问题需量化(如频率、影响范围、修复成本)
-
解决方案工程化
- 分阶段说明技术选型依据和实施路径
示例:
① 通过日志分析锁定80%的部署失败源于依赖版本冲突
② 引入Docker容器化解决环境一致性问题
③ 基于K8s实现滚动更新和自动回滚机制
- 分阶段说明技术选型依据和实施路径
-
体系化价值输出
- 需包含前后对比数据、能力沉淀和横向扩展性
完整案例:
"初期因手动部署导致线上bug频发(月均5次,MTTR达4小时),通过搭建'GitLab CI(单元测试)→ SonarQube代码扫描→ 容器化构建→ 金丝雀发布'的全自动化流水线,实现:
• 线上缺陷率下降至月均0.3次
• 部署耗时从120分钟缩短至8分钟
• 形成《CI/CD标准化手册》并复用至3个新项目"
- 需包含前后对比数据、能力沉淀和横向扩展性
-
持续演进规划
- 需预留改进接口(如监控埋点、数据看板等)
示例:在流水线中嵌入Prometheus指标采集,为后续智能熔断提供数据基础
- 需预留改进接口(如监控埋点、数据看板等)
四、总结
工程化模块的项目亮点与技术难点,本质是"如何通过系统化、工具化、规范化的手段,解决项目实战中的效率、质量和协作问题"。亮点需突出工程化带来的"流程优化""成本降低""稳定性提升"等系统性价值;难点则聚焦"工具整合""规范落地""协作壁垒"等工程化特有的挑战,以及如何通过技术与管理结合的方式解决。
在实战中,工程化能力的体现不仅在于"用了什么工具",更在于"为什么用这些工具""如何让工具服务于项目目标"。通过本文的梳理思路,开发者可更清晰地呈现工程化项目的价值,为项目复盘、面试展示提供有力支撑。
📌 下期预告 :性能优化方案(加载优化、渲染优化)
❤️❤️❤️:如果你觉得这篇文章对你有帮助,欢迎点赞、关注本专栏!后续解锁更多功能,敬请期待!👍🏻 👍🏻 👍🏻
更多专栏汇总:
前端面试专栏
Node.js 实训专栏
