当前位置: 首页 > news >正文

Vue 项目中运行 `npm run dev` 时发生的过程

步骤1:找到「任务说明书」(package.json)

当你输入 npm run dev,系统首先会去查项目的 「任务说明书」(即 package.json 文件),看看 dev 这个任务具体要做什么。

示例代码(package.json 片段)
{"scripts": {"dev": "vue-cli-service serve"}
}

解释
这里的 "dev": "vue-cli-service serve" 就像说明书上写着:“当执行 dev 任务时,请启动 Vue 的开发服务器”。


步骤2:启动「代码加工厂」(开发服务器)

系统会运行 vue-cli-service serve,启动一个本地开发服务器。这个服务器相当于一个「实时加工厂」,负责两件事:

  1. 编译代码:把你的 Vue 代码(如 .vue 文件)加工成浏览器能看懂的 HTML/CSS/JS。
  2. 实时监听:当你修改代码时,自动重新加工并刷新页面。
比喻

就像你写作业(写代码),旁边有一个「智能助手」(开发服务器),你一写完他就帮你检查错误、翻译成老师能看懂的语言(浏览器能运行的代码),并且你一改作业,他立刻更新。


步骤3:「加工厂」流水线操作

开发服务器内部会按顺序做以下事情:

  1. 读取配置:检查 vue.config.js(如果有),确认加工规则(比如用什么工具编译 CSS)。
  2. 处理依赖:把 import 的组件、第三方库(如 vue-router)全部打包到一起。
  3. 编译代码
    • .vue 文件拆解成 HTML/JS/CSS。
    • 用 Babel 把 ES6+ 代码转成旧版浏览器能运行的 JS。
    • 处理 Sass/Less 等 CSS 预处理器。
  4. 启动服务器:默认在 http://localhost:8080 运行,自动打开浏览器。
示例终端输出
 DONE  Compiled successfully in 2156msApp running at:- Local:   http://localhost:8080/- Network: http://192.168.1.5:8080/

步骤4:开启「热更新」模式

当你修改代码并保存时,开发服务器会:

  1. 局部更新:只重新编译修改的文件(而不是整个项目)。
  2. 无刷新替换:通过「热模块替换(HMR)」,在不刷新页面的情况下,替换修改的代码部分。
比喻

就像修车时,只更换坏掉的零件(修改的代码),而不是把整辆车拆了重装。


完整示例流程

1. 项目结构
my-vue-project/├── src/│   ├── App.vue│   └── main.js├── package.json└── vue.config.js
2. 运行命令
cd my-vue-project
npm install   # 先安装依赖(如果还没装)
npm run dev  # 启动开发服务器
3. 结果
  • 浏览器自动打开 http://localhost:8080,显示你的 Vue 应用。
  • 修改 App.vue 中的文字并保存 → 页面自动更新,无需手动刷新。

常见问题处理

问题1:端口被占用?

解决方法:修改启动端口

// package.json
"scripts": {"dev": "vue-cli-service serve --port 3000"
}
问题2:编译报错?

示例:如果你在代码中写了语法错误(比如漏了逗号):

ERROR  Failed to compile with 1 errorModule Error: Missing comma in object literal.

解决方法:根据提示修正代码,保存后会自动重新编译。


总结

  • npm run dev = 启动「代码加工厂」+ 实时监控修改。
  • 核心功能:编译代码、本地服务器、热更新。
  • 开发体验:写代码 → 保存 → 立即看效果,高效无痛! 🚀

相关文章:

  • 【优选算法 | 前缀和】前缀和算法:高效解决区间求和问题的关键
  • VR汽车线束:汽车制造的新变革
  • 改进系列(10):基于SwinTransformer+CBAM+多尺度特征融合+FocalLoss改进:自动驾驶地面路况识别
  • 【Bootstrap V4系列】学习入门教程之 加载必要文件和入门模板
  • IDEA git配置[通俗易懂]
  • 网络原理 - 12(HTTP/HTTPS - 3 - 响应)
  • Spring Boot 中 `@EnableConfigurationProperties` 注解
  • 【c++】【STL】list详解
  • python-docx清空段落样式的方法有哪些
  • Java学习手册:Spring 中常用的注解
  • 全面解析SimHash算法:原理、对比与Spring Boot实践指南
  • 决策树在电信客户流失分析中的实战应用
  • 基于C++的IOT网关和平台5:github项目ctGateway开发指南
  • 「动态规划」线性DP:最长上升子序列(LIS)|编辑距离 / LeetCode 300|72(C++)
  • 景联文科技牵头起草的《信息技术 可扩展的生物特征识别数据交换格式 第4部分:指纹图像数据》国家标准正式发布
  • LeetCode路径总和系列问题解析:I、II、III的解决方案与优化
  • LeetCode392_判断子序列
  • 2025,运维人,如何构建智能运维的知识图谱?!
  • ros2_topic_hz_命令实现_实时统计频率不准问题
  • 宇树科技开启“人形机器人格斗盛宴”
  • 澎湃读报丨央媒头版集中刊发社论,庆祝“五一”国际劳动节
  • 华夏幸福:去年营业收入237.65亿元,同比减亏12亿元
  • 如何反击右翼思潮、弥合社会分裂:加拿大大选镜鉴
  • 今年一季度全国城镇新增就业308万人,就业形势保持总体稳定
  • 在循环往复的拍摄中,重新发现世界
  • 流浪猫给车主造成困扰,长春一小区拟投药应对?律师:此举欠妥