位置: IT常识 - 正文

前端工程化详解——理解与实践前端工程化(前端工程化解决方案)

编辑:rootadmin
前端工程化详解——理解与实践前端工程化

推荐整理分享前端工程化详解——理解与实践前端工程化(前端工程化解决方案),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:前端工程化做了哪些东西,怎么做,前端 工程化,前端工程化做了哪些东西,怎么做,前端 工程化,前端工程化做了哪些东西,怎么做,前端工程化包含哪些,前端工程化做了哪些东西,怎么做,前端工程化做了哪些东西,怎么做,内容如对您有帮助,希望把文章链接给更多的朋友!

前言: 前端工程化一直是一个老生常谈的问题,不管是面试还是我们在公司做基建都会经常提到前端工程化,那么为什么经常会说到前端工程化,并没有听过后端工程化、Java工程化或者Python工程化呢?我们理解的前端工程化是不是一直都是Webpack的性能调优,或者是一个cli工具呢?今天我们带着问题来一起寻找一下答案吧!

文章目录一、前端工程化简介1. 前端发展历史二、工程化整体流程三、相关面试题1. 一个新项目由你来做技术选型,你会从那几个方面来考虑?2. 前端项目应该如何部署上线a. 集成b. 发布四、大厂工程化实践及开源方案五、迷你工程化脚手架实践一、前端工程化简介

我们整天再说前端工程化,那我我们思考一下,为什么会有前端工程化这个 概念?我们来一起回顾前端的发展历史,通过这个发展历史我们就能知道为什么会有【前端工程化】这个概念。

1. 前端发展历史

看下面流程图我们可以看出来 第一阶段:前端最早期的只是HTML、CSS、JS(此时只是前端发展的一个雏形,【JS】还没有模块化的概念),随着页面发展我们发现一个页面引入太多JS脚本,将大大增加维护成本; 第二阶段:已经出现了模块的概念,会按照模块的概念进行拆分,我们如何拆分模块,如何放置这些模块?此时已经有了一个工程化的概念; 第三个阶段:模块已经划分出来,但是我们部署的时候还是想合并在一起,就涉及到了早起的打包处理; 第四个阶段:前端进一步复杂之后,前端需要承载的功能更多了,逐步开始进行前后端分离,前端也可以独立的开发了。此时前端也出来了一些新的概念,比如说:SPA、Angular、Vue等。此时就要开始考虑路由如何规划?开发时如何调试?开发完如何构建?构建完如何发布?这一切的东西才构成了【前端工程化的概念】;

HTMLCSSJSAMD:异步模块加载CMD:同步模块加载Commonjs:09年Node.jsES-Model:15年ES6的出现Gruntgulpjade前后端分离

综上所述我们可以看出来,前端工程化绝不只是webpack或babel构建这一块,前端工程化是一个整体,从前端开始写代码 --> 如何构建 --> 如何发布测试 --> 如何上线 --> 上线后的应用状态如何监控等,这一套的流程我们把他叫做【前端工程化】。

二、工程化整体流程**下图所示,就是我们从零开始整个前端工程化的考虑范围**1. 从创建项目与开发阶段--> 我们要使用脚手架,对应的Eslint规范以及我们要使用什么UI组件库2. CI --> 持续集成: 在一个集中的环境去构建我们的项目(避免不同协作人员环境不同带来的Bug)3. CD --> 持续部署下面面试题 【前端项目应该如何部署上线】 会对 CI/CD做详细的介绍创建项目开发构建测试上线脚手架规范 + Eslint组件库CI:持续构建CD:持续部署监控

为什么开篇说到后端没有工程化的概念? 我们比如Java语言,他天生就是一种企业级的开发语言,他已经把上述流程包括在里面,不需要自己在去做这些基础建设;而JS是一门脚本语言,在不断开发不断迭代的进展中演变出了前端工程化的这个概念。

三、相关面试题1. 一个新项目由你来做技术选型,你会从那几个方面来考虑?前端工程化详解——理解与实践前端工程化(前端工程化解决方案)

第二个大话题,【工程化整体流程 】都是我们需要考虑的

2. 前端项目应该如何部署上线老规矩,先看图,下图是正常的前端发布流程

下面的流程大家觉得有什么问题吗? 很多公司都是这样的一个流程,我们要知道服务器是做什么的?服务器应该是运行一些动态的程序,比如我们的Java代码,NodeJs代码,他是动态去处理数据,处理我们客户端的请求的。但是我们打包构建好的JS是一个文件,我们把一个静态文件放置一台服务器是不是就会很浪费成本,所以下图的流程一般是后端的部署流程

开发代码git push--触发webHook集成Jenkins:Docker构建代码发布服务器Nginx

前端部署一般会加上CDN(内容分发网络) 为什么要加CDN,第一优化加载速度(网络时延导致的速度过慢),第二把不需要动态处理的文件(JS/CSS/Image/Video)放在CDN节省服务器资源。

最后两个步骤,主要是快速回滚,假如我们发布到线上的代码出现了问题,再重头集成,大概需要十分钟,而这十分钟客户一直看到的是有问题的页面! 每次 HTML 加载的时候我们会先去读取版本,然后拿到对应版本的JS/CSS,这样的话所有的CSS和JS都是有对应版本的,一旦发现问题直接通过HTML 加载上一次的版本即可。

开发代码git push--触发webHook集成Jenkins:Docker构建代码HTMLJS + CSS =>CDNVersiona. 集成

这里详细解释一下为什么要在集成的环境(也叫云构建)去进行 npm run build ? 为什么不在本地环境进行构建,要在集成的环境构建,这里核心的问题就是,没有办法保证每个人的环境(比如:npm版本、node版本)是一样的,假设不环境不一样的话,构建出来的产物就会有差异,发布上线以后出现问题很难排查。

b. 发布

前端的代码应该是运行在哪里? 运行在一台物理服务器或者云服务器上

四、大厂工程化实践及开源方案

蚂蚁金服开源的 UmiJS; 它提前预定好很多功能,我们可以做到开箱即用,其实 UmiJS 已经是前端工程化一个很好的范例与实践(包含基础配置比如路由、mock、构建(Webpack)、部署)。

阿里开源的 飞冰 它和 UmiJS 一样也是基于React去设计的,飞冰比 UmiJS 内置的功能要更多一点,比如:数据请求、状态管理、日志打印、菜单配置等等。

字节跳动开源的 MODERN.js MODERN 会比飞冰与UmiJS包含的内容更多一些,它是按照业务场景把功能做了一个更细致的分类,比如:正常网站、中后台、桌面应用、微前端等等,主要的是支持Vue。

五、迷你工程化脚手架实践时间有限稍后给大家补上,抱歉抱歉!!!
本文链接地址:https://www.jiuchutong.com/zhishi/300249.html 转载请保留说明!

上一篇:共享主机和 WordPress 主机之间的区别(共享主机和vps)

下一篇:【OpenCV】Qt + OpenCV 开发配置 + 入门知识(代码示例)(qt opencv ffmpeg)

  • APP快速运营推广,绝不可放过新媒体渠道运营(app运营推广计划方案)

    APP快速运营推广,绝不可放过新媒体渠道运营(app运营推广计划方案)

  • 微信扣款怎么取消自动续费(微信扣款怎么取消免密支付)

    微信扣款怎么取消自动续费(微信扣款怎么取消免密支付)

  • 手机除号怎么打(手机除号怎么打出来)

    手机除号怎么打(手机除号怎么打出来)

  • 微信号可以隐藏吗不想让好友看到(微信号可以隐藏手机号码吗)

    微信号可以隐藏吗不想让好友看到(微信号可以隐藏手机号码吗)

  • 华为9x有红外遥控吗(华为9x有红外线)

    华为9x有红外遥控吗(华为9x有红外线)

  • 拼多多月卡是每月都扣吗(拼多多月卡是每个月都要付款吗?)

    拼多多月卡是每月都扣吗(拼多多月卡是每个月都要付款吗?)

  • 唯品会拒收有什么后果(唯品会货物拒收会怎样)

    唯品会拒收有什么后果(唯品会货物拒收会怎样)

  • 淘宝同城交易怎么发货(淘宝同城交易怎么删除)

    淘宝同城交易怎么发货(淘宝同城交易怎么删除)

  • 候补退单什么时候到账(候补退单什么时候退钱)

    候补退单什么时候到账(候补退单什么时候退钱)

  • 抖音和抖音极速版是一家的吗(抖音和抖音极速版可以一起登录吗)

    抖音和抖音极速版是一家的吗(抖音和抖音极速版可以一起登录吗)

  • 退出word应用程序的快捷键是(退出word应用程序窗口有几种)

    退出word应用程序的快捷键是(退出word应用程序窗口有几种)

  • 抖音聊天记录能恢复吗(抖音聊天记录能找回吗)

    抖音聊天记录能恢复吗(抖音聊天记录能找回吗)

  • 悠趣直播怎么播游戏(悠趣直播怎么播放电影)

    悠趣直播怎么播游戏(悠趣直播怎么播放电影)

  • 魅族16T怎么进入工程模式(魅族16t怎么进入fastboot)

    魅族16T怎么进入工程模式(魅族16t怎么进入fastboot)

  • word文档修改不了内容(word怎么改成pdf)

    word文档修改不了内容(word怎么改成pdf)

  • 电池beta版是什么意思(苹果电池beta版准确吗)

    电池beta版是什么意思(苹果电池beta版准确吗)

  • 华为手环如何重启(华为手环如何重启开机)

    华为手环如何重启(华为手环如何重启开机)

  • 苹果xs怎么拍摄出广角(苹果xs怎么拍摄照片好看)

    苹果xs怎么拍摄出广角(苹果xs怎么拍摄照片好看)

  • 怎么查看优酷会员到期(怎么查看优酷会员登录几个设备)

    怎么查看优酷会员到期(怎么查看优酷会员登录几个设备)

  • 索尼xperia1怎么设置壁纸自动变换

    索尼xperia1怎么设置壁纸自动变换

  • 小米8如何长截屏(小米如何长截屏微信聊天记录)

    小米8如何长截屏(小米如何长截屏微信聊天记录)

  • 鸿蒙通知栏和控制中心怎么实现左右滑动切换?(鸿蒙系统通知栏和控制)

    鸿蒙通知栏和控制中心怎么实现左右滑动切换?(鸿蒙系统通知栏和控制)

  • lmpdpsrv.exe是什么进程 lmpdpsrv进程查询(mplugin.exe是什么)

    lmpdpsrv.exe是什么进程 lmpdpsrv进程查询(mplugin.exe是什么)

  • CiteSpace关键词共现图谱含义详细解析与注意事项(citespace关键词共现分析)

    CiteSpace关键词共现图谱含义详细解析与注意事项(citespace关键词共现分析)

  • 增值税发票认证在哪里
  • 我国企业基本所得税的税率
  • 计提并结转所得税费用的会计分录
  • 主营业务怎么计算
  • 收取职工工会会费收据
  • 工程物资什么时候结转到开发成本里面
  • 应付利润借方有余额怎么处理
  • 一般纳税人的税率是多少个点
  • 母公司向子公司出售不动产要征收增值税吗
  • 小规模纳税人和个体工商户的税收政策
  • 员工报销医疗费怎么做账
  • 开票给子公司的利息收入怎么做账?
  • 收到政府补贴现金流量表怎么填
  • 从对公账户提取备用金违法吗
  • 房产公司增值税和土地增值税
  • 收到外币计算税款的汇率是怎么算的?
  • 加油充值卡有优惠吗
  • 金税盘增值税普通发票红冲操作流程
  • 印花税加工承揽税率
  • 通讯费税前扣除标准
  • 典当行的账务处理会计分录大全
  • 应收账款及票据
  • 资产减值损失借方余额在利润表怎么填列
  • 怎么处理有问题的货物
  • 鸿蒙壁纸怎么设置滚动
  • 电脑win10点开始没反应
  • 如何生成系统图
  • windows缺失
  • 开机自动进入安装模式
  • 税务部门罚没收入计入什么科目
  • macos使用技巧
  • 材料费可抵扣进项税计算
  • 固定资产全额折旧
  • 期间费用为何要摊销
  • 销售折扣增值税如何处理
  • 技术出口发票开什么信息
  • yolov5目标检测代码
  • patriotic研究
  • 手把手教你安装技嘉b550 master主板
  • 出口退税的一般程序
  • 会计记账凭证摘要如何编写
  • 深究Python中的asyncio库-shield函数
  • 交易性金融资产的入账价值
  • 制造业属不属于第二产业
  • 消防预付款怎么做分录
  • 增值税抵扣勾选最晚日期
  • 差旅费抵扣增值税税率
  • 京东提现到公账怎么取消
  • 买电脑怎么做账
  • 增值税当月缴纳还是次月缴纳
  • 库存商品对外销售会计分录
  • 只有销售才能使你成功的名言
  • 网上银行可以取款吗
  • 小规模纳税人标准500万是含税吗
  • 环境检测费属于什么费用
  • mysql 5.7 8.0
  • ssh访问windows
  • linux tr命令详解
  • win10重装系统后无线网卡不能用了
  • xp系统蓝屏解决
  • ubuntu有线正在连接
  • Ubuntu软件源更新
  • linux建立动态库链接
  • centos 查看用户命令
  • windows8飞行模式怎么关
  • linux显示所有内容
  • 微信小程序实现账号密码登录
  • 拖拽js实现
  • nodejs使用视频教程
  • shell脚本模拟ctrl
  • unity3d CarWaypoints插件
  • npm yarn命令对比
  • python爬虫详解
  • jqgrid分页pager
  • 定额发票属于什么类型
  • 企业党支部怎么称呼
  • 纳税人办理汇算清缴
  • 工厂的税率是多少
  • 税务局人事工作总结(税务局工作人员年度工作总结报告)
  • 常态化与长效化的区别
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设