高级前端篇-前端工程化

829 阅读5分钟

前端篇系列长文:

轻轻喷,借鉴了很多文章,刚学完理出框架只完成了一点点,做一个复习,还在更新大改中,能帮到大家就最开心了,喜欢可以点个赞,持续更新中,谢谢大家,祝大家鹏程万展


theme: juejin

何为前端工程化

说人话:

兜兜转转,岁月如梭,细数4年走入前端的风风雨雨,3年前学会了vue和react的我问过自己框架之后是什么,感谢大佬们的帮助,现在我想自己可以解答了,蓄谋已久:

出来这么久,听的最多的概念就是前端工程化,好像活在工程化里,又不太明白它是什么。细数前端从一个只会文本标记语言html的切图仔,到后面二代框架jquery,到现在的MVVM数据驱动视图模型,尤雨溪一声“毁灭的命运也是重生的喜悦”传作出vue1.0,到现在的桌面端、鸿蒙系统,大模型,前端正预演愈大。

前端的发展历史,就是前端工程化

前端开发模式进化史

首先让我们回顾一下前端开发模式的演化历史,前端工程化正是为了应对这些演化中出现的挑战和需求而发展起来的:

  1. 前后端混合:服务端渲染,javascript仅实现交互
  2. 前后端分离:借助 ajax 实现前后端分离、单页应用(SPA)等新模式
  3. 模块化开发:npm 管理模块、Webpack 编译打包资源
  4. 模块化 + MVVM:基于 React 或 Vue 等框架进行组件化开发,不再手动操作 html 元素

从技术说工程化

前端工程化是指将软件工程的原理和方法应用到前端开发中,以提高开发效率、代码质量和可维护性。随着 Web 应用的复杂度不断增加,传统的前端开发方式已经难以满足需求,因此引入了工程化的概念来更好地管理和优化前端开发流程。前端工程化主要包括以下几个方面:

前端工程化是指将软件工程的原理和方法应用到前端开发中,以提高开发效率、代码质量和可维护性。随着 Web 应用的复杂度不断增加,传统的前端开发方式已经难以满足需求,因此引入了工程化的概念来更好地管理和优化前端开发流程。前端工程化主要包括以下几个方面:

eacac2d25e0100e1e5d5e1e54c98b40.png

1. 项目构建工具

使用自动化构建工具(如 Webpack, Vite, Parcel 等)来处理和打包前端资源(JavaScript, CSS, 图片等),从而简化开发流程,提升开发体验。这些工具通常支持模块化开发、代码压缩、混淆、热更新等功能。 也可扩展自己的脚手架,下一篇文章详解

2. 模块化开发

采用模块化的开发模式(如 ES6 模块、CommonJS、AMD 等),可以将代码拆分为更小、更易于管理的部分,有助于团队协作和代码复用。每个模块负责单一功能,并且通过明确的接口与其他模块交互。 这里推荐一篇掘金:juejin.cn/post/729118…

3. 组件化开发

基于组件的思想构建用户界面,比如 React、Vue 和 Angular 中的组件。组件是独立且可复用的 UI 构建块,它们封装了自身的逻辑和样式,可以在不同的页面或应用之间共享。 具体实现有:低代码平台、vscode低代码插件、脚手架组件模板、阿里云物料平台

4. 版本控制

利用 Git 或其他版本控制系统来跟踪代码的变化历史,方便团队成员之间的协作开发,确保项目的稳定性和可回溯性。

5. 持续集成/持续部署 (CI/CD)

设置 CI/CD 流程自动化测试、构建和部署过程,保证每次代码变更都能经过严格的测试并顺利上线,减少人工操作带来的风险。

6. 前端性能监控平台

运用阿里或者百度提供的前端性能平台可以监控用户的浏览数据,主流还是得自己写一个监控平台。

  • 监控用户流量
  • 监控项目性能
  • 数据分析

7. 性能优化

采取各种措施优化 Web 应用的加载速度和运行性能,例如图片懒加载、服务端渲染(SSR)、客户端缓存策略、减少 HTTP 请求次数、使用 CDN 分发静态资源等。

8. 文档生成与维护

保持良好的文档习惯,包括但不限于 API 文档、架构设计文档、开发指南等,这不仅有助于新人快速上手项目,也能为后续的维护提供便利。

9. 依赖管理

合理地管理和更新第三方库依赖,确保项目所使用的库是最新的同时避免引入不必要的安全漏洞。常用工具如 pnpm、npm、yarn 可以有效地管理 JavaScript 包依赖。

10. 单元测试与集成测试

编写测试用例对组件的功能进行验证,保证在修改代码后不会破坏现有功能;集成测试则用于检查不同模块之间的协同工作是否正常。

通过上述措施,前端工程化旨在打造一个高效、可靠、易扩展的前端开发环境,使得大型复杂的 Web 应用程序能够更加稳健地开发和迭代。

小结

  • 前端开发管理工具集

  • 降低开发成本,提升开发效率

  • 以上我会写文章具体讲解,具体请看下文