前端工程化,前端监控,工作流,部署,性能

news2024/11/15 11:43:26

开发规范

创建项目的时候,配置下 ESlintstylelint, prettier, commitlint 等;

ESLint

主要功能
ESLint 是一个静态代码检查工具,用于在 JavaScript 代码中识别和报告模式。它的目标是提供一个插件化的 JavaScript 代码质量工具。

应用场景
在前端开发过程中,ESLint 能够帮助开发者发现代码中的错误、不符合规范的地方,从而提高代码质量。

配置方法

  1. 全局安装 ESLint:在命令行中执行 npm install -g eslint
  2. 初始化 ESLint 配置:在项目根目录下执行 eslint --init,然后根据提示选择需要的配置。
  3. 配置文件:在项目的根目录下创建一个 .eslintrc 文件(可以是 JSON、YAML 或 JS 格式),并在其中指定规则、插件、解析器等。例如,指定使用 Babel 解析器:{ "parser": "babel-eslint" }

常见问题解决方法

  • 如果遇到 ESLint 报错,首先检查是否安装了正确的依赖,并查看报错信息以确定具体问题。
  • 可以根据报错信息修改代码或配置 ESLint 规则来解决问题。

Stylelint

主要功能
Stylelint 是一个强大的、现代化的 CSS/SCSS/Less 检查工具,可以帮助开发者遵循一致的代码风格和最佳实践。

应用场景
在前端开发过程中,Stylelint 能够确保 CSS 代码的风格一致性和可读性。

配置方法

  1. 安装 Stylelint:在项目中执行 npm install --save-dev stylelint
  2. 配置文件:在项目的根目录下创建一个 .stylelintrc 文件(可以是 JSON 或 YAML 格式),并在其中指定规则、插件等。例如,指定一个规则禁止在数字前加零:"number-leading-zero": "never"

常见问题解决方法

  • 如果遇到 Stylelint 报错,首先检查是否安装了正确的依赖,并查看报错信息以确定具体问题。
  • 可以根据报错信息修改 CSS 代码或配置 Stylelint 规则来解决问题。

Prettier

主要功能
Prettier 是一个代码格式化工具,支持多种语言,包括 JavaScript、CSS、HTML 等。它可以帮助开发者自动调整代码格式,使其符合一致的样式。

应用场景
在前端开发过程中,Prettier 可以自动格式化代码,节省开发者手动调整代码格式的时间。

配置方法

  1. 安装 Prettier:在项目中执行 npm install --save-dev --save-exact prettier
  2. 配置文件:在项目的根目录下创建一个 .prettierrc 文件(可以是 JSON、YAML 或 JS 格式),并在其中指定格式化规则。Prettier 的配置相对简单,主要指定一些基本的格式化选项,如缩进大小、换行符等。
  3. 集成到编辑器:将 Prettier 集成到编辑器中(如 VS Code),以便在保存文件时自动格式化代码。

常见问题解决方法

  • 如果 Prettier 没有按预期格式化代码,首先检查是否安装了正确的依赖,并查看 Prettier 的配置文件以确定配置是否正确。
  • 可以尝试在编辑器中手动触发格式化操作来查看效果。

Commitlint

主要功能
Commitlint 是一个帮助你编写更规范 git commit message 的工具。它基于一组可配置的规则来检查 commit message 的格式和内容。

应用场景
在团队协作中,Commitlint 可以确保每个开发者都遵循一致的 commit message 规范,从而提高代码的可读性和可维护性。

配置方法

  1. 安装 Commitlint:在项目中执行 npm install --save-dev @commitlint/{cli,config-conventional}
  2. 配置文件:在项目的根目录下创建一个 commitlint.config.js 文件,并在其中指定要使用的规则集。例如,使用常规提交规范:module.exports = { extends: ['@commitlint/config-conventional'] }
  3. 集成到 Git 钩子:将 Commitlint 集成到 Git 钩子中,以便在每次提交时自动检查 commit message。可以使用 Husky 等工具来实现这一功能。

常见问题解决方法

  • 如果 Commitlint 报错,首先检查是否安装了正确的依赖,并查看报错信息以确定具体问题。报错信息通常会指出 commit message 不符合哪个规则。
  • 可以根据报错信息修改 commit message 或配置 Commitlint 规则来解决问题。

前端监控

前端监控,简单来说就是我们在前端程序中记录一些信息并上报,一般是错误信息,来方便我们及时发现问题并解决问题。除此之外也会有性能监控用户行为的监控(埋点)等。

对于错误监控:  可以了解一下 Sentry,原理简单来说就是通过 window.onerrorwindow.addEventListener('unhandledrejection', ...) 去分别捕获同步和异步错误,然后通过错误信息和 sourceMap 来定位到源码。

对于性能监控:  可以通过 window.performancePerformanceObserver 等 API 收集页面性能相关的指标,除此之外,还需要关注接口的响应时间。

收集到信息之后,还要考虑数据上报的方案:  比如使用 navigator.sendBeacon 还是 Fetch、AJAX?是批量上报,实时上报,还是延迟上报?上报的数据格式等等。

CI/CD

一、定义

   持续集成(Continuous Integration, CI)和 持续部署(Continuous Deployment, CD),主要包括版本控制,代码合并,构建,单测,部署等一系列前端工作流。

  1. CI(Continuous Integration,持续集成):是一种软件开发实践,它要求开发人员频繁地将代码集成到共享的主干上。每次集成后,都会通过自动化的构建和测试来验证新代码的正确性。这有助于尽早发现错误,减少后期修复的成本。
  2. CD(Continuous Delivery/Continuous Deployment,持续交付/持续部署):是CI的后续步骤。持续交付指的是频繁地将软件的新版本交付给质量团队或用户以供评审,而持续部署则是指在评审通过后自动将代码部署到生产环境。

二、功能

  1. 提高开发效率:通过自动化的构建、测试和部署,CI/CD可以大大缩短开发周期,提高开发效率。
  2. 保证代码质量:每次代码集成后都会进行自动化测试,确保新代码的正确性,从而减少潜在的错误和缺陷。
  3. 快速响应市场变化:由于CI/CD可以加快软件的发布频率,因此可以更快地响应市场变化和用户需求。
  4. 降低风险:通过频繁的集成和测试,可以尽早发现问题并进行修复,从而降低单次发布的风险。

三、应用场景

  1. 大型企业:在大型企业中,由于团队规模较大,代码库复杂,因此需要使用CI/CD来确保代码的正确性和可维护性。
  2. 创业公司:对于创业公司来说,快速迭代和响应市场变化至关重要。CI/CD可以帮助他们加快开发速度,并确保软件质量。
  3. 跨团队协作:当多个团队共同参与一个项目时,CI/CD可以确保不同团队之间的代码能够顺利集成,并避免潜在的冲突和错误。

         场景的工作流有 Jenkins、 Gitlab CI 等。我们可以配置在合并代码时自动打包部署,在提交代码时自动构建并发布包等。 

        这里可以了解下,比如在 Gitlab CI 中, Pipeline 、 Stage 和 Job 分别是什么,怎么配置,如何在不同环境配置不同工作流等。

四、作用

  1. 实现快速反馈:CI/CD可以在代码提交后立即进行构建和测试,从而快速发现错误并提供反馈。
  2. 自动化流程:通过自动化构建、测试和部署流程,可以减少人工干预和手动操作,降低出错的可能性。
  3. 提高团队协作效率:CI/CD可以确保不同团队之间的代码能够顺利集成,从而提高团队协作效率。
  4. 快速响应市场变化:CI/CD可以加快软件的发布频率,使团队能够更快地响应市场变化和用户需求。

总之,前端CI/CD是一种重要的软件开发实践,它可以通过自动化的构建、测试和部署流程来提高开发效率、保证代码质量、快速响应市场变化和降低风险。在大型企业、创业公司和跨团队协作等场景中都有广泛的应用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1666356.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

LeetCode 138. 随机链表的复制

目录 1.原题链接: 2.结点拆分: 代码实现: 3.提交结果: 4.读书分享: 1.原题链接: 138. 随机链表的复制 2.结点拆分: ①.拷贝各个结点,连接在原结点后面; ②.处…

Imitation Learning学习记录(理论例程)

前言 最近还是衔接着之前的学习记录,这次打算开始学习模仿学习的相关原理,参考的开源资料为 TeaPearce/Counter-Strike_Behavioural_Cloning: IEEE CoG & NeurIPS workshop paper ‘Counter-Strike Deathmatch with Large-Scale Behavioural Clonin…

【源头开发】运营级竞拍商城源码/抢拍转拍/竞拍源码/转卖寄售/拆分/溢价商城转拍溢价php源码uniapp源码

大家好啊,欢迎来到web测评,我是年哥,我们有个小伙伴又开发了一款竞拍商城的源码,是此系统的源头开发者,本系统是前后端分离的架构,前端php,后端uniapp,系统现在是持续的在更新中&…

libcity笔记: HSTLSTMEncoder

1 __init__ 2 encode 得到的内容如下: data_feature的内容: 一共有多少个location1【包括pad的一个】最长的时间间隔(秒)最长的距离间隔(千米)多少个useer idpadding 的locationidpad_item的内容 location…

[单机]成吉思汗3_GM工具_VM虚拟机

稀有端游成吉思汗1,2,3单机版虚拟机一键端完整版 本教程仅限学习使用,禁止商用,一切后果与本人无关,此声明具有法律效应!!!! 教程是本人亲自搭建成功的,绝对是完整可运行的&#x…

React 第三十一章 前端框架的分类

现代前端框架,有一个非常重要的特点,那就是基于状态的声明式渲染。如果要概括的话,可以使用一个公式: UI f(state) state:当前视图的一个状态f:框架内部的一个运行机制UI&#xff1…

计算机视觉——基于改进UNet图像增强算法实现

1. 引言 在低光照条件下进行成像非常具有挑战性,因为光子计数低且存在噪声。高ISO可以用来增加亮度,但它也会放大噪声。后处理,如缩放或直方图拉伸可以应用,但这并不能解决由于光子计数低导致的低信噪比(SNR&#xff…

从头理解transformer,注意力机制(下)

交叉注意力 交叉注意力里面q和KV生成的数据不一样 自注意力机制就是闷头自学 解码器里面的每一层都会拿着编码器结果进行参考,然后比较相互之间的差异。每做一次注意力计算都需要校准一次 编码器和解码器是可以并行进行训练的 训练过程 好久不见输入到编码器&…

【图论 回溯 广度优先搜索】126. 单词接龙 II

本文涉及知识点 图论 回溯 深度优先搜索 广度优先搜索 图论知识汇总 LeetCode 126. 单词接龙 II 按字典 wordList 完成从单词 beginWord 到单词 endWord 转化,一个表示此过程的 转换序列 是形式上像 beginWord -> s1 -> s2 -> … -> sk 这样的单词序…

机器学习入门到放弃2:朴素贝叶斯

1. 算法介绍 1.1 算法定义 朴素贝叶斯分类(NBC)是以贝叶斯定理为基础并且假设特征条件之间相互独立的方法,先通过已给定的训练集,以特征词之间独立作为前提假设,学习从输入到输出的联合概率分布,再基于学习…

oracle 数据库与服务、实例与SID、表空间、用户与表模式

一、数据库与数据库服务: 概念:就是一个数据库的标识,在安装时就要想好,以后一般不修改,修改起来也麻烦,因为数据库一旦安装,数据库名就写进了控制文件,数据库表,很多地方都会用到这个数据库名。是数据库系统的入口,它会内置一些高级权限的用户如SYS,SYSTEM等。我们…

Xilinx 千兆以太网TEMAC IP核 MDIO 配置及物理接口

基于AXI4-Lite接口可以访问MDIO(Management Data Input/Output)接口,而MDIO接口连接MAC外部的PHY芯片,用户可通过AXI4-Lite接口实现对PHY芯片的配置。 1 MDIO接口简介 开放系统互连模型OSI的最低两层分别是数据链路层和物理层,数据链路层的…

探讨欧盟就人工智能监管达成协议

《人工智能法案》是一项具有里程碑意义的立法,它可以创造一个有利的环境,在这种环境中,人工智能的使用将成为一种更优秀的安全和信任的工具,确保整个欧盟的公共和私人机构利益相关者的参与。 历时3天的“马拉松式”谈判圆满结束&…

数据可视化训练第四天(模拟投掷筛子并且统计频次)

投掷一个筛子 import matplotlib.pyplot as plt from random import randint import numpy as npclass Die:"""模拟投掷筛子"""def __init__(self,num_sides6):self.num_sidesnum_sidesdef roll(self):return randint(1,self.num_sides)num1000…

vi\vim编辑器

root用户(超级管理员) 无论是Windows、MacOS、Linux均采用多用户的管理模式进行权限管理。 在Linux系统中,拥有最大权限的账户名为:root(超级管理员) root用户拥有最大的系统操作权限,而普通…

论文盲审吐槽多,谁给盲审不负责的老师买单?如何看待浙江大学「一刀切」的研究生学位论文双盲评审制度?

::: block-1 “时问桫椤”是一个致力于为本科生到研究生教育阶段提供帮助的不太正式的公众号。我们旨在在大家感到困惑、痛苦或面临困难时伸出援手。通过总结广大研究生的经验,帮助大家尽早适应研究生生活,尽快了解科研的本质。祝一切顺利!—…

二维数组 和 变长数组

在上一期的内容中,为诸君讲解到了一维数组,在一维数组的基础上,C语言中还有着多维数组,其中,比较典型且运用较为广泛的就是我们今天的主角——二维数组 一 . 二维数组的概念 我们把单个或者多个元素组成的数组定义为一…

DI-engine强化学习入门(七)如何自定义神经网络模型

在强化学习中,需要根据决策问题和策略选择合适的神经网络。DI-engine中,神经网络模型可以通过两种方式指定: 使用配置文件中的cfg.policy.model自动生成默认模型。这种方式下,可以在配置文件中指定神经网络的类型(MLP、CNN等)以及超参数(隐层大小、激活函数等),DI-engine会根据…

【漏洞复现】泛微OA E-Cology XmlRpcServlet文件读取漏洞

漏洞描述: 泛微OA E-Cology是一款面向中大型组织的数字化办公产品,它基于全新的设计理念和管理思想,旨在为中大型组织创建一个全新的高效协同办公环境。泛微OA E-Cology XmlRpcServlet存在任意文件读取漏洞,允许未经授权的用户读…

三星硬盘格式化后怎么恢复数据

在数字化时代,硬盘作为数据存储的核心部件,承载着我们的重要文件、照片、视频等资料。然而,不慎的格式化操作可能使我们失去宝贵的数据。面对这样的困境,许多用户可能会感到无助和焦虑。本文旨在为三星硬盘用户提供格式化后的数据…