前端工程化概述(初版)
阅前悉知
本文为《前端工程化》系列的首篇。由于本系列仍在撰写中,故其余文章暂不发布。您可以通过此链接查看其余已经完成文章:前端工程化专栏 (完善中) | Jay 的博客
需要注意的是,尽管部分文章可以查看,但并不代表已经完成,且其中可能存在错误。
“前端工程化”,相信从事前端开发的朋友都或多或少头听过这一名称。当我们想在网上查找资料,深入理解“前端工程化”时,找到的大多数资料都是项目架构配置相关的文章。那“前端工程化”就等于“搭建项目架构”吗?对也不对!搭建项目架构是前端工程化重要且不可避免的一项工作,但前端工程化不仅仅局限于此。想要正在理解“前端工程化”,需要先搞明白“前端工程化”定义,然后通过定义推导出前端工程化需要做哪些事情。
前端工程化的定义
当我以“前端工程化”工程化为关键字进行查找,得到的结果都没法让我比较清晰的理解。要么没有对“前端工程化”这一名词做解释;要么把前端工程化所要做的事情当作释义。
前段时间我看过孟琢老师写的《汉字就是这么来的:字里字外的动物王国》一书,他通过“拆字法”浅显易懂、条理清晰的解析了我们中国汉字的由来以及发展脉络。于是我就想,是不是也可以采用“拆字法”来解析“前端工程化”呢?当然,这里并不是要把这五个汉字进行性拆解,而是对“前端工程化”这一名词进行拆解分析。
接下来开始拆解。
拆字法解析
初看,我们可以很轻易的将“前端工程化”可以拆解成两个独立的词组,即,“前端”、“工程化”。因为我们对“前端”一词的含义是很清晰的,指的就是我们所认知的前端开发领域。所以,无论对错,先这样拆解。接下来,解析两个词组的含义。
"前端"的解析
“前端”,应解释为“前端开发”,是指创建 Web 页面或 APP 等前端界面呈现给用户的过程。
前端开发-百度百科解析:
前端开发是创建WEB页面或 APP 等前端界面呈现给用户的过程,通过HTML,CSS 及JavaScript以及衍生出来的各种技术、框架、解决方案,来实现互联网产品的用户界面交互。
“工程化”?好像不太好解析。“工程”大概知道是什么,“工程化”不懂!既然无法理解,那就进一步拆解,将其分为“工程”和“化”两部分。这次我们先来解析“化”字(不要问为什么不先解析“工程”,因为“工程含义太复杂”)。
“化”的解析
“化”字在字典上的解析如下:
基本字义
- huà
- 性质或形态改变:变~。分~。僵~。教(jiào )~。熔~。融~。潜移默~。~干弋为玉帛。。
- 佛教、道教徒募集财物:~缘。~斋。
- 用在名词或形容词后,表示转变成某种性质或状态:丑~。绿~。
- 习俗,风气:有伤风~。
- 特指“化学”:~工。~纤。~肥。
- huā
- 同“花”。
摘自《化的解释|化的意思|汉典“化”字的基本解释》
上面的释义比较贴切的是:“用在名词或形容词后,表示转变成某种性质或状态:丑~。绿~。”。“工程化”则可以理解为向“工程”转变。
“工程”的解析
先来看字典关于“工程”的解析:
工程的解析
工程是科学和数学的某种应用,通过这一应用,使自然界的物质和能源的特性能够通过各种结构、机器、产品、系统和过程,是以最短的时间和最少的人力、物力做出高效、可靠且对人类有用的东西。将自然科学的理论应用到具体工农业生产部门中形成的各学科的总称。
摘自:《工程的解释|工程的意思|汉典“工程”词语的解释》
通过上面的解析可知,工程的核心是采用各种科学的工具以及手段来快速高效的产出目标产物。
“前端工程化”的含义
现在,我们需要将“前端”、“工程”、“化”三者的含义结合起来理解。
“工程化”=“工程”+“化”,可以理解为:向“采用各种科学的工具以及手段来快速高效的产出目标产物”的工作方式转变。
“前端工程化”=“前端”+“工程化”,可以理解为:创建 Web 页面或 APP 等前端界面呈现给用户的过程,向“采用各种科学的工具以及手段来快速高效的产出目标产物”的工作方式转变。
上面的解释比较生硬,不过大致的意思已经很清晰了。稍加润色:
"前端工程化“的含义
在进行前端开发的工程中,采用科学的理论知识、先进的生产工具、高效的工程管理手段,从而实现以最短的时间和最少的人力、物力产出高效、可靠、可用的互联网产品用户交互界面。
所要作的工作
在讲“前端工程化”的工作前,我们先来回答开篇的问题:“前端工程化”就等于“搭建项目架构”吗?
“前端工程化”的目的是:采用科学的理论知识、先进的生产工具、高效的工程管理手段以最短的时间和最少的人力、物力来完成开发工作。所以这个问题的答案是“前端工程化”不等于“搭建项目架构”。项目架构仅仅是提高开发效率的一个途径。我们还有很多手段方法理论来优化前端开发的过程。
“工程科学”是一门复杂的高度专业化的科学。我并非专业的工程科学家,仅是一名普通的开发者。所以我无法以系统、全面的理论知识来讲述前端工程化需要做哪些工作。仅能凭借自身的开发经验以及网路上搜罗来的知识进行总结梳理需要所哪些工作。
以下是我总结的前端工程化需要做的一些工作:
- 项目组 SOP 的制定(工作流程)
- UI 标准化、模块化
- 统一主题样式的开发
- 组件库开发
- 前端项目架构搭建(eslint、webpack 配置、项目目录的组织)
- 编码规范的制定
- 版本管理
- 分支管理
- 代码审核
- git 使用规划
- CICD 脚本
- 单元测试
关于 SOP 的制定
SOP( Standard Operating Procedure)即标准作业程序。规定了项目开发流程了标准操作步骤。SOP 是工程化的前置条件。工程化是对 SOP 中可以脚本化自动化的工作项的提炼,是 SOP 的补充扩展以及完善。两者密不可分,相辅相成。
相关文章:
前端工程化概述(初版)
阅前悉知 本文为《前端工程化》系列的首篇。由于本系列仍在撰写中,故其余文章暂不发布。您可以通过此链接查看其余已经完成文章:前端工程化专栏 (完善中) | Jay 的博客 需要注意的是,尽管部分文章可以查看,…...
人工智能与物联网:从智慧家居到智能城市的未来蓝图
引言:未来已来,智能化的世界 想象一下,一个早晨,智能闹钟根据你的睡眠状态自动调整叫醒时间,咖啡机早已备好热腾腾的咖啡,窗帘缓缓拉开,迎接清晨的阳光。这不是科幻小说中的场景,而是…...
【达梦数据库】达梦数据库windows安装
目录 1.选择语言与时区 2.安装向导 3.许可证协议 4.验证 Key 文件 5.选择安装组件 6.选择安装目录 7.目录确认 8.开始安装 9.安装过程 10.安装完成 11.创建数据库实例 12.创建数据库模板 13.数据库目录 14.数据库标识 15.数据库文件 16.初始化参数 17.口令管理…...
Django实现异步视图adrf请求
随着现代Web开发需求的不断升级,异步编程逐渐成为了开发者关注的焦点。Django作为一个功能强大的Web框架,其默认视图是同步的,这在处理高并发请求时可能会面临一定的性能瓶颈。为了弥补这一不足,开发者可以结合Django和第三方工具,如ADRF(Async Django Rest Framework),…...
如何构建有效的AI Agents:从复杂到简约——深度解读Claude实践总结《Building effective agents》(上)
在人工智能技术日新月异的今天,大语言模型(LLM)已经成为技术创新的热点。 然而,在追逐技术前沿的热潮中,我们是否忽视了工程设计的本质? 作为全球人工智能领域的领军企业之一,Anthropic以其在AI安全和伦理方面的深入…...
mybatis基础学习
JDBC Mysql java基础 maven Junit 一、简介 1. 什么是mybatis MyBatis 是一款优秀的持久层框架;它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原…...
【1224】数据结构(sizeof/数组的长度定义/读取字符串函数/线性表长度/左值右值/静态变量/指针与引用)
1.对一维整型数组a的正确说明是 #define SIZE 10 (换行) int a[SIZE];说法是否正确? 正确 数组的SIZE可以用宏定义,但不能用变量 2.如有定义:char str[20];,能将从键盘输入的字符串“How are you”保存到 str 数组的语句是&#x…...
解决PS 撤销卡顿
1. 关闭Windows Ink - 打开触控笔设置 - 禁用Windows Ink功能 2. 创建 PSUserConfig.txt(注意Win10/11 可能隐藏文件扩展名) - 位置:C:\Users\[用户名]\AppData\Roaming\Adobe\Adobe Photoshop CC 2019\Adobe Photoshop CC 2019 Se…...
Java 中 Stream 流的使用详解
Java 中 Stream 流的使用详解 什么是 Stream? Stream 是 Java 8 引入的一种全新的操作集合的方式。它支持通过声明性方式对集合进行复杂的数据操作(如过滤、排序、聚合等),避免使用大量的 for 循环,提高代码的可读性…...
助你通过AI培训师中级考试的目录索引
嘿,各位看官!在您正式踏入接下来的知识小宇宙之前,咱先唠唠几句… 家人们,我跟你们说,我脑一热报名了那个 AI 培训师考试。本想着开启一场知识的奇幻之旅,结果呢,学视频内容的时候,那…...
【期末复习】JavaEE(下)
1. MVC开发模式 1.1. 运行流程 1.2. SpringMVC 核心组件 1.3. 注解解释 2. ORM与MyBatis 2.1. ORM—对象关系映射 2.2. MyBatis 2.2.1. 创建步骤 会话是单例的,不能跨方法。(单例的原因主要是从数据安全角度出发) import org.apache.ibatis…...
HarmonyOS Next 实现登录注册页面(ARKTS) 并使用Springboot作为后端提供接口
1. HarmonyOS next ArkTS ArkTS围绕应用开发在 TypeScript (简称TS)生态基础上做了进一步扩展,继承了TS的所有特性,是TS的超集 ArkTS在TS的基础上扩展了struct和很多的装饰器以达到描述UI和状态管理的目的 以下代码是一个基于…...
《HelloGitHub》第 105 期
兴趣是最好的老师,HelloGitHub 让你对编程感兴趣! 简介 HelloGitHub 分享 GitHub 上有趣、入门级的开源项目。 github.com/521xueweihan/HelloGitHub 这里有实战项目、入门教程、黑科技、开源书籍、大厂开源项目等,涵盖多种编程语言 Python、…...
适配器模式概述
大体介绍 适配器模式(Adapter Pattern)是一种结构型设计模式,其核心目的是通过提供一个适配器类来使得原本接口不兼容的类可以一起工作。它通过将一个类的接口转换成客户端所期望的接口,使得原本因接口不兼容而无法一起工作的类可…...
跟着问题学3.1——R-CNN模型详解
R-CNN解决什么问题 前面我们介绍了经典的网络模型如AlexNet,VGG,ResNet等,这些模型要解决的任务都是分类问题,即输入一张图片,判断图片上是什么类别的物体,而且一般是单个物体。但实际中,我们会遇到一张图片上有多个或…...
微服务-1 认识微服务
目录 1 认识微服务 1.1 单体架构 1.2 微服务 1.3 SpringCloud 2 服务拆分原则 2.1 什么时候拆 2.2 怎么拆 2.3 服务调用 3. 服务注册与发现 3.1 注册中心原理 3.2 Nacos注册中心 3.3 服务注册 3.3.1 添加依赖 3.3.2 配置Nacos 3.3.3 启动服务实例 …...
25秋招面试总结
秋招从八月底开始,陆陆续续面试了不少,现在也是已经尘埃落定,在这里做一些总结一些我个人的面试经历 腾讯 腾讯是我最早面试的一家,一开始捞我面试的是数字人民币,安全方向的岗位,属于腾讯金融科技这块。…...
【C#学习——特性】
前言 C#特性学习、主要是用在数据库连接时如何动态创建对应的表,正常开发应该使用如Entity Framework等ORM框架实现自动创建生成。 代码 1、声明特性 [AttributeUsage(AttributeTargets.Property)] public class PrimaryKeyAttribute : Attribute { }[AttributeUs…...
Appscan扫出API成批分配问题解决方案
漏洞条件: 请求json参数不是接收参数的javabean及其父类中的任意属性。 意思就是:我javaben里面没有这个参数 你缺传递过来了 例如我只需要pageNum pageSize 你还传了role:admin 那么这样就有可能导致致特权升级、数据篡改、绕过安全机制 解决方案&am…...
STM32-笔记14-排队控制系统
一、项目需求 1. 红外传感器检测有人通过并计数; 2. 计数值显示在LCD1602 3. 允许通过时,LED1闪烁,蜂鸣器不响,继电器不闭合; 4. 不允许通过时,LED2闪烁,蜂鸣器响,继电器闭合&#…...
【时间之外】IT人求职和创业应知【80】-特殊日子
目录 北京冬季招聘会 OpenAI CEO炮轰马斯克 英伟达推出全新AI芯片B300 莫欢喜,总成空。本周必须要谨行慎言。 感谢所有打开这个页面的朋友。人生不如意,开越野车去撒野,会害了自己,不如提升自己。提升自己的捷径就是学习和思考…...
【GlobalMapper精品教程】090:合并多个面状图斑(以一个镇的多个村不动产宗地为例)
本文讲述在Globalmapper中,合并多个面状图斑的方法,以一个镇的多个村不动产宗地为例(假设一个镇的多个村的不动产宗地数据是分别存储在不同的村子矢量数据中,此时需要合并),点状和线状的操作方法类似。 文章目录 一、加载数据二、数据分析三、合并图斑四、注意事项一、加…...
ffmpeg之播放一个yuv视频
播放YUV视频的步骤 初始化SDL库: 目的:确保SDL库正确初始化,以便可以使用其窗口、渲染和事件处理功能。操作:调用 SDL_Init(SDL_INIT_VIDEO) 来初始化SDL的视频子系统。 创建窗口用于显示YUV视频: 目的:…...
在国产电脑上运行PDFSAM软件使用pdf分割合并交替混合处理pdf文档
软件下载地址: https://sourceforge.net/projects/pdfsam/files/ 需要注意事项,系统需要java环境,确认系统有java环境,根据软件版本需求安装对应的java运行环境。 下载pdfsam-4.3.4-linux.tar.gz安装包,解压,将runt…...
总结一下本次使用docker部署遇到的问题
1.Invalid bound statement (not found):异常 解决:原因是Dao层与动态Sql映射文件名字没有对应 2.element-plus的upload组件文件上传不成功 因为是直接请求后端不是统一的api前缀,所以nginx需要额外配置跨域 3.文件上传问题 描述:当时文…...
c#泛型学习
使用泛型的优点:使用泛型的好处包括类型安全、代码重用和性能优化。 在C#中,泛型是一种强大的工具,它允许你在编写类、接口、方法和委托时定义类型参数。这些类型参数在实例化泛型类型或调用泛型方法时被具体的类型所替代。 1. 泛型类 泛型…...
十二月第五周python
第一个程序,熟悉转换器,把加法计算器变成exe# // 1,制作加法计算器, # 输入两个数字得到相加结果并输出aint(input("输入数字:"))#int()是把输入的内容转换成整数, bint(input("输入数字:&…...
Unity中如何修改Sprite的渲染网格
首先打开SpriteEditor 选择Custom OutLine,点击Genrate 则在图片边缘会出现边缘线,调整白色小方块可以调整边缘 调整后,Sprite就会按照调整后的网格渲染了。 如何在UI中使用? 只要在UI的Image组件中选择Use Sprite Mesh 即可 结果࿱…...
修复OpenHarmony系统相机应用横屏拍照按钮点不到的问题
适配OpenHarmony系统相机应用横屏UI, 相关pr: https://gitee.com/openharmony/applications_camera/pulls/233/files 适配效果 如何安装 编译好的hap提供在附件中 1.预置在源码,随固件安装 2.安装hap hdc shell "mount -o remount,rw /"…...
keepass实现google自输入_SSH_TELNET_RDP联动
涉及到的是使用开源密码管理工具KeePass结合特定插件实现自动化密码填充的功能,特别是在谷歌浏览器中的应用。KeePass是一款强大的密码管理软件,它允许用户安全地存储各种账号的用户名和密码,并通过加密保护这些敏感信息。 1. keepass安装及配…...
电脑缺失sxs.dll文件要怎么解决?
一、文件丢失问题:以sxs.dll文件缺失为例 当你在运行某个程序时,如果系统提示“找不到sxs.dll文件”,这意味着你的系统中缺少了一个名为sxs.dll的动态链接库文件。sxs.dll文件通常与Microsoft的.NET Framework相关,是许多应用程序…...
Python实现机器学习驱动的智能医疗预测模型系统的示例代码框架
以下是一个使用Python实现机器学习驱动的智能医疗预测模型系统的示例代码框架。这个框架涵盖了数据收集(爬虫)、数据清洗和预处理、模型构建(决策树和神经网络)以及模型评估的主要步骤。 1. 数据收集(爬虫)…...
Vue3生态: 使用Vite进行高速开发
Vue3生态: 使用Vite进行高速开发 一、Vite概述 什么是Vite 法语意为 "快速")是一个为现代浏览器原生开发提供服务的构建工具。它使用ES模块作为原生浏览器加载工具,利用浏览器去解析 import 的方式加载文件,极大地加快了应用的启动…...
Android MQTT关于断开连接disconnect报错原因
最近项目遇到一个需求,就是在登录状态的时候。才能接收到消息。所有我在上线,下线状态的时候。做了MQTT断开和连接的动作。然后就是发生了。我们标题的这关键点了。直接报错了。报错的内容如下: MqttAndroidClient unregisterRecevicer afte…...
YOLO11全解析:从原理到实战,全流程体验下一代目标检测
前言 一、模型介绍 二、网络结构 1.主干网络(Backbone) 2.颈部网络(Neck) 3.头部网络(Head) 三、算法改进 1.增强的特征提取 2.优化的效率和速度 3.更高的准确性与更少的参数 4.环境适应性强 5.…...
python中函数的用法总结(二阶段)
话接上回,继续讲下函数的用法 10. 函数的注解(Function Annotations) Python 3 引入了函数注解,允许你在函数定义时给参数和返回值添加注解。注解并不影响函数的实际行为,它们更多地用于代码的可读性、文档生成以及静…...
1082 射击比赛
本题目给出的射击比赛的规则非常简单,谁打的弹洞距离靶心最近,谁就是冠军;谁差得最远,谁就是菜鸟。本题给出一系列弹洞的平面坐标(x,y),请你编写程序找出冠军和菜鸟。我们假设靶心在原点(0,0)。 输入格式:…...
模型工作流:自动化的模型内部三角面剔除
1. 关于自动减面 1.1 自动减面的重要性及现状 三维模型是游戏、三维家居设计、数字孪生、VR/AR等几乎所有三维软件的核心资产,模型的质量和性能从根本上决定了三维软件的画面效果和渲染性能。其中,模型减面工作是同时关乎质量和性能这两个要素的重要工…...
力扣题目解析--两数相除
题目 给你两个整数,被除数 dividend 和除数 divisor。将两数相除,要求 不使用 乘法、除法和取余运算。 整数除法应该向零截断,也就是截去(truncate)其小数部分。例如,8.345 将被截断为 8 ,-2.…...
Python PyMupdf 去除PDF文档中Watermark标识水印
通过PDF阅读或编辑工具,可在PDF中加入Watermark标识的PDF水印,如下图: 该类水印特点 这类型的水印,会在文件的字节流中出现/Watermark、EMC等标识,那么,我们可以通过改变文件字节内容,清理掉…...
嵌入式AI STM32部署卷积神经网络的魔法棒
基于STM32部署卷积神经网络控制设备方案-AI项目-STM32部署卷积神经网络方案-红外信号复制方案-轨迹识别 项目包含下述内容 硬件部分、PCB制板、BOM表文件等等 (Hardware)外壳、3D打印文件 (3D_print)软件程序、用于电子法棒的软件程序 AI Keil等等(Software)QT上位机动作识别…...
电路元件与电路基本定理
电流、电压和电功率 电流 1 定义: 带电质点的有序运动形成电流 。 单位时间内通过导体横截面的电量定义为电流强度, 简称电流,用符号 i 表示,其数学表达式为:(i单位:安培(A&#x…...
【蓝桥杯——物联网设计与开发】系列前言
前言 本系列博客是博主为准备2024年第十五届蓝桥杯大赛物联网设计与开发赛道而写,经过4个月学习备战,最终获得全国一等奖。 从第十六届蓝桥杯大赛开始,物联网赛道更换竞赛实训平台。之前的博客,可以借鉴代码思想,但引脚…...
Linux -- 从抢票逻辑理解线程互斥
目录 抢票逻辑代码: thread.hpp thread.cc 运行结果: 为什么票会抢为负数? 概念前言 临界资源 临界区 原子性 数据不一致 为什么数据不一致? 互斥 概念 pthread_mutex_init(初始化互斥锁) p…...
免费干净!付费软件的平替款!
今天给大家介绍一个非常好用的电脑录屏软件,完全没有广告界面,非常的干净简洁。 电脑录屏 无广告的录屏软件 这个软件不需要安装,打开就能看到界面直接使用了。 软件可以全屏录制,也可以自定义尺寸进行录制。 录制的声音选择也非…...
Mybatis插件better-mybatis-generator的下载与使用
1.下载 找到设置 插件 搜索better-mybatis-generator 下载并且重启IDEA 2.连接数据库 点击测试连接 连接成功如下图 3.使用插件 选择对应的表 右击选择 注意:mysql8.0驱动一定要勾上mysql_8 其他地方不要动 然后实体类 mapper xml就都生成好了 mapper里有默认增删…...
【测试】接口测试
长期更新好文,建议关注收藏! 目录 接口规范接口测试用例设计postmanRequests 复习HTTP超文本传输协议 复习cookiesession 实现方式 1.工具 如postman ,JMeter(后者功能更全) 2.代码 pythonrequests / javahttpclient【高级】 接…...
靶机系列|VULNHUB|DC-2
免责声明: 笔记只是方便各位师傅学习知识,以下代码、网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负。 泷羽sec官网:https://longyusec.com/ 泷羽sec B站地址:https://s…...
上手教程:使用Terraform打造弹性VPC架构
最近Akamai发布的虚拟专用云(VPC)功能提供了一种隔离的网络,让云资源可以用私密的方式进行通信。 关于Akamai VPC功能,最棒的地方在于它有着极高的灵活性。用户可以通过Cloud Manager、开发人员工具(如CLI)…...
详解VHDL如何编写Testbench
1.概述 仿真测试平台文件(Testbench)是可以用来验证所设计的硬件模型正确性的 VHDL模型,它为所测试的元件提供了激励信号,可以以波形的方式显示仿真结果或把测试结果存储到文件中。这里所说的激励信号可以直接集成在测试平台文件中,也可以从…...