很多人第一次进前端项目,不是先被业务难住,而是先被仓库目录吓住。
明明 HTML 会写,CSS 会写,JavaScript 也会写,自己做个活动页、博客页、Todo 小练习都能跑。
结果一进公司项目,先看到的不是页面,而是这些:
package.jsonpnpm-lock.yamlvite.config.tstsconfig.json.env.developmentsrc/components.github/workflows
然后人会很自然地冒出一个念头:
我是不是其实不会前端。
如果你也有过这种感觉,先别急着怀疑自己。很多初级开发刚进项目时,那个懵都不是装的。因为你以前学的是“怎么把页面写出来”,项目现在考你的却是“怎么把页面稳定地交付出去”。
这中间,差的就是工程化。
如果你只想先记一句,我更愿意把它说成这样:
前端工程化,不是某个工具,也不只是打包。它是用一套工具、约定和流程,把前端项目从“能跑”变成“能长期协作、能稳定发布、能持续维护”。
说白了,工程化是在帮你管理复杂度,让你从“会写页面”慢慢过渡到“能接项目”。
你以前写的是页面。 工程化面对的是项目。
这篇我想把 4 件事尽量讲顺:
- 为什么会写页面,还是接不住真实项目。
- 工程化到底在解决哪些具体问题。
Vite、TypeScript、pnpm、Node.js、CI/CD分别管哪一段。- 如果你是初级前端,工程化更适合按什么顺序补。
先把断层看清楚:会写页面,为什么还是接不住项目
很多人的前端学习路线很像:
先学标签。 再学样式。 再学 DOM、事件、请求。 然后做几个 Demo。
这条路没问题,它本来就是前端入门该走的路。
但它更擅长教你做一个页面,不一定直接把你送进真实项目。
因为一个练手 Demo,往往长这样:
- 一个
index.html - 一个
style.css - 一个
main.js
它的复杂度很低。
你脑子里能装下整个项目。
可真实项目不是这样。
你不只是在写页面,你还得面对这些事:
- 十几个人一起改代码,怎么避免互相踩来踩去。
- 开发环境和生产环境接口地址不一样,怎么管理。
- 第三方依赖怎么装,版本怎么锁。
- 一个功能拆成几个模块,谁依赖谁,怎么追。
- 改一个公共组件,怎么知道别的页面会不会炸。
- 每次提代码,谁来检查格式、类型、测试和构建。
- 上线失败了,怎么回滚,怎么定位是哪一步出的问题。
这些问题,光靠 HTML + CSS + JavaScript 语法本身是兜不住的。
所以我一直觉得,前端工程化不是“前端进阶版语法”,它更像是项目开始变大以后,你迟早要补上的那一层现实能力。
如果没有工程化,一个项目会怎么失控
先别急着背工具。我们先看一个很常见的成长过程。
假设你一开始只做一个报名页。
文件可能只有这几个:
index.htmlstyle.cssmain.js
这时候很好写。
可一旦需求长起来,比如要加:
- 首页
- 报名页
- 结果页
- 登录状态
- 接口请求
- 埋点统计
- 多人一起开发
问题就会一股脑冒出来。
1. 代码开始互相污染
以前大家最常见的一种写法,就是在 HTML 里手动引脚本:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<title>报名页</title>
</head>
<body>
<script src="./js/request.js"></script>
<script src="./js/form.js"></script>
<script src="./js/report.js"></script>
</body>
</html>
刚开始问题不大。
可文件一多,你就会遇到这些场景:
form.js里写了一个submit(),report.js里也写了一个submit()。request.js必须先加载,不然别的文件会直接报错。- 你删掉一个文件,另外两个地方突然跟着坏。
- 样式全是全局的,
.button、.title、.active到处都能撞名。
这种项目最痛苦的地方不是“写不出来”,而是“越来越不敢改”。
2. 同样的东西开始反复复制
你写第二个页面时,会复制第一份请求逻辑。
写第三个页面时,又复制一份弹窗代码。
写第四个页面时,再复制一份表单校验。
一开始觉得没什么。
后来需求改了,原来 4 个地方都要改,而且你很容易漏掉 1 个。
这时候你就会发现,项目不是死在不会写,而是死在维护成本开始飙升。
3. 本地能跑,不代表别人电脑也能跑
你装了一个依赖,功能没问题。
同事拉代码后,报错了。
为什么?
可能是:
- 你的依赖版本和他的不一样。
- 你本地 Node 版本太新或太旧。
- 你电脑上偷偷留着一个本地配置文件。
- 你手动改过打包命令,但没同步到仓库里。
这类问题特别消耗新人。
因为它看起来不像代码 bug,像环境在闹脾气。
4. 项目一上线,问题才开始暴露
有些错误在开发时不明显:
- 某个路径大小写写错了,Mac 本地没事,CI 里直接挂。
- 开发环境接口可以跨域,生产环境不行。
- 本地图片没压缩,线上首屏资源太大。
- 某个
console.log无所谓,结果构建流程里触发了 lint 失败。
这就是为什么真实项目里,大家会越来越依赖工具链、规范和自动化流程。
不是因为工程师爱折腾。
是因为不用这套东西,项目规模稍微大一点就会乱。
前端工程化到底在“工程化”什么
如果只看一堆工具名,很容易越看越晕。
我更建议把它拆成 6 个你在项目里一定会碰到的环节。
1. 模块化:先把“谁依赖谁”讲清楚
模块化是前端工程化最基础的一层。
它解决的不是“语法更高级”,而是“代码关系终于能追了”。
比如你以前可能会这么写:
// price.js
function formatPrice(value) {
return '¥' + Number(value).toFixed(2);
}
// detail.js
console.log(formatPrice(99));
这个写法的问题是,detail.js 默认相信 formatPrice 已经在全局里了。
但它到底来自哪个文件,什么时候加载进来的,并不清楚。
换成模块化写法以后:
// utils/price.js
export function formatPrice(value) {
return `¥${Number(value).toFixed(2)}`;
}
// pages/detail.js
import { formatPrice } from '../utils/price.js';
console.log(formatPrice(99));
这个时候,关系就清楚了。
detail.js依赖price.jsprice.js暴露了formatPrice- 你删掉或改名时,工具能更早发现问题
CSS 其实也一样。
如果所有样式都往全局里扔,团队协作时特别容易撞:
.button {
background: #1677ff;
}
另一个人也写了一个 .button:
.button {
background: #222;
}
谁生效,取决于加载顺序。
这就是为什么现在大家会用组件化、CSS Modules、scoped、Tailwind 这类方案来减少样式互相污染。
2. 包管理:不是“装包”,是把依赖管理起来
前端工程化第二层,是包管理。
也就是 npm、pnpm、yarn、bun 这一类工具在做的事。
很多初学者第一次看到 package.json,只会把它理解成依赖列表。其实它更像项目说明书。
里面通常至少会有这些内容:
- 项目依赖
- 启动命令
- 构建命令
- 测试命令
- lint 命令
- Node 或包管理器约束
比如一个很常见的 scripts 片段可能长这样:
{
"scripts": {
"dev": "vite",
"build": "tsc -b && vite build",
"preview": "vite preview",
"lint": "eslint .",
"test": "vitest run"
}
}
这几个命令本身,就是工程化的一部分。
它告诉整个团队:
- 本地开发怎么启动
- 上线前怎么构建
- 代码质量怎么检查
- 测试怎么执行
另外一个经常被忽略的东西是 lockfile,比如:
package-lock.jsonpnpm-lock.yamlyarn.lock
它存在的意义不是“多一个文件”。
而是尽量让你、同事、CI、线上构建机拿到同一棵依赖树。
不然最经典的一句就会出现:
“我这里没问题啊。”
3. 构建:把你写得舒服的代码,转成浏览器吃得下的代码
很多新人第一次学工程化,最困惑的一句就是:
“以前我双击 index.html 就能跑,为什么现在还要 pnpm build?”
这个问题很正常。
因为浏览器最后真正能直接理解的,还是:
HTMLCSSJavaScript
但现代项目里,你写的往往不是最原始的那一层。
你可能会写:
- TypeScript
- Sass / Less
- JSX / TSX
- Vue 单文件组件
- 路径别名
- 动态导入
- 图片字体等静态资源引用
这些东西写起来更舒服,组织起来也更现代,但浏览器不能全部直接吃。
所以中间必须有一层构建流程,帮你把源码转成可部署产物。
构建通常会顺手做很多事:
- 语法转换
- 资源压缩
- 代码拆包
- 指纹文件名生成
- 无用代码剔除
- 环境变量注入
你可以把构建理解成一条“翻译 + 打包 + 收拾行李”的流水线。
4. 环境管理:别把接口地址写死在代码里
很多小白第一次接项目时,最容易忽略的一层就是环境管理。
举个很常见的例子。
开发环境接口可能是:
https://dev-api.example.com
生产环境接口可能是:
https://api.example.com
如果你把地址直接写进业务代码里:
fetch('https://dev-api.example.com/users');
那上线时就很容易出事。
所以现代项目通常会把配置抽出去:
# .env.development
VITE_API_BASE_URL=https://dev-api.example.com
# .env.production
VITE_API_BASE_URL=https://api.example.com
业务代码里只认配置:
fetch(`${import.meta.env.VITE_API_BASE_URL}/users`);
这样你切环境时,代码不用跟着乱改。
工程化很大一部分价值,其实就是把这种“原本容易靠人脑记住的事”,改成“交给配置和流程保证”。
5. 代码规范和质量闸门:尽量把低级问题挡在提交前
前端工程化还有一个特别实际的作用,就是把问题往前拦。
越早发现,越便宜。
这一层最常见的是:
- TypeScript
- ESLint
- Prettier
- Git Hooks
比如 TypeScript 的价值,不只是“多写几行类型”。
它经常能在你运行前就把问题揪出来:
type User = {
id: number;
name: string;
};
const user: User = {
id: 1,
username: 'hugo',
};
这个对象一看就不对。
如果只是普通 JavaScript,你可能要等到页面逻辑跑起来、某个组件真去读 user.name 的时候才发现问题。
有了类型检查,很多错误会提前暴露。
ESLint 和 Prettier 也是一样。
它们看着像在管格式,实际是在减少团队里那些没意义的争论和重复劳动。
比如:
- 分号到底加不加
- 单引号还是双引号
- 未使用变量该不该留
- Promise 忘了处理错误要不要拦
这些事你完全可以交给工具。
Git Hooks 再往前一步,它会在你提交代码之前先跑一轮检查。
这样很多问题不是等进仓库以后才被同事指出,而是你本地就先知道了。
6. 测试、CI/CD 和发布:让项目不靠“熟人经验”发版
工程化走到后面,重点已经不只是开发体验了,而是交付。
一个成熟点的前端项目,通常会接上这些环节:
- 单元测试
- 组件测试或页面测试
- E2E 测试
- 持续集成
- 持续部署
比如你提交一个 PR,流水线自动做这些事:
- 安装依赖
- 跑类型检查
- 跑 lint
- 跑测试
- 尝试构建
只要有一步不过,就不让合并。
这不是形式主义。
它是在尽量减少“人肉漏看”的概率。
你看到 .github/workflows/ci.yml、gitlab-ci.yml、Docker 构建配置这些文件时,不用把它们想得太神秘。
它们本质上是在描述一条可重复执行的交付流程。
把这些东西放回一个真实项目里,你会看到什么
很多新人怕工程化,不是怕概念,而是怕“看不见实物”。
那我们把它放回一个常见的项目目录里看一下:
my-app/
public/
src/
api/
assets/
components/
pages/
router/
stores/
utils/
.env.development
.env.production
.gitignore
package.json
pnpm-lock.yaml
tsconfig.json
vite.config.ts
.github/workflows/ci.yml
这个目录里,每个文件其实都在工程化链路里占一个位置。
src/是业务代码真正长期演化的地方。components/放可复用组件。pages/或views/放页面级模块。api/收接口请求,避免每个页面自己乱写一遍。.env.*管环境差异。package.json定义依赖和命令。pnpm-lock.yaml锁依赖版本。tsconfig.json决定 TypeScript 怎么检查和编译。vite.config.ts决定开发服务器、路径别名、插件、构建行为。.github/workflows/ci.yml把检查和发布自动化。
你第一次看到这些文件时容易慌,是因为它们大部分都不是页面代码。
但你真把项目跑通一遍以后,就会发现它们其实都在回答同一件事:
这个项目怎么被开发、怎么被检查、怎么被打包、怎么被发布。
为什么你现在更容易在项目里看到 Vite、TypeScript、pnpm
这里我想顺手把一些容易过时的认知替换一下。
1. 工程化已经不再等于“学 webpack 配置”
以前很多教程讲前端工程化,默认主角就是 webpack。
这当然有历史原因。它影响大、生态深,很多老项目到今天还在用。
但如果你是 2026 年才入门前端,第一站大概率已经不是“从零手配 webpack”了。
现在更常见的入口是:
Vitecreate-vuecreate-next-appNuxt- 各类框架自己的官方脚手架
Vite 官方自己就写得很直白,它最初就是冲着解决大型前端项目开发启动慢、热更新慢这些问题去的。对新人来说,它的价值不只是“快”,而是你能更快把开发、构建、插件、环境变量这些链路串起来看。
所以我真不建议小白一上来就死磕各种旧版打包配置。
先把现代项目的整体工作流看懂,更重要。
2. Vue 官方推荐的是 create-vue,Vue CLI 早就是维护模式
这一点原来很多旧文章都没更新。
截至 2026 年 4 月,Vue 官方在 Tooling 文档里仍然推荐用 create-vue 创建项目,Vue CLI 官方文档也明确标着 maintenance mode。
这意味着如果你今天还在按很多老教程学“先装 Vue CLI,再围着它理解前端工程化”,你的起手环境已经偏旧了。
它不是完全不能用。
但它不太代表今天主流新项目的起手方式了。
3. React 官方的新手入口,也不再围着 CRA 转
这点也很容易被旧教程带偏。
React 官方现在更推荐两条路:
- 直接使用框架
- 如果从零搭,选现代构建工具
官方文档在“Start a New React Project”和“Building a React App from Scratch”里,已经把框架放在更靠前的位置;如果你不想一上来就上全套框架,也可以用 Vite、Parcel、Rsbuild 这一类工具从头搭。
换句话说,今天学 React 工程化,重点也不是先把 CRA 的历史包袱背一遍。
重点还是理解项目为什么要有这些层。
4. pnpm 变常见,不是因为它“高级”,是因为它更适合多人项目
很多新人第一次进仓库,看到 pnpm-lock.yaml 也会愣一下。
其实不用神化它。
它只是现代项目里一个很常见的包管理选择,尤其在 monorepo、多人协作和依赖管理要求更严格的场景里更常见。
你先知道它在干嘛就行:
- 装依赖
- 跑脚本
- 锁版本
- 帮项目在不同机器上尽量拿到一致结果
够用了。
Vue、React、Next、Nuxt 和工程化到底是什么关系
很多新人会把工程化和某个框架绑死。
比如:
- 学 Vue 就是在学工程化
- 学 React 就是在学工程化
- 学了 Next 才算懂工程化
其实都不对。
更准确的说法应该是:
框架是你承载工程化的载体,工程化本身不等于任何一个框架。
Vue、React 让你更容易进入组件化、模块化、路由管理、状态管理这些问题。
Next、Nuxt 则把工程化再往前推一层,让你开始接触:
- 文件路由
- 服务端渲染
- 静态生成
- 按路由拆分渲染策略
- 服务端能力和前端工程的结合
所以如果你今天在用 Vue + Vite,你是在学工程化。
如果你今天在用 React + Vite + TypeScript,你也是在学工程化。
如果你继续往 Next、Nuxt、Astro 这种方向走,本质上是在工程化这条线上再往前迈一步。
一堆缩写最容易把人劝退,别背,先问它解决什么问题
工程化往后走,经常会碰到这些缩写:
MPASPACSRSSRSSGISR
第一次看真的很容易头大。
我更建议你把它们拆成两个问题。
第一个问题:页面是怎么切换的
这里主要看的是 MPA 和 SPA。
MPA 是多页面应用。
你点一个链接,浏览器就去拿一份新的 HTML,整个页面重新加载。
它的特点是:
- 页面边界清楚
- SEO 处理天然更直接
- 更像传统网站
SPA 是单页面应用。
表面上有很多页面,但底层通常是一个前端壳子 + 路由切换 + 数据请求。
它的特点是:
- 交互更顺
- 页面切换更像 App
- 前后端分离更自然
后台管理系统、内部平台,很多时候就很适合 SPA + CSR 这套。
第二个问题:内容是谁在什么时候生成的
这里主要看的是 CSR、SSR、SSG、ISR。
CSR 是客户端渲染。
浏览器先拿到一个壳,然后再跑 JavaScript 请求数据、拼页面。
适合:
- 登录后的后台系统
- SEO 要求不高的业务后台
- 高交互页面
SSR 是服务端渲染。
用户请求页面时,服务端先把 HTML 拼出来再返回。
适合:
- 首屏体验敏感的页面
- 搜索内容比较重要的页面
- 需要更快看到核心内容的场景
SSG 是静态生成。
页面在构建阶段就生成好了,请求来了直接返回静态结果。
适合:
- 博客
- 文档站
- 官网
- 活动落地页
ISR 可以先粗理解成“静态生成 + 增量更新”。
它不是初学者第一阶段最该死磕的东西,但你知道它在解决“静态页面怎么按需要重新生成”就够了。
今天更真实的情况是,很多现代框架根本不是单选题。
一个项目里很可能同时存在:
- 首页用静态生成
- 文章详情页按需更新
- 控制台页面走客户端渲染
- 某些组件在服务端先出壳
所以重点不再是背缩写。
重点是知道每种方案在换什么收益、付什么成本。
Node.js 为什么会变成前端工程化的底座
很多新人第一次接触 Node.js,都会问一句:
“我不是做前端吗,为什么还得学 Node?”
因为现代前端项目里,那些你看起来像“命令”的东西,背后大多都是 Node 程序。
比如:
- 包管理工具
- Vite 开发服务器
- 构建脚本
- lint
- 测试
- 本地代理
- SSR 服务
它们都不是在浏览器里跑的。
先把 Runtime 这个词想明白
代码在哪个环境执行,哪个环境就是它的 runtime。
以前你最熟的是浏览器 runtime。
里面有:
windowdocument- DOM
- 事件系统
Node.js 则是另一个 JavaScript runtime。
它没有浏览器页面,但它能做很多浏览器做不到的事:
- 读写文件
- 启动服务
- 处理命令行参数
- 跑脚本
- 管理进程
这就是为什么它会成为工程化底座。
对前端来说,Node 学到什么程度才够用
第一阶段真的不用把自己学成后端。
更实际的目标是:
- 看懂
package.json里的 scripts - 知道
process.env、fs、path在解决什么问题 - 看懂
vite.config.ts这种 Node 侧配置文件 - 会写一点简单脚本
- 知道本地代理、Mock、SSR 服务为什么能跑起来
学到这里,你再看前端项目,视角会完全不一样。
你会意识到,项目不只有浏览器这一层,后面还站着一层工具运行时。
旧教程里的 Node 版本,也要学会筛一下
这也是一个很现实的过时点。
截至 2026 年 4 月,Node 官方 releases 页面显示:
v24是 Active LTSv22、v20是 Maintenance LTSv18已经结束支持
所以如果你今天还跟着一些旧教程装已经 EOL 的版本,再拿来跑新工具链,踩坑概率会明显变高。
一个更稳的习惯是:
生产环境优先跟官方 LTS 走,本地开发也尽量别脱节太远。
一个现代前端项目,从拉代码到上线,大概会经历什么
很多人对工程化的抽象感,其实来自“只见名词,不见流程”。
那我把它换成一条更像真实工作的线。
1. 拉代码
你从 Git 仓库拉下来的,不只是页面源码。
你还会一起拿到:
- 依赖声明
- 配置文件
- 环境模板
- lint 规则
- 测试脚本
- CI 配置
2. 安装依赖
比如:
pnpm install
这一步不是走形式。
它是在按仓库里定义好的版本关系,把项目需要的依赖拉到本地。
3. 启动开发环境
比如:
pnpm dev
这时候开发服务器启动,页面跑起来,热更新生效,环境变量注入,本地代理开始接管接口转发。
你这时看到的,已经不是“直接打开 HTML 文件”那种前端了。
4. 写功能
你开始改组件、接接口、拆模块、写页面。
这时候工程化其实一直在旁边工作:
- TypeScript 帮你盯类型
- ESLint 帮你盯规则
- Prettier 帮你统一格式
- Git Hooks 帮你在提交前做第一轮拦截
5. 自测和本地检查
常见会跑这些命令:
pnpm lint
pnpm test
pnpm build
你会发现,一个更成熟的项目不太接受“我点了两下,好像没问题”这种自信。
它希望你在提交前,至少过几轮自动检查。
6. 提交 PR,交给 CI 再跑一遍
你本地过了,不代表流程结束。
CI 往往还会在干净环境里重新跑一遍安装、检查、测试、构建。
它的意义是避免:
- 你本地偷偷有缓存
- 你电脑环境特殊
- 某些依赖在别的机器上装不起来
7. 构建产物并部署
最后才是发布。
这一步可能是:
- 打成静态资源上传 CDN
- 构建镜像后交给容器平台
- 部署到云函数或 Node 服务
- 走完整的自动发布流水线
你把这 7 步连起来看,前端工程化就不抽象了。
它其实就是把“开发一个项目直到上线”这条路标准化。
如果你是初级前端,更建议这样学工程化
我不建议你一上来就变成“工具收集癖”。
也不建议你先把一堆缩写背熟再说。
更稳的一条路线,我觉得是这样。
第一步,基础别跳
先把这些东西真正写顺:
- HTML 语义化
- CSS 布局和响应式
- JavaScript 基础语法
- DOM、事件、异步请求
这一步土,但特别重要。
后面工程化再复杂,最终落到页面上还是这些基础能力。
第二步,把模块化补扎实
重点搞懂:
import / export- 默认导出和具名导出
- 模块作用域
- 路径引用
你后面能不能看懂真实项目结构,很大程度上就靠这一步。
第三步,用 Vite 起一个真正的小项目
不要停留在手写 index.html。
你至少要自己走一遍这些动作:
- 创建项目
- 跑开发服务器
- 新建组件
- 引图片和样式
- 配环境变量
- 执行构建
- 预览构建结果
只要你完整跑过一次,很多抽象词会立刻落地。
第四步,尽早补 TypeScript
别总想着“以后进项目再学”。
因为现在很多项目从第一天起就是 TypeScript。
你越晚补,越容易在真实项目里边做需求边补课,压力会更大。
第五步,选一个主框架做完整项目
Vue 可以。
React 也可以。
关键不是选谁,关键是你要通过一个真实项目把这些东西串起来:
- 组件化
- 路由
- 状态管理
- 接口请求
- 目录组织
- 构建和发布
第六步,再去理解 Next、Nuxt、SSR、SSG
到这一步你再去看渲染模式、全栈框架、服务端能力,会舒服很多。
因为你已经知道它们不是在凭空增加名词,而是在解决真实业务问题。
初学者最容易踩的 4 个误区
误区 1:工程化就是学一堆工具
不是。
工具只是手段。
你真正要理解的是:
- 这个工具在解决什么问题
- 它替团队省掉了哪一步
- 不用它会在哪个规模上开始痛
误区 2:小项目完全不需要工程化
也别走到另一个极端。
一个 1 页静态页面,确实没必要把链路拉满。
但只要项目开始具备下面任意两条,工程化价值就会迅速上升:
- 不止一个页面
- 不止一个人维护
- 需要长期改
- 依赖第三方包
- 要区分环境
- 需要稳定上线
误区 3:先学 webpack 才算入门工程化
今天不一定。
理解 webpack 依然有价值,尤其是维护老项目时。
但对大多数新人来说,先从 Vite 或官方框架把现代工作流走通,收益更高。
误区 4:我都学了 Vue/React,为什么还是看不懂项目
因为你缺的可能不是框架语法,而是这几层:
- 包管理
- 环境管理
- 构建流程
- Node runtime
- 测试和 CI
这也是为什么很多人刷完框架课程,进仓库还是会慌。
问题不一定出在组件不会写,而是项目链路没补齐。
最后一句
我现在越来越觉得,“前端工程化”最容易把新人吓住的地方,是它听起来像一门专门研究配置文件的课。
其实不是。
它真正想解决的,是一件很朴素的事:
怎么把一个会写页面的人,慢慢变成一个能接项目、能协作、能交付的人。
所以你第一次看不懂 vite.config.ts、tsconfig.json、CI workflow,真的很正常。
那不是你不会前端。
那只是你开始碰到“页面之外的前端”了。
如果你现在正卡在这个阶段,我更建议你别一口气把所有概念全吃下去。
拿一个小项目,顺着这条线走一遍:
创建项目 -> 跑开发环境 -> 写组件 -> 配环境变量 -> 执行构建 -> 提交到仓库 -> 看 CI
你走通一次,很多词就不会再只是词了。
如果你愿意,下一篇最值得继续拆的,其实就是这几个文件:
package.jsonvite.config.tstsconfig.json.env
因为很多初级前端真正怕的,不是“工程化”这 3 个字,而是打开这些文件以后,不知道自己到底在看什么。
如果你现在就卡在这个阶段,也可以先记一个最小动作:别问“我要不要把工程化全学完”,先问“我现在最怕打开哪个文件”。
很多人的突破点,不是某天突然全懂了,而是先把 package.json、vite.config.ts、tsconfig.json 这种具体文件一个一个看顺。