前端工程化,前端监控,工作流,部署,性能
开发规范
创建项目的时候,配置下 ESlint
,stylelint
, prettier
, commitlint
等;
ESLint
主要功能:
ESLint 是一个静态代码检查工具,用于在 JavaScript 代码中识别和报告模式。它的目标是提供一个插件化的 JavaScript 代码质量工具。
应用场景:
在前端开发过程中,ESLint 能够帮助开发者发现代码中的错误、不符合规范的地方,从而提高代码质量。
配置方法:
- 全局安装 ESLint:在命令行中执行
npm install -g eslint
。 - 初始化 ESLint 配置:在项目根目录下执行
eslint --init
,然后根据提示选择需要的配置。 - 配置文件:在项目的根目录下创建一个
.eslintrc
文件(可以是 JSON、YAML 或 JS 格式),并在其中指定规则、插件、解析器等。例如,指定使用 Babel 解析器:{ "parser": "babel-eslint" }
。
常见问题解决方法:
- 如果遇到 ESLint 报错,首先检查是否安装了正确的依赖,并查看报错信息以确定具体问题。
- 可以根据报错信息修改代码或配置 ESLint 规则来解决问题。
Stylelint
主要功能:
Stylelint 是一个强大的、现代化的 CSS/SCSS/Less 检查工具,可以帮助开发者遵循一致的代码风格和最佳实践。
应用场景:
在前端开发过程中,Stylelint 能够确保 CSS 代码的风格一致性和可读性。
配置方法:
- 安装 Stylelint:在项目中执行
npm install --save-dev stylelint
。 - 配置文件:在项目的根目录下创建一个
.stylelintrc
文件(可以是 JSON 或 YAML 格式),并在其中指定规则、插件等。例如,指定一个规则禁止在数字前加零:"number-leading-zero": "never"
。
常见问题解决方法:
- 如果遇到 Stylelint 报错,首先检查是否安装了正确的依赖,并查看报错信息以确定具体问题。
- 可以根据报错信息修改 CSS 代码或配置 Stylelint 规则来解决问题。
Prettier
主要功能:
Prettier 是一个代码格式化工具,支持多种语言,包括 JavaScript、CSS、HTML 等。它可以帮助开发者自动调整代码格式,使其符合一致的样式。
应用场景:
在前端开发过程中,Prettier 可以自动格式化代码,节省开发者手动调整代码格式的时间。
配置方法:
- 安装 Prettier:在项目中执行
npm install --save-dev --save-exact prettier
。 - 配置文件:在项目的根目录下创建一个
.prettierrc
文件(可以是 JSON、YAML 或 JS 格式),并在其中指定格式化规则。Prettier 的配置相对简单,主要指定一些基本的格式化选项,如缩进大小、换行符等。 - 集成到编辑器:将 Prettier 集成到编辑器中(如 VS Code),以便在保存文件时自动格式化代码。
常见问题解决方法:
- 如果 Prettier 没有按预期格式化代码,首先检查是否安装了正确的依赖,并查看 Prettier 的配置文件以确定配置是否正确。
- 可以尝试在编辑器中手动触发格式化操作来查看效果。
Commitlint
主要功能:
Commitlint 是一个帮助你编写更规范 git commit message 的工具。它基于一组可配置的规则来检查 commit message 的格式和内容。
应用场景:
在团队协作中,Commitlint 可以确保每个开发者都遵循一致的 commit message 规范,从而提高代码的可读性和可维护性。
配置方法:
- 安装 Commitlint:在项目中执行
npm install --save-dev @commitlint/{cli,config-conventional}
。 - 配置文件:在项目的根目录下创建一个
commitlint.config.js
文件,并在其中指定要使用的规则集。例如,使用常规提交规范:module.exports = { extends: ['@commitlint/config-conventional'] }
。 - 集成到 Git 钩子:将 Commitlint 集成到 Git 钩子中,以便在每次提交时自动检查 commit message。可以使用 Husky 等工具来实现这一功能。
常见问题解决方法:
- 如果 Commitlint 报错,首先检查是否安装了正确的依赖,并查看报错信息以确定具体问题。报错信息通常会指出 commit message 不符合哪个规则。
- 可以根据报错信息修改 commit message 或配置 Commitlint 规则来解决问题。
前端监控
前端监控,简单来说就是我们在前端程序中记录一些信息并上报,一般是错误信息,来方便我们及时发现问题并解决问题。除此之外也会有性能监控,用户行为的监控(埋点)等。
对于错误监控: 可以了解一下 Sentry,原理简单来说就是通过 window.onerror
和 window.addEventListener('unhandledrejection', ...)
去分别捕获同步和异步错误,然后通过错误信息和 sourceMap
来定位到源码。
对于性能监控: 可以通过 window.performance
、PerformanceObserver
等 API 收集页面性能相关的指标,除此之外,还需要关注接口的响应时间。
收集到信息之后,还要考虑数据上报的方案: 比如使用 navigator.sendBeacon
还是 Fetch、AJAX?是批量上报,实时上报,还是延迟上报?上报的数据格式等等。
CI/CD
一、定义
持续集成(Continuous Integration, CI)和 持续部署(Continuous Deployment, CD),主要包括版本控制,代码合并,构建,单测,部署等一系列前端工作流。
- CI(Continuous Integration,持续集成):是一种软件开发实践,它要求开发人员频繁地将代码集成到共享的主干上。每次集成后,都会通过自动化的构建和测试来验证新代码的正确性。这有助于尽早发现错误,减少后期修复的成本。
- CD(Continuous Delivery/Continuous Deployment,持续交付/持续部署):是CI的后续步骤。持续交付指的是频繁地将软件的新版本交付给质量团队或用户以供评审,而持续部署则是指在评审通过后自动将代码部署到生产环境。
二、功能
- 提高开发效率:通过自动化的构建、测试和部署,CI/CD可以大大缩短开发周期,提高开发效率。
- 保证代码质量:每次代码集成后都会进行自动化测试,确保新代码的正确性,从而减少潜在的错误和缺陷。
- 快速响应市场变化:由于CI/CD可以加快软件的发布频率,因此可以更快地响应市场变化和用户需求。
- 降低风险:通过频繁的集成和测试,可以尽早发现问题并进行修复,从而降低单次发布的风险。
三、应用场景
- 大型企业:在大型企业中,由于团队规模较大,代码库复杂,因此需要使用CI/CD来确保代码的正确性和可维护性。
- 创业公司:对于创业公司来说,快速迭代和响应市场变化至关重要。CI/CD可以帮助他们加快开发速度,并确保软件质量。
- 跨团队协作:当多个团队共同参与一个项目时,CI/CD可以确保不同团队之间的代码能够顺利集成,并避免潜在的冲突和错误。
场景的工作流有 Jenkins、 Gitlab CI 等。我们可以配置在合并代码时自动打包部署,在提交代码时自动构建并发布包等。
这里可以了解下,比如在 Gitlab CI 中, Pipeline
、 Stage
和 Job
分别是什么,怎么配置,如何在不同环境配置不同工作流等。
四、作用
- 实现快速反馈:CI/CD可以在代码提交后立即进行构建和测试,从而快速发现错误并提供反馈。
- 自动化流程:通过自动化构建、测试和部署流程,可以减少人工干预和手动操作,降低出错的可能性。
- 提高团队协作效率:CI/CD可以确保不同团队之间的代码能够顺利集成,从而提高团队协作效率。
- 快速响应市场变化:CI/CD可以加快软件的发布频率,使团队能够更快地响应市场变化和用户需求。
总之,前端CI/CD是一种重要的软件开发实践,它可以通过自动化的构建、测试和部署流程来提高开发效率、保证代码质量、快速响应市场变化和降低风险。在大型企业、创业公司和跨团队协作等场景中都有广泛的应用。
相关文章:

前端工程化,前端监控,工作流,部署,性能
开发规范 创建项目的时候,配置下 ESlint,stylelint, prettier, commitlint 等; ESLint 主要功能: ESLint 是一个静态代码检查工具,用于在 JavaScript 代码中识别和报告模式。它的目标是提供一个插件化的 …...
浅析Java贪心算法
浅析Java贪心算法 在计算机科学中,贪心算法(Greedy Algorithm)是一种在每一步选择中都采取在当前状态下最好或最优(即最有利)的选择,从而希望导致结果是全局最好或最优的算法。贪心算法并不总是能够得到全…...

vue3.0(五) reactive全家桶
文章目录 1 reactive1.1 reactive的应用1.2 reactive的特点1.3 reactive的注意1.4 reactive的局限性 2 toRefs3 isReactive4 shallowReactive5 readonly5.1 readonly 详细信息5.2 readonly函数创建一个只读的响应式对象5.3 如何修改嵌套在只读响应式对象中的对象? 6 isReadonl…...

Selenium 自动化 —— 四种等待(wait)机制
更多关于Selenium的知识请访问CSND论坛“兰亭序咖啡”的专栏:专栏《Selenium 从入门到精通》 目录 目录 需要等待的场景 自己实现等待逻辑 Selenium 提供的三种等待机制 隐式等待(Implicit Waits) 隐式等待的优点 隐式等待的缺点 …...

每日两题 / 437. 路径总和 III 105. 从前序与中序遍历序列构造二叉树(LeetCode热题100)
437. 路径总和 III - 力扣(LeetCode) 前序遍历时,维护当前路径(根节点开始)的路径和,同时记录路径上每个节点的路径和 假设当前路径和为cur,那么ans 路径和(cur - target)的出现次数 /*** D…...

matlab使用2-基础绘图
matlab使用2-基础绘图 文章目录 matlab使用2-基础绘图1. 二维平面绘图2. 三维立体绘图3. 图形窗口的分割 1. 二维平面绘图 % 创建一些二维数据 x 0:0.01:10; % x轴的数据点,从0到10,间隔为0.01 y sin(x); % y轴的数据点,是x的正弦…...
嵌入式开发四大平台介绍
MCU(Micro Control Unit)四大平台介绍) 单片机优点:缺点:总结: DSP digital signal processingARM优点:缺点:总结 FPGA什么事FPGA(集成元件库)FPGA开发方法—…...

《Python编程从入门到实践》day28
# 昨日知识点回顾 安装Matplotlib 绘制简单的折线图 # 今日知识点学习 15.2.1 修改标签文字和线条粗细 # module backend_interagg has no attribute FigureCanvas. Did you mean: FigureCanvasAgg? # 解决办法:matplotlib切换图形界面显示终端TkAgg。 #…...

STC8增强型单片机开发【定时器Timer⭐】
目录 一、引言 二、定时器基础知识 三、STC8定时器配置 四、代码示例 五、总结 一、引言 在单片机开发中,定时器(Timer)是一个极其重要的组件,它允许开发者基于时间触发各种事件或任务。STC8增强型单片机作为一款功能丰富的…...

C语言实训项目源码-02餐厅饭卡管理系统-C语言实训C语言大作业小项目
C语言餐厅饭卡管理系统 一、主要功能 主要功能模块 页面名称 实现功能 负责人 进入页面 进入程序 主函数 系统主要功能 修改密码函数 修改密码 充值,显示函数 饭卡充值与信息显示 购买饭菜…...

Linux第四节--常见的指令介绍集合(持续更新中)
点赞关注不迷路!本节涉及初识Linux第四节,主要为常见的几条指令介绍。 如果文章对你有帮助的话 欢迎 评论💬 点赞👍🏻 收藏 ✨ 加关注👀 期待与你共同进步! 1. more指令 语法:more [选项][文件]…...

Apache Sqoop:高效数据传输工具搭建与使用教程
目录 引言一、环境准备二、安装sqoop下载sqoop包解压文件 三、配置Sqoop下载mysql驱动拷贝hive的归档文件配置环境变量修改sqoop-env.sh配置文件替换版本的commons-lang的jar包 验证Sqoop安装查看Sqoop版本测试Sqoop连接MySQL数据库是否成功查看数据库查看数据表去除警告信息 四…...

【C++初阶】第十一站:list的介绍及使用
目录 list的介绍及使用 1.list的含义 2.list的介绍 3.list的使用 1.list的构造 2.list iterator的使用 3.list capacity 4.list element access 5 list modifiers 尾插尾删 和 头插头删 insert 和 erase resize swap clear 6.list sort and reverse 7.list copy vector copy li…...

【devops】Linux 日常磁盘清理 ubuntu 清理大文件 docker 镜像清理
日常磁盘清理 1、查找大文件 find / -type f -size 1G2、清理docker无用镜像(drone产生的残余镜像文件) docker system prune -a一、清理服务器磁盘 1、查找大文件 在Ubuntu系统中,你可以使用find命令来查找大文件。find命令是一个强大的…...
2024年资阳市企业技术中心申报条件、流程要求及支持政策须知
第一章 总则 第一条 为深入贯彻中央、省、市大力实施创新驱动发展战略的部署要求,进一步强化企业技术创新主体地位,引导和支持企业增强技术创新能力,健全技术创新市场导向机制,规范我市企业技术中心(下称“市企业技术…...

社交媒体数据恢复:如流
如流,原名百度Hi,是百度公司开发的一款即时通讯软体。百度Hi具备文字消息、视讯、通话、文件传输等功能。 查找备份:如果您之前有备份如流中的数据,您可以尝试从备份中恢复。如流支持备份至云端,如百度网盘等。 联系客…...

【微信小程序开发(从零到一)【婚礼邀请函】制作】——任务分析和效果实现的前期准备(1)
👨💻个人主页:开发者-曼亿点 👨💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨💻 本文由 曼亿点 原创 👨💻 收录于专栏:…...
独孤思维:模仿别人赚钱太难,很痛苦
01 独孤早年混群的时候,想着成为群红,引流。 结果不得其法,别人要什么项目,我就把满是钩子的副业资料发群里。 被群主踢了出去。 我当时还不理解。 后来自己做了社群以后,才明白,这种行为,…...

图片转base64【Vue + 纯Html】
1.template <el-form-item label"图片"><div class"image-upload-container"><input type"file" id"imageUpload" class"image-upload" change"convertToBase64" /><label for"imageU…...

【从零开始学习Redis | 第十一篇】快速介绍Redis持久化策略
前言: Redis 作为一种快速、高效的内存数据库,被广泛应用于缓存、消息队列、会话存储等场景。然而,由于其特性是基于内存的,一旦服务器进程退出,内存中的数据就会丢失。为了解决这一问题,Redis 提供了持久…...
R语言AI模型部署方案:精准离线运行详解
R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...

Keil 中设置 STM32 Flash 和 RAM 地址详解
文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...
大学生职业发展与就业创业指导教学评价
这里是引用 作为软工2203/2204班的学生,我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要,而您认真负责的教学态度,让课程的每一部分都充满了实用价值。 尤其让我…...
力扣-35.搜索插入位置
题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...
AGain DB和倍数增益的关系
我在设置一款索尼CMOS芯片时,Again增益0db变化为6DB,画面的变化只有2倍DN的增益,比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析: 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...

基于SpringBoot在线拍卖系统的设计和实现
摘 要 随着社会的发展,社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 在线拍卖系统,主要的模块包括管理员;首页、个人中心、用户管理、商品类型管理、拍卖商品管理、历史竞拍管理、竞拍订单…...

给网站添加live2d看板娘
给网站添加live2d看板娘 参考文献: stevenjoezhang/live2d-widget: 把萌萌哒的看板娘抱回家 (ノ≧∇≦)ノ | Live2D widget for web platformEikanya/Live2d-model: Live2d model collectionzenghongtu/live2d-model-assets 前言 网站环境如下,文章也主…...
适应性Java用于现代 API:REST、GraphQL 和事件驱动
在快速发展的软件开发领域,REST、GraphQL 和事件驱动架构等新的 API 标准对于构建可扩展、高效的系统至关重要。Java 在现代 API 方面以其在企业应用中的稳定性而闻名,不断适应这些现代范式的需求。随着不断发展的生态系统,Java 在现代 API 方…...

WPF八大法则:告别模态窗口卡顿
⚙️ 核心问题:阻塞式模态窗口的缺陷 原始代码中ShowDialog()会阻塞UI线程,导致后续逻辑无法执行: var result modalWindow.ShowDialog(); // 线程阻塞 ProcessResult(result); // 必须等待窗口关闭根本问题:…...
华为OD最新机试真题-数组组成的最小数字-OD统一考试(B卷)
题目描述 给定一个整型数组,请从该数组中选择3个元素 组成最小数字并输出 (如果数组长度小于3,则选择数组中所有元素来组成最小数字)。 输入描述 行用半角逗号分割的字符串记录的整型数组,0<数组长度<= 100,0<整数的取值范围<= 10000。 输出描述 由3个元素组成…...