【中高级前端必看】- 结合代码实践,全面学习前端工程化
前言简单来讲前端工程化就是软件工程加上前端, 是以自动化状态呈现的, 就个人所理解的情况而言, 前端工程化从开发阶段一直到代码发布到生产环境, 涵盖了以下几个方面的内容:下面, 我们依据上述那几个内容, 挑选出具有代表性的几个方面, 进而开展深入的前端工程化学习。脚手架脚手架是什么What现今流行的前端脚手架大体都是基于特定编写而成, 举例来说, 像我们日常常用的Vue-CLI, 较为热门的那个-react-app, 加还有Dva-CLI这样的。脚手架存在的意义Why你看, 前端工程化概念如今越发深入人心, 脚手架乃为减少重复性工作而被引入的命令行工具, 它能让你摆脱ctrl c, ctrl v, 这是为啥呢? 就说现在新建一个前端项目, 可不是像之前那样在html头部引入css, 尾部引入js那么简单, css现在都用Sass或者Less来编写, 在js里引入, 再动态构建注入到html中而且, 除学习基本的js, css语法以及热门框架之外, 还得学习构建工具, 得了解babel怎么配置, 怎么启动前端服务, 怎么实现热更新再有, 为了编写时让编辑器帮咱查错并更规范, 还得引入相关东西甚至有些项目还得引入单元测试Jest。对于一个处于更入门阶段的人来讲, 这无疑会使人望而却步。前端脚手架予以出现, 事情随即便简而化, 借助一键命令, 去新建一个工程, 之后再执行两个npm的命令, 从而跑起一个项目。在入门这个阶段时, 无需对配置之类事项予以关注, 只需心情愉快地开展写代码行动就可以了。基于koa, 怎样去实现一个新建项目脚手架呢? How首先, 对实现思路进行一下梳理。我们达成脚手架的关键理念乃是自动化思考方式, 把重复性的通过按下ctrl c, 之后再按下 ctrl v来创建项目之行 为, 借着程序将其处理。处理进程有如下面这般:将文件夹予以创建, 此文件夹名为项目名, 接着, 把名为 index.js 的文件进行创建, 再创作.jason, 随后, 安排安装依赖, 其中, 要先将文件夹进行创建。创建文件夹前需要先删除清空引入的 fs 模块, 使用那种 API, 靠这个去创建文件夹: 我们是这么做的。2. 创建 index.js进行创建, 创建出索引javaS脚本文件, 此即index.js这一文件, 借助fs模块所具备的有关API来开展此项创建工作。进而我们要瞧瞧, 动态模板怎样生成? 我们格外理想的途径为借助配置去动态生成文件模板, 那么具体来瞅瞅实现的逻辑。3. 创建 .json生成.json文件, 实际上跟生成index.js大致相似, 皆是运用动态生成模板的想法来达成, 我们瞧瞧核心办法plate的实现代码:4. 安装依赖为了能够自动进行所需依赖的安装, 我们之所以能够使用这个 execa库, 是因为它可以去执行那个可以进行 yarn安装操作的命令:到了这个时候, 我们已然借助相关方式达成了新建项目的脚手架。最终我们能够再次整理下那些可以优化的要点, 进而把它升级得更加完善。比如说, 把程序配置升级为 GUI 用户配置也就是用户借助手动选择或者输入的方式来传入配置参数, 像项目名这类参数。编译构建编译构建是什么构建, 亦称作编译, 此乃前端工程自化体系里功能最为繁杂、最为琐碎的模块, 它肩负那种从源代码转变为宿主可执行在浏览器的代码的担子, 它里头核心的东西是资源的管理。前端所产出的资源涵盖JS、CSS、HTML这类, 各自所对应的源代码分别是:原理若打算切实运用好编译构建工具, 那我们得先去知晓一下它的工作原理, 工作原理是, 通过递归方式找出全部依赖模块, 令源码转变成为浏览器能够执行的代码, 进而构建输出, 具体的工作流程步骤犹如以下这般:从配置文件那儿取参数, 再把它跟 shell 脚本里的参数合并起来。用上一步合并好了的参数去初始化对象, 接着执行 run 方法, 这就开始着手准备编译。按照配置当中的 entry 内容, 去确定入口文件。从已经确定好的入口文件作为起始点, 通过递归遍历的方式去找出所有依赖模块对应的文件。对找出的带有依赖关系的所有模块文件进行转译操作, 以此得到转译过后的最终内容以及它们之间的依赖关联。依据已然锁定的入口以及各模块之间的依赖关系, 将其组装成一个个 chunk, 然后添加到输出列表里面。根据配置中的相关内容, 去明确输出路径以及文件名, 把文件内容写入到输出目录默认设定为 dist。这就是实践 1. 基础配置的整个流程。entry当处于编译构建阶段时, 为了能够找到编译的入口文件, 从而进而构建起内部依赖图, 才会有入口配置。输出配置, 告知其创建内容的输出位置所在之处 , 连同怎样为这些文件进行命名。具备模块转换功能的器件, 能够针对浏览器没办法直接去运行的文件模块予以应对, 将其转变成为能正常发挥作用的模块。举例来讲, 像对于css-以及style-而言是处理样式的任务 , 而url-跟file-则是负责处理图片相关事宜的。插件具有解决那些没办法实现的问题的功能, 在整个构建的生命周期中, 它都能够以扩展的方式呈现。臂如, 进行打包的优化、开展资源的管理, 还有注入环境变量等等类似的事儿。而接下来要讲述的是基本配置所具有的简单示例:参考官网//注意使用不同版本的 切换对应版本的文档哦2. 性能优化编译速度优化检测编译速度寻找检测编译速度的工具比如有一款名为speed的插件, 借助这个插件, 能够对每一个的执行耗时具体情形展开分析。优化编译速度该怎么做呢通过减少搜索依赖的时间配置、匹配规则test//, 来缩小搜索范围以减少搜索时间, 经减少解析转换的时间配置精准过滤不用解析的模块, 针对性能消耗大的开启多进程, 凭借减少构建输出的时间压缩代码并开启多进程, 合理运用缓存策略如babel-开启缓存、中间模块启用缓存比如使用。可参考的具体优化措施为: 性能优化的一段经历, 项目复盘, 针对具有难度的情况。体积优化检测包体积大小寻觅用于检测构建之后包体积大小的工具, 像是那种 -- 插件, 运用此插件去剖析打包所生成后的每个模块体积大小。优化体积该怎么做呢脱离第三方依靠, 清除没有用处的代码, Tree, 具体的优化办法参照: 性能优化的一回经历相关项目的复盘。概述它是一个模块打包器, 能够把小块代码编译为大块且复杂的代码, 以此用于例如某种程序或应用程序等情况。并且它针对代码模块能够运用新的标准化格式, 比方某些格式以及 es格式。原理我们先来了解下 原理其主要工作机制是使用 Acorn 读取解析文件来确定入口文件, 获取到抽象语法树 AST 后分析代码生成代码并输出, 相对来说, 打包出来的包会更轻量化些, 此包更适用于类库打包, 这是因为内置了 Tree 机制, 在分析代码阶段就能知道哪些文件引了却没调用, 那么在打包时就会自动把未使用的代码给擦掉。橡果是一种语法剖析器, 它把字符串剖析成语法抽象树即AST。要是想知晓AST语法树, 能够点击这个网址/。实践input入口处的文件路径, 输出的文件, 输出的格式当中包含着amd/es6/iife/umd/cjs, 启用等等。各种插件所使用的配置, 将外部依赖提取出去, 配置全局变量。下面呈现的是基础配置的简单示例:概述Vite, 相较于 、 等工具而言, 极大程度上改进了前端开发者的开发体验效果, 其编译速度极其之快。Vite原理是何种缘由致使Vite开发编译速度这般特别快, 我们即刻着手去探究一下它所蕴含的原理。从上述图片能够看出, Vite 的原理在于借助当下主流的浏览器对原生 ESM 规范予以支持, 协同地进行拦截操作, 并且将代码编译成能够被浏览器所支持的。Vite实践体验我们能够构建一个Hello World样式的Vite项目, 以此去体会那飞速的开发感受:留意一下, Vite 所需的 Node.js 版本, 要大于或等于 12.0.0这件事。使用 NPM:使用 Yarn:上图呈现的是, Vite工程项目 的编译用时, 为363毫秒, 有着开发时秒级编译的感受, 实际上真的是非常让人称赞的3种构建工具综合对比测试前端项目规模逐渐增大之际, 开发迭代维护所需的成本便会不断攀升, 数十个模块相互之间的调用状况呈现出繁复错乱的态势基于提升代码质量以及可维护性的考量, 编写测试之事成为必要之举。接下来便针对前端工程常常会开展的3类测试, 向大家进行详尽的介绍。单元测试单元测试, 乃是针对最小可加以测试的单元, 此单元通常为单个之函数、单个的类, 或是单个的组件, 要去开展检查以及验证。编写单元测试架构存在诸多, 像Mocha, 断言库Chai, Sinon, Jest等。我们能够率先挑选jest予以研习, 鉴于其整合了Mocha, chai, jsdom, sinon等效能。紧接着, 我们一同瞧瞧jest怎样去创作单元测试呢?撰写测试依据正确性来进行, 也就是讲正确的输入理应获得正常的结果。撰写测试是依照错误性来做的, 这意味着错误的输入应当呈现为错误的结果。以验证求和函数为例组件测试针对某个会涉及很多DOM操作从而增加难度的组件功能开展的组件测试, 对于此, 常借助能做组件测试、也能做e2e测试的测试框架来处理。那么, 这个组件测试究竟要怎么做呢?以 vue3 组件测试为例我们事先构建好 vue3 与 vite 的项目, 着手编写用于测试的组件, 接着安装环境于 / , 编写关于组件的测试脚本文件, 执行 open - ct 命令, 启动其服务, 运行 xx.spec.js 测试脚本, 这样就能直观地看到单个组件自行按照操作逻辑执行。e2e测试所谓的e2e测试, 换句话讲叫端到端测试, 主要的行为就是针对页面模拟用户去展开一系列操作, 进而得以验证其是不是符合预期。同样的, 我们也能够运用 来开展e2e测试, 那么具体该怎么去做呢。以 todo list 功能验证为例咱得先把 vue3 与 vite 项目搭建好, 去编写测试组件, 接着安装环境, 环境要安装在 / , 然后编写组件测试脚本文件, 编写完后执行 open 命令, 通过执行 open 命令来启动服务, 启动服务之后, 去选择 xx.spec.js 测试脚本, 如此一来就能直观地看到模拟用户的操作流程了。总结本文前言部分, 从六个方面, 即开发、构建、性能、测试、部署、规范, 较为周全详尽地对前端工程化的知识点予以了梳理, 对于正文, 其着重介绍的是前端工程化于实践项目里得以落地运用的核心技术点。期望这篇文章可以对那些正在进行前端工程化学习的小伙伴起到助力作用, 进而得以构建起完备的知识图谱。

相关新闻

php生成html代码 PHP一键生成HTML,服务器CPU狂降90%,这招太狠了

php生成html代码 PHP一键生成HTML,服务器CPU狂降90%,这招太狠了

知识获取的路径存在着许多种, 于课课家语言编程那儿的学习, 更是有着无穷无尽的乐趣, 此刻由小编来为大伙讲述有关语言编程的文章, 但愿对大伙能有所助益。最近研究了一些开发技术, 就其中的php实例教程而言, 发现PHP具备诸多独特的优秀功能, 这些功能是其他一些技术所没有的, …

2026/8/26 16:07:34 阅读更多 →
前端现在饱和了吗?

前端现在饱和了吗?

确实如此, 起初时日, 前端市场早早位于风口浪尖之处;然而直至如今, 众人对其已然习以为常。往前数两三年之际, 互联网经济霍然崛起, 热钱迅猛流入;处于这一时期, 人才属于稀缺性资源。因而在往昔几年当中, 但凡略微知晓些许前端的人均敢于涉足此领域谋求…

2026/8/25 14:46:26 阅读更多 →
deepseek-harness跨平台桌面端二开项目(五)从源码到一键安装包的可复现装配链,以及我如何证明它“没坏“

deepseek-harness跨平台桌面端二开项目(五)从源码到一键安装包的可复现装配链,以及我如何证明它“没坏“

(五)从源码到一键安装包的可复现装配链,以及我如何证明它"没坏"系列收官。一篇能落地的工程博客,最好停在"我把这套东西装成了一个可信、可复现的产物"上。这篇把前四篇里散落的"验证"串成一条主线…

2026/8/26 15:59:49 阅读更多 →

最新新闻

泰坦尼克乘客生存预测与风险决策建模

泰坦尼克乘客生存预测与风险决策建模

泰坦尼克号生存预测竞赛是Kaggle平台上一个标志性的入门级项目,长期作为初学者接触机器学习竞赛流程、理解结构化数据建模的起点。该任务要求基于乘客的舱位、性别、年龄等特征,预测其在沉船事件中的生存状态,本质是一个典型的二分类问题。竞赛数据集规模小、特征类型丰富,…

2026/8/26 16:54:00 阅读更多 →
手写数字识别如何支撑文档数字化应用

手写数字识别如何支撑文档数字化应用

在数据科学与机器学习的学习路径中,理论与实践的结合至关重要。Kaggle 竞赛平台提供了大量贴近真实业务场景的数据与问题,其中“Digit Recognizer”竞赛因其经典性与明确的入门定位,成为无数学习者踏入计算机视觉领域的第一步。该竞赛基于著名的 MNIST(Modified National I…

2026/8/26 16:54:00 阅读更多 →
企业知识库怎样支撑GEO内容生成:字段分层与事实锁设计

企业知识库怎样支撑GEO内容生成:字段分层与事实锁设计

企业知识库怎样支撑GEO内容生成:字段分层与事实锁设计 企业资料很多,不等于知识库可用。把公司介绍、产品手册、公众号旧文和销售话术全部扔进一个文件夹,搜索时可能找得到句子,生成内容时却容易把公司名、品牌名、产品名和能力边…

2026/8/26 16:54:00 阅读更多 →
【Tao Te Ching】Part 5

【Tao Te Ching】Part 5

《道德经》第五章:天地不仁,守中 从“天地不仁”和“橐籥中虚”出发,理解老子所说的自然运行与“守中”。 1. 原文与版本 本文以一种常见的通行本为主: 天地不仁,以万物为刍狗;圣人不仁,以百姓…

2026/8/26 16:54:00 阅读更多 →
bambustudio 选择底面 修复

bambustudio 选择底面 修复

目录 设置和选择设备: 自动修复结束: bambustudio 选择底面 1. 鼠标点击面 → 获取法向量 2. m_normal 的填充 3. 实际旋转执行 ← 核心 调用链总结 检测平面: 设置和选择设备: m_device_manager->set_selected_machin…

2026/8/26 16:53:59 阅读更多 →
多语言句子对推理驱动事实核查与内容审核

多语言句子对推理驱动事实核查与内容审核

自然语言推理是自然语言处理领域的一项核心任务,旨在判断两个句子之间的逻辑关系。Kaggle入门竞赛“Contradictory, My Dear Watson”提供了一个典型的多语言自然语言推理场景,要求参赛者对包含前提和假设的句子对进行分类,判断其关系属于“蕴含”、“中立”还是“矛盾”。该…

2026/8/26 16:52:57 阅读更多 →

日新闻

Python random 模块常用函数详解:从入门到实战

Python random 模块常用函数详解:从入门到实战

目录 1. 引言2. 准备工作3. 基础随机函数4. 序列相关函数5. 随机种子与复现6. 实战案例7. 注意事项8. 常见问题与排查9. 总结 1. 引言 摘要: 本文系统介绍 Python 标准库 random 模块中最常用的随机数生成函数。内容涵盖基础随机函数(random()、unifor…

2026/8/26 0:00:40 阅读更多 →
《Microsoft Sql server 2008 Internals》读书笔记--第三章Databases and Database Files(2)

《Microsoft Sql server 2008 Internals》读书笔记--第三章Databases and Database Files(2)

《Microsoft Sql server 2008 Internals》索引目录: 《Microsoft Sql server 2008 Internals》读书笔记--目录索引 在上篇文章中,主要介绍了创建数据库的基本语法和FileGroup的初步知识。需要注意的是: 关于FileGroup 如果你的系统是用Raid设备直接存…

2026/8/26 1:18:18 阅读更多 →
政务AI智能体怎么建?三种模式、三步路径与四个误区

政务AI智能体怎么建?三种模式、三步路径与四个误区

政务AI智能体已经从概念试点阶段,转入了政务服务的常态化落地应用;在实际使用过程中,它能自主理解办事需求、辅助完成填报申报、开展材料预审,并联动多个系统协同作业,真正嵌入到政务办理的全流程当中。但在落地推进过…

2026/8/26 1:18:18 阅读更多 →

周新闻

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/26 14:45:33 阅读更多 →
SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/25 3:38:18 阅读更多 →
Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/26 14:46:37 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/26 3:50:20 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/25 10:31:12 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/26 1:24:05 阅读更多 →