前端工程化

一、前端发展阶段概述

1、混沌期

整个江湖中只有一个传奇,就是”程序员”

  • 这种模式下对人员的综合要求高,开发者既要会数据库开发(SQL)、又要会服务器端开发(Java、C#、Php),还要会基本的前端开发(HTML、CSS、JS)。
  • 初期以客户端应用为主,后期随着web应用的发展,对界面交互和页面端开发的需求日益旺盛,对人员职责划分的需求日渐迫切。
    在这里插入图片描述

2、过渡阶段(觉醒)

  • 随着页面特效和用户体验的需求上升,专注CSS样式和JS脚本的前端开发脱颖而出
  • 伴随着人员职责分离,架构也发生变化了,常见的就是后端开发+前端开发(偏静态)

3、前后端分离(发展)

分工协作是社会发展的必然选择。

  • 前端人员重心为页面开发(Html+CSS+JavaScript),对js的要求上升,也称大前端,弱化复杂业务逻辑后端人员重心转到业务逻辑处理与数据性能处理,不再关心前端界面的呈现
  • 服务的分离,代码管理,服务部署也都独立出来分别管理,系统的灵活性也获得了极大的提升。
  • 前端选用 node 服务器,后端选用 Java、C#、Php 等结构化语言
    在这里插入图片描述

4、前端工程化(规范期)

从传统的手写页面的认知阶段走到工程化的世界,是跨越性。

  • 前端工程化是把软件工程相关的方法和思想应用到前端开发中,覆盖从代码编码到部署的整个周期,包含:编码、构建、打包、集成,测试和部署全流程。
    前端工程化的出现要感谢Node的发布。
  • 此阶段的前端,不局限于代码开发,还要对服务器、容器、Nginx等有一定的了解,除了不直接操作数据库外,与后端开发并无实质性区别。
    在这里插入图片描述

二、前端工程化

1、什么是前端工程化?

规范化、标准化、组件化、自动化

  • 前端工程化是指使用软件工程的技术和方法,对前端开发流程、技术、工具、经验等进行规范化、标准化,以提高开发效率、降低开发成本,让前端开发能够“自成体系”。
  • 前端工程化主要包括四个方面:模块化、组件化、规范化、自动化。其目的是为了让前端开发更加高效、有序、可重复,便于团队协作和管理,同时也能更好地与后端进行集成和交互。

2、前端工程化的四个方面

  • 模块化:将前端代码拆分成多个独立的模块,每个模块负责一部分功能,这样可以降低代码的耦合性,提高代码的可维护性和可复用性。模块化的主要应用包括ES6的模块化语法、Webpack的模块化打包等。
  • 组件化:将页面拆分成多个独立的组件,每个组件包含模板、样式和逻辑,这样可以提高代码的复用性和可维护性,降低项目的复杂度。组件化的主要应用包括React、Vue等前端框架。
  • 规范化:制定一套统一的编码规范和标准,包括HTML、CSS、JavaScript等,这样可以保证代码风格的一致性,提高团队协作的效率。规范化的应用包括制定统一的代码规范、目录结构、命名规则等。
  • 自动化:通过自动化工具和流程,减少重复的手动操作,提高开发效率。自动化的应用包括自动化构建、自动化测试、自动化部署等。

通过前端工程化,可以实现开发流程的优化和规范化,提高开发效率和代码质量,降低项目的维护成本。同时,前端工程化还可以提高团队协作的效率,减少沟通成本,让前端开发更加有序、高效。

3 、工程化的优势

  • 引入了模块化和包的概念,作用域隔离,解决了代码冲突的问题
  • 按需导出和导入机制,让编码过程更容易定位问题
  • 自动化的代码检测流程,有问题的代码在开发过程中就可以被发现
  • 编译打包机制可以让使用开发效率更高的编码方式,比如 Vue 组件、 CSS 的各种预处理器
  • 引入了代码兼容处理的方案( Babel),可以让自由使用更先进的 JavaScript 语句,而无需顾忌浏览器兼容性,因为最终会帮转换为浏览器兼容的实现版本

4、团队协作的优势

  • 统一的目录结构
  • 统一的代码风格
  • 可复用的模块和组件
  • 代码健壮性保障(TS类型约束及面向对象语法的支持)
  • 代码质量保障(EsLint+Prettier)
    代码风格及语法检测,变量及函数规范检测,减少编码错误,提高代码质量
  • 自动化(配置CI/CD完成自动化流水线)

5、开发、集成、部署的自动化

CI/CD 的核心概念是持续集成、持续交付和持续部署。它的底层逻辑是稳定的运行环境,高效的集成机制,快速的部署与响应。它需要开发与运营团队共同完成。
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用 Netty 实现群聊功能的步骤和注意事项

文章目录 前言声明功能说明实现步骤WebSocket 服务启动Channel 初始化HTTP 请求处理HTTP 页面内容WebSocket 请求处理 效果展示总结 前言 通过之前的文章介绍,我们可以深刻认识到Netty在网络编程领域的卓越表现和强大实力。这篇文章将介绍如何利用 Netty 框架开发一…

<C++> STL_list

1.list的介绍 list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向 其前一个元素和后一个元素。list与…

ELK日志收集系统

目录 一、概述 二、组件 一、logstash 一、工作过程 二、INPUT 三、FILETER 四、OUTPUTS 二、elasticsearch 三、kibana 三、架构类型 一、ELK 二、ELKK 三、ELFK 四、ELFKK 五、EFK 四、配置ELK日志收集系统集群实验的步骤文档 五、配置ELK日志收集系统集群 …

【JAVA基础】数据类型,逻辑控制

❤️ Author: 老九 ☕️ 个人博客:老九的CSDN博客 🙏 个人名言:不可控之事 乐观面对 😍 系列专栏: 文章目录 数据类型整型变量 int长整型变量 long单精度浮点数 float双精度浮点数 double字符类型 char字节…

C#_特性反射详解

特性是什么? 为程序元素额外添加声明信息的一种方式。 字面理解:相当于把额外信息写在干胶标签上,然后将其贴在程序集上。 反射是什么? 反射是一种能力,运行时获取程序集中的元数据。 字面理解:程序运行…

oracle 启停操作

1. 监听端口启停 # 根据实际情况 切换至oracle用户 su - oracle# 状态查看 lsnrctl stat# 启动1521端口监听 lsnrctl start# 关闭1521监听 lsnrctl stop 2. 数据库服务启停 # 立即关闭服务 shutdown immediate# 启动服务 startup

QT登陆注册界面练习

一、界面展示 二、主要功能界面代码 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QMainWindow(parent), ui(new Ui::Widget) {ui->setupUi(this);this->setFixedSize(540,410); //设置固定尺寸th…

linux下安装Mycat

1 官网下载mycat 官方网站: 上海云业网络科技有限公司http://www.mycat.org.cn/ github地址: MyCATApache GitHubMyCATApache has 34 repositories available. Follow their code on GitHub.https://github.com/MyCATApache 2 Mycat安装 1 把MyCat…

【Java】基础入门 (十六)--- 异常

1.异常 1.1 异常概述 异常是指程序在运行过程中出现的非正常的情况,如用户输入错误、除数为零、文件不存在、数组下标越界等。由于异常情况再程序运行过程中是难以避免的,一个良好的应用程序除了满足基本功能要求外,还应具备预见并处理可能发…

Linux服务器安装部署MongoDB数据库 – 【无公网IP远程连接】

文章目录 前言1.配置Mongodb源2.安装MongoDB数据库3.局域网连接测试4.安装cpolar内网穿透5.配置公网访问地址6.公网远程连接7.固定连接公网地址8.使用固定公网地址连接 前言 MongoDB是一个基于分布式文件存储的数据库。由 C 语言编写,旨在为 WEB 应用提供可扩展的高…

LeetCode-160. 相交链表

这是一道真的非常巧妙的题,题解思路如下: 如果让他们尾端队齐,那么从后面遍历就会很快找到第一个相交的点。但是逆序很麻烦。 于是有一个巧妙的思路诞生了,如果让短的先走完自己的再走长的,长的走完走短的,…

lib61850 学习笔记一 (概念)

IEC61850 定义60多种服务满足变电站通信需求。支持在线获取数据模型,也支持IED水平通信(GOOSE报文) 术语定义 间隔 bay: 变电站由据应公共功能紧密连接的子部分组成。 例如 介于进线或者 出线 和母线之间的断路器;二条母线之间…

mq与mqtt的关系

文章目录 mqtt 与 mq的区别mqtt 与 mq的详细区别传统消息队列RocketMQ和微消息队列MQTT对比:MQ与RPC的区别 mqtt 与 mq的区别 mqtt:一种通信协议,规范 MQ:一种通信通道(方式),也叫消息队列 MQ…

深入解析SNMP协议及其在网络设备管理中的应用

SNMP(Simple Network Management Protocol,简单网络管理协议)作为一种用于网络设备管理的协议,在实现网络设备的监控、配置和故障排除方面发挥着重要的作用。本文将深入解析SNMP协议的工作原理、重要概念和功能,并探讨…

uniapp实现:点击拨打电话,弹出电话号码列表,可以选择其中一个进行拨打

一、实现效果: 二、代码实现: 在uni-app中,使用uni.showActionSheet方法实现点击拨打电话的功能,并弹出相关的电话列表供用户选择。 当用户选择了其中一个电话后,会触发success回调函数,并通过res.tapInde…

OpenGL精简案例一

文章目录 案例一 绘制点线面定义Renderer顶点着色器片段着色器内置的特殊变量 应用场景工具ShaderHelper工具 TextResourceReader效果图如下 结论 案例一 绘制点线面 定义Renderer import android.content.Context; import android.opengl.GLES20; import android.opengl.GLSu…

Vue3.0 新特性以及使用变更总结

Vue3.0 在2020年9月正式发布了,也有许多小伙伴都热情的拥抱Vue3.0。去年年底我们新项目使用Vue3.0来开发,这篇文章就是在使用后的一个总结, 包含Vue3新特性的使用以及一些用法上的变更。 图片.png 为什么要升级Vue3 使用Vue2.x的小伙伴都熟悉…

Vue中如何为Echarts统计图设置数据

在前端界面接收后端数据后,将数据赋值给ECharts中的data时出现了,数据读取失败的问题(可能是由于数据渲染的前后顺序问题)。后通过如下方式进行了解决: 1、接下来将介绍UserController中的countUsers方法,…

vue实现富文本

效果图展示 一、安装依赖 npm install vue-quill-editor --save二、具体使用 html <template><!-- 富文本 --><quill-editorref"myQuillEditor"v-model"content":options"editorOption"blur"onEditorBlur($event)"…

【模拟】算法实战

文章目录 一、算法原理二、算法实战1. leetcode1576 替换所有的问号2. leetcode495 提莫攻击3. leetcode6 N字形变换4. leetcode38 外观数列5. leetcode1419 数青蛙 三、总结 一、算法原理 模拟就是用计算机来模拟题目中要求的操作&#xff0c;模拟题目通常具有代码量大、操作…