前端工程化概述

前端工程化实战 - 工程化概述 前端工程化实战 - 工程化概述1.1 工程化的定义和主要解决的问题1.2 一个项目过程中工程化的表现1.3工程化不等于工具1.4 工程化与Node.js 1.1 工程化的定义和主要解决的问题 前端工程化是指遵循一定的标准和规范,通过工具提高效率降低成本的一种手段。近些年之所以被广泛的关注和探讨是由于前端应用的功能要求不断提高,业务逻辑日益复杂。 从传统的网站到现在的H5、移动APP、桌面应用,以及小程序,前端技术几乎是无所不能的全面覆盖。在这些表象的背后实际上是前端行业对我们开发人员的要求发生了天翻地覆的变 阅读详情

软件工程定义:将工程方法系统化地应用到软件开发中

前端发展历史

前端工程化的发展历史可以追溯到互联网的早期阶段,随着前端技术的不断演进和互联网应用的复杂化,前端工程化也逐渐成为了前端开发的重要领域。以下是前端工程化的主要发展里程碑:

  1. 1995年,Brendan Eich发明Javascript
  2. 2005年,Ajax(Asynchronous Javascript And XML)广泛应用
  3. 2008年,V8引擎发布,意味着js可以脱离浏览器使用
  4. 2009年,Node.js发布,标志了前端工程化进入飞跃的时代
  5. 2010年,Npm 0.1版本发布标志的模块化的时代到来
  6. 2013年,Webpack 1.0版本发布,标志着现在前端开发模式正式形成。
  7. 2013年,React 1.0版本发布
  8. 2014年,Vue1.0版本发布,标志着前端MVVM时代到来

前端开发模式进化过程

前端开发模式经历了多个阶段的演进,以下是前端开发模式的主要进化过程:

  1. 前后端混合(1995~2005):服务端渲染,javascript仅实现交互
  2. 前后端分离(2005~2013):借助ajax实现前后端分离、SPA等新模式
  3. 模块化开发(2013~2014):npm管理模块、Webpack编译打包资源
  4. 模块化+MVVM(2014~至今):基于React或Vue开发,不再开发html,开发html成为历史

开发过程中的问题

早先,我们在开发过程中难免会遇到一些问题:

  • 想要使用ES6+特性,但是兼容性有问题
  • 想要使用Less/Sass/PostCSS增强CSS的编程性,但是运行环境不能直接支持
  • 想要使用模块化的方式提高项目的维护性,但运行环境不能支持
  • 除了上面支持的工作以外,我们在开发过程中也有重复性的工作,例如部署上线前需要手动压缩代码及资源文件,部署过程需要手动上传代码到服务器。手动会出现各种各样的工作。
  • 多人协作开发,无法硬性统一大家的代码风格,从仓库中pull回来的代码质量无法保证,拉回来的代码运行崩溃。
  • 除了编码问题,在开发部分功能时,需要等待后端服务接口提前完成

以上问题可以看出工程化主要解决的问题主要分为:传统语言或语法的弊端,无法使用模块化、组件化,重复性的机械式工作,代码风格统一、质量保证,依赖后端服务接口支持,整体依赖后端项目。

工程化介绍

前端工程化是使用软件工程的技术和方法来进行前端的开发流程、技术、工具、经验等规范化、标准化,其主要目的为了提高效率和降低成本,即提高开发过程中的开发效率,减少不必要的重复工作时间,而前端工程本质上是软件工程的一种,前端工程是指将工程方法系统化地应用到前端开发中,以系统、严谨、可量化的方法开发、运营、维护前端应用程序,目的是降本提效。

在实际开发的过程中,一个完整的迭代周期需要依次经过开发、测试、部署、发布这几个环节,并且在产品上线之后,我们还需要对产品进行稳定性保障也就是实时的监控和报警系统,避免产品宕机。那么,工程化需要解决的问题就是如何在整个的迭代周期中降本提效。

47.png

工程化的表现是一切以提高效率、降低成本、质量保证为目的的手段都属于工程化,一切重复的工作都应自动化。我们从项目的创建、编码、预览、提交、部署这几个环节中,每一个环节都可以用工程化的方式去提高效率。

  • 创建项目:使用脚手架工具自动完成基础结构的搭建
  • 编码:借助工程化的工具自动的完成代码的格式化以及风格的校验,从而确保所有开发人员代码风格一致,借助编译工具去使用新的特性提高编码效率
  • 预览:可以借助Web服务能运行应用,同时提供热更新、SourceMap定位问题、Mock接口的功能
  • 提交:在提交代码之前使用Git Hooks和Lint-staged完成项目代码的检查,确保不会把有问题的代码提交到仓库中。
  • 部署:可以使用脚手架命令完成项目的上传,从而替代传统的ftp上传方式。还可以实现在代码提交过后自动化的通过持续集成和持续部署的方式,自动将代码部署到服务器中。

工程化不是某个工具,例如webpack功能很强大,但是它并不是工程化。工程化的核心是对项目整体的规划、架构,而工具只是帮助我们落实工程化的工具和手段。

那么我们应该去选用那些工具来搭配完成工程化的规划呢?我们可以参考create-react-app、vue-cli、angular-cli、gatsby-cli等官方脚手架,它不是一个工具,而是一个成熟的工程化集成方案。以vue-cli为例,创建Vue项目的同时,vue-cli提供了模板选择、编译以及本地开发服务器等功能模块。对于使用vue-cli创建的Vue项目,业务开发人员无须操心复杂的webpack配置,只需关注业务逻辑开发本身,这很大程度上降低了开发的时间成本。

工程化特性

前端工程化可以分成四大特性来说,分别为:

  1. 模块化:将一个文件拆分成多个相互依赖的文件,最后进行统一的打包和加载,这样能够很好的保证高效的多人协作。其中包含

    • JS 模块化:CommonJS、AMD、CMD 以及 ES6 Module。
    • CSS 模块化:Sass、Less、Stylus、BEM、CSS Modules 等。其中预处理器和 BEM 都会有的一个问题就是样式覆盖。而 CSS Modules 则是通过 JS 来管理依赖,最大化的结合了 JS 模块化和 CSS 生态,比如 Vue 中的 style scoped。
    • 资源模块化:任何资源都能以模块的形式进行加载,目前大部分项目中的文件、CSS、图片等都能直接通过 JS 做统一的依赖关系处理。
  2. 组件化:不同于模块化,模块化是对文件、对代码和资源拆分,而组件化则是对 UI 层面的拆分。

    • 通常,我们会需要对页面进行拆分,将其拆分成一个一个的零件,然后分别去实现这一个个零件,最后再进行组装。
    • 在我们的实际业务开发中,对于组件的拆分我们需要做不同程度的考量,其中主要包括细粒度和通用性这两块的考虑。
    • 对于业务组件,你更多需要考量的是针对你负责业务线的一个适用度,即你设计的业务组件是否成为你当前业务的 “通用” 组件。
  3. 规范化:正所谓无规矩不成方圆,一些好的规范则能很好的帮助我们对项目进行良好的开发管理。规范化指的是我们在工程开发初期以及开发期间制定的系列规范,其中又包含了:

    • 项目目录结构
    • 文档规范化
    • 接口规范化
    • 编码规范:对于编码这块的约束,一般我们都会采用一些强制措施,比如 ESLint、StyleLint 等。
    • 联调规范
    • 文件命名规范
    • 样式管理规范:目前流行的样式管理有 BEM、Sass、Less、Stylus、CSS Modules 等方式。
    • git flow 工作流:其中包含分支命名规范、代码合并规范等。
    • 定期 code review
    • … 等等
  4. 自动化:从最早先的 grunt、gulp 等,再到目前的 webpack、parcel。这些自动化工具在自动化合并、构建、打包都能为我们节省很多工作。而这些前端自动化其中的一部分,前端自动化还包含了持续集成、自动化测试等方方面面。

前端工程化的3个阶段

  1. 本地工具链

前端工程化的初级阶段便是将各类工具的功能进行整合,为业务开发人员提供统一规范的工具栈。我们不妨将此阶段的前端工程化称为本地工具链形态。此形态下的所有工程化功能模块,包括构建、本地服务器、部署等,均在本地环境下工作。

本地工具链形态的工程化方案解决的问题,降低了业务开发人员学习、使用工具的成本。这个方案将复杂的功能需求全部交给工具链内部解决,工具链的统一,另一个好处是巩固了流程的规范性,开发者使用统一的工具链、遵循统一的规范进行业务代码的编写,利于多人协作与程序的维护。

  1. 管理平台

本地工具链形态的工程化虽然解决了前端开发以及前后端协作开发中的部分痛点问题,但由于所有的功能模块均在本地环境工作,因此必然会受到环境差异性的影响,比如操作系统类型、版本、内核等。这些因素会在一定程度上影响构建产出代码的一致性。为此前端工程化进化到下一进化形态:集中管理的云平台。

管理平台形态的工程化做到了以下几点。

  • 淡化环境差异性,保证构建产出的一致性。
  • 权限集中管理,提高安全性。
  • 项目版本集中管理,便于危机处理,比如版本回滚等。

管理平台形态将各个功能模块的执行环境集中化,从各模块实现角度来讲与本地工具链基本一致。

  1. 持续集成

即使进化到管理平台形态,前端工程化方案所解决问题的本质仍然只是将前端工程师与服务器端工程师的工作解耦。这虽然提高了两方的工作效率,但其各自的工作流却是孤立的。前端有了构建和部署,后端也有了相应的阶段,两方的工作流是分离的,最终的融合工作仍然难以避免烦琐的人工操作。所以前端工程化最终的完美形态,必然与整体工作流结合,作为持续集成方案中的一环。

企业的应用场景

  • 前端工程化贯穿整个研发流程,解决研发流程中的问题
  • 工程化的核心目标是三点:效率、规范、性能
  • 只有了解前端研发流程的痛点,才能进行诊断和优化
  • 需要站在研发场景的角度去思考研发流程痛点

企业前端项目面临的真实问题

  • 项目量级增加:由几千行代码升级到几万行代码
  • 项目数量扩大:由几个项目扩大到几千个项目
  • 项目复杂度高:由Web项目扩展到H5/PC/小程序/Node服务端/脚手架
  • 团队人数增加:由几个前端扩展到几百个前端

企业前端工程问题解法

  • 项目量级增加:通过采用模块化(CommonJS和ESM)的方式来将js拆分成一个一个的功能,达到多个项目复用,通过npm和webpack辅助实现。
  • 项目数量扩大:在大厂中有几千个项目,需要通过研发平台和前端研发脚手架来创建、管理项目。
  • 项目复杂度高:在大厂中不同的团队会用到vue、react、小程序等技术栈来开发,团队可能针对不同的技术栈开发不同的脚手架,导致重复造轮子,这样我们要通过工程脚手架(统一解决不同技术栈的工程差异)来解决,不管是vue或是react项目,在工程构建流程方面是统一的。
  • 团队人数增长:通过研发平台和研发脚手架来帮助团队开发人员进行协同工作。

企业前端工程化的应用场景

  • 工程脚手架:使用工程脚手架达到vue、react等工程的统一构建
  • 研发脚手架:解决对项目的创建、发布以及管理项目
  • 项目性能优化:对于项目的构建速度进行优化

相关文章

看完觉得对您有所帮助别忘记关注呦

weixin.jpeg

2 利用ITK实现多帧Dicom读取,VTK实现数据显示 vtk中也有dicom读写类,但是只能完成单帧DICOM数据读取,这对于实际应用是非常不利的。而ITK可以实现dicom多帧读取,通常情况ITK与VTK也会结合使用(ITK处理,VTK显示),所以就一起学习下吧! 阅读详情

相关推荐

从零构建边缘AI数据管道:K230+ESP8266的物联网实践指南

本文详细介绍了如何利用K230开发板和ESP8266模块构建高可靠性的边缘AI数据管道,特别针对智能农业监测场景。通过完整的系统架构设计、AI模型部署、低功耗通信优化和云端集成方案,为开发者提供了一套可落地的物联网实践指南,重点解决了边缘计算环境下的数据传输稳定性和能效管理问题。

j2k3l4的博客 871

01-前端工程化概述

前端工程化概述

m0_48670609的博客 583

不止于使能:用汇川PLC功能块封装,实现伺服轴状态管理与安全逻辑

本文深入探讨了汇川PLC功能块封装在伺服轴控中的应用,详细介绍了如何通过高级封装技术实现伺服轴的状态管理与安全逻辑。文章涵盖了从基础使能到全生命周期监控的进化,多轴协同的实例化管理策略,以及安全逻辑的防御性编程技巧,为工业自动化领域的工程师提供了实用的解决方案和最佳实践。

weixin_28684825的博客 271

Node—前端工程化概述

文章目录前端工程化概述简述Node.js基础Node.jsNode.js APIsNode.js使用全局对象全局函数模块内置模块consoleprocesspathfs—file systemfs实践—文件的复制和压缩文件流http自定义模块简介加载逻辑第三方模块npm概述安装--save和--save-dev脚手架工具Yeoman 前端工程化概述 简述 什么是工程? 工程化:在完成一个项目的时候所用到的技术和工具,用来提高前端开发的效率 前端工程化的萌芽: 内容: 项目上线的时候,需要进行压缩代码,更

qq_43352105的博客 726

告别Root!用Termux+ADB在Android上玩转自动化(保姆级教程)

本文详细介绍了如何在非Root环境下使用Termux和ADB实现Android自动化操作,无需Root权限即可运行自动化脚本。通过Termux搭建Linux终端环境,结合ADB无线调试和Python脚本,实现点击、滑动、截图等自动化功能,适用于定时任务、自动签到等场景。

weixin_42548888的博客 536

CTF-MISC:BUUCTF练习汇总(1-25题,不包括签到题)

解题思路:该题比较基础,wireshark打开过滤HTTP流量包,追踪HTTP流后可以看到base64密文,解密后得到jpg图片,打开图片即可看到flag,在线OCR识别即可提取出flag值。解题思路:zip压缩包解压需要密码,图片中的盲文为解压的密码,解压后得到MP3音频文件,内容为典型的摩斯密码;解题思路:由题目可以为LSB隐写,使用StegSolve打开图片查看最低有效位得到PNG信息,另存为图片后发现是二维码,扫描后即可得到flag。对应摩斯电码为:-.-. - …-. .-- .–. . …

燕麦葡萄干的博客 1万+

前端工程化概述(初版)

当我以“前端工程化”工程化为关键字进行查找,得到的结果都没法让我比较清晰的理解。要么没有对“前端工程化”这一名词做解释;要么把前端工程化所要做的事情当作释义。前段时间我看过孟琢老师写的《汉字就是这么来的:字里字外的动物王国》一书,他通过“拆字法”浅显易懂、条理清晰的解析了我们中国汉字的由来以及发展脉络。于是我就想,是不是也可以采用“拆字法”来解析“前端工程化”呢?当然,这里并不是要把这五个汉字进行性拆解,而是对“前端工程化”这一名词进行拆解分析。接下来开始拆解。

Jay的博客 1323

AI编程工具深度对比:Cursor、Copilot、Trae与Claude Code,2025年开发者该如何选择?

2025年AI编程工具市场已形成四大主力阵营:Cursor(AI原生IDE)、GitHub Copilot(行业标准)、Trae(中国免费方案)和Claude Code(终端交互)。核心差异体现在技术能力(代码生成准确率85%-95%)、智能体协作程度和上下文处理能力(8K-200K tokens)。用户体验方面,Trae对中文支持最佳且免费,Copilot企业集成强,Cursor平衡易用与功能,Claude Code适合高阶开发者。实际测试显示,不同工具在原型开发、算法实现等场景各有优势

fudaihb的博客 6495

前端工程化知识点-概述

本文摘要:文章系统梳理了前端开发中的关键技术与工具。模块化标准部分对比了CommonJS、ESModule等五种方案的特性与应用场景;包管理工具章节分析了npm、yarn、pnpm的差异及幻影依赖问题;工具链部分详解了CSS预处理器、Babel等核心工具;构建器章节重点比较了Webpack、Vite和Rspack的架构原理与工作流程。全文覆盖前端工程化全链路,从模块化到构建优化,为开发者提供了全面的技术选型参考。

qq_28887631的博客 665

使用阿里天池平台训练YOLO目标检测模型

YOLO算法是一种单阶段目标检测算法,由Joseph Redmon等人于2015年提出。与传统的两阶段检测算法相比,YOLO将目标检测问题转化为回归问题,直接预测边界框的位置和类别概率,大大提高了检测速度。YOLOv1: 首次提出YOLO的核心思想,将图像分割成网格,每个网格预测边界框和类别概率。YOLOv2: 引入了批量归一化、锚框等改进,提高了检测精度。YOLOv3: 采用多尺度预测,增强了对小目标的检测能力。

步子哥的博客 1089

MATLAB基础应用精讲-【图像处理】GNN图神经网络(附python代码实现)

图神经网络由于其在处理非欧空间数据和复杂特征方面的优势,受到广泛关注并应用于推荐系统、知识图谱、交通道路分析等场景。图结构可描述复杂关系,如基因结构、通信网络、交通路线、社交网络等。图计算挖掘结构信息,但无法学习节点特征。神经网络在欧氏空间数据上表现优越,但无法直接应用于非欧氏空间的图数据。图神经网络结合图计算和神经网络优势,处理非欧氏空间数据及其复杂特征,应用于网络链接预测、推荐系统和交通道路分析等场景。实际应用中,图数据规模庞大,如百亿级节点、千亿级边,存储开销超过10TB。

qq_36130719的博客 1138

前端工程化(一)概述

比如目录结构的制定,合理的目录结构有助于提高项目的逻辑性和结构性,方便资源的统一管理和定位,有更好的拓展性;接口规范,这个是开发中最重要的规范,不仅涉及前端团队,也涉及后端团队,在SPA单页应用的时代,前后端分公非常清晰,协作开发的关键点就是接口;我们通常说一切皆组件,整个页面可以看成是一个大型组件,一个页面又可以按功能或者业务逻辑进一步差分成中型组件,中型组件还可以进一步拆分成小型组件,直到拆分成DOM元素为止,DOM元素可以看成浏览器的组件,也就是基础组件。怎么提高项目的开发质量?

weixin_42268042的博客 378

YOLOv12涨点改进 | 全网独家首发Conv改进篇 | Arxiv 2025 | 引入一种新的WConv加权卷积改进YOLOv12,显著提升其特征提取能力和目标检测精度

本文提出了一种新型加权卷积(WConv)模块,通过引入最优密度函数动态调整邻域像素权重,显著提升了YOLOv12目标检测性能。WConv在保持参数数量不变的情况下,提高了模型精度(VGG准确率提升10%)、增强了小目标检测能力,并改善了多尺度特征提取。文中详细介绍了模块原理、网络结构改进方法,并提供了核心代码实现和yaml配置文件。实验表明,该方法在图像任务中最高可降低53%的损失,虽然会带来11%的时间开销,但具有优异的鲁棒性。该技术可广泛应用于2D/3D图像处理领域。

Ai缝合怪、助力小伙伴高效发论文 215

学习十、前端工程化概述

一、为什么要做前端工程化 技术是为了解决问题而存在的 1、为了使用ES6+新特性,但是兼容有问题。 2、想要使用Less,Sass,PostCSS增强CSS的编程性,但是运行环境不能支持。 3、想要使用模块化的方式提高项目的可维护性,但是运行环境不能直接支持。 4、部署上线前需要手动压缩代码及资源文件、部署过程需要手动上传代码到服务器。 5、多人协作开发,无法硬性统一大家的代码风格,从仓库PULL回来的代码质量无法保证。 6、部分功能开发...

qq_40289624的博客 128

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

前端 工程化概述

工程化的定义和主要解决的问题 把项目统一管理。 一个项目过程中工程化的表现 工程化不等于工具 工程化一个是对一个项目的整体规划和架构。 例如vue cli 不仅仅帮我们创建项目,更是明确了整个结构,例如route目录应该放哪,提供了规范化。 工程化与 Node.js ...

weixin_45345105的博客 268

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

前端工程化概述:从项目搭建到部署

核心技术主题为前端工程化,通过将软件工程方法应用于前端开发解决传统开发问题。关键方案涵盖项目搭建、代码与依赖管理、构建优化等全流程。创新点在于形成规范高效开发流程。应用于复杂前端项目,能提高开发效率、提升代码质量、降低维护成本,如 React 单页应用实践案例,还需注意避坑要点。

专注技术分享 947

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

前端工程化概述与脚手架工具

文章说明:本文章为拉钩大前端训练营所做笔记和心得,若有不当之处,还望各位指出与教导,谢谢 ! 一、工程化的定义和主要解决的问题 从传统的网站到现在的H5,移动app,桌面应用以及小程序,前端对开发人员的要求发生了翻天覆地的变化。 面临的问题 想要使用ES6+,但是兼容有问题(传统语言或语法的弊端) 想要使用Less/Sass/PostCSS增强CSS的编程性,但是运行环境不能直接支持(无法使用模块化/组件化) 部署上线前需要手动压缩代码及资源文件,部署过程需要手动上传代码到服务器(重...

weixin_41962912的博客 466

工程化与框架系列(1)--前端工程化概述

工程化与框架之旅第一站

欢迎来到这里,希望文章能对你有所帮助 726

前端工程化概述||模块化相关规范

前端工程化 模块化概述 浏览器端模块化规范 服务器端模块化规范 大一统的模块化规范 – ES6模块化 ① npm install --save-dev @babel/core @babel/cli @babel/preset-env @babel/node ② npm install --save @babel/polyfill ...

qq_39368007的博客 243

前端工程化——模块化概述

模块化概述——「模块化」只是思想 最主流的代码整合方式,安装功能不同划分不同模块。 模块化演变过程 模块化规范 常用的模块化打包工具 基于模块化工具构建现代WEB应用 打包工具的优化技巧 模块化的演进过程 Stage 1 - 文件划分方式 完全依靠约定 ├── index.html ├── module-01.js └── module-02.js 通过scriptsrc属性引入模块 污染全局作用域,容易产生命名冲突 模块成员可以随意修改 无法管理模块依赖关系 Stage 2 - 命名空间方式

赵忠洋的博客 461

【项目推荐】基于 SpringBoot3 + Spring AI 的游泳馆管理系统:Agent + RAG + Function Calling 一次学全

它不是玩具 Demo,而是一个「业务 + AI」双主线交织的真实系统——预约业务在跑,AI 客服在旁边实时查库作答,两条线通过 Function Calling、RAG、站内消息串成一体。面试官问「你做过什么 AI 项目」时,你能从业务场景讲到架构取舍,从 RAG 切分参数讲到降级兜底——这和「我调了一下 ChatGPT 的 API」是完全不同的两个段位。项目已包含完整的建表 SQL、初始化数据、部署文档,克隆下来就能跑。获取方式:见文末说明 / 后台回复关键词获取。—— 完 ——

深耕开发,专注编程实战。分享源码解析、项目搭建、问题排查笔记,沉淀技术,持续更新。 339
上一篇: webpack 从入门到放弃!
下一篇: 前端工程化之模块化
全栈大师兄
博客等级 码龄11年 448粉丝 175原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值