下载工作台
前端框架精通

脚手架搭建:Vite 创建 Vue/React 项目

试读上半部分 · 解锁后可读全文

第 2 章 · 脚手架搭建:Vite 创建 Vue/React 项目

本章目标:理解脚手架是什么、为何选用 Vite 而非 Vue CLI / CRA;能手把手执行 npm create vite@latest每一步交互选项;创建 academy-demo-vueacademy-demo-react;读懂 package.jsonvite.config.js;掌握 install / dev / build / preview 全流程;配置 .envdev server 代理贤紫 API;安装 vue-router、pinia、react-router-dom;能根据终端输出判断「首次运行成功」;独立完成 vanilla-ts 练习项目。

学时建议:3~4 小时(含 90 分钟跟练)

前置:完成 ch01(Node、npm 镜像、Git、工作区目录 frontend-framework-lab 已就绪)。


2.1 什么是脚手架?为何不用 Vue CLI / CRA

脚手架(Scaffold) = 官方或社区提供的项目生成器:一条命令生成标准目录、package.json、构建配置、示例页面,让你从「空白文件夹」直接进入「可 npm run dev」状态。

没有脚手架的时代                有 Vite 脚手架
  手写 index.html                  npm create vite
  手写 webpack 配置        →       选 vue / react
  配 babel、热更新                 npm install && npm run dev
  (半天~数天)                   (约 5 分钟)
工具状态(2025)说明
Vite✅ 主流首选极速冷启动、ESM 原生、Vue/React 官方推荐
Vue CLI⚠️ 维护模式基于 Webpack,新项目不推荐
Create React App (CRA)❌ 已过时React 官方已不建议新项目使用
Next.js / Nuxt进阶全栈 SSR,本模块 ch03 起先学 SPA
行业案例 · 贤紫优选商城:2024 年起新后台与学院 academy-demo 统一 Vite 5 + Vue 3;老 Webpack 项目仅维护不新建。

2.2 npm create vite@latest 交互式全流程

2.2.1 命令形式说明

# 非交互:直接指定项目名与模板(学院跟练推荐)
npm create vite@latest <项目名> -- --template <模板>

# 交互:逐步问答(理解选项时用)
npm create vite@latest

npm create vite@latest 等价于 npx create-vite@latest,会临时下载最新 create-vite 包并执行。

2.2.2 文字版模拟对话(交互模式)

下面是一次完整交互的文字截图,你在终端里会看到类似内容(版本号可能更新):

$ npm create vite@latest

│
◇  Project name:
│  academy-demo-vue
│
◇  Select a framework:
│  ● Vue
│  ○ React
│  ○ …(其他框架略)
│
◇  Select a variant:
│  ● TypeScript
│  ○ JavaScript
│  ○ Official Vue Starter ↗
│  ○ ROLLDOWN-VITE ↗
│
◇  Scaffolding project in .../academy-demo-vue...
│
◇  Done. Now run:

  cd academy-demo-vue
  npm install
  npm run dev
提示项含义学院建议
Project name文件夹名academy-demo-vue / academy-demo-react
framework框架Vue 或 React
variant语言先选 JavaScript(ch03~ch07 再引入 TS);练习可用 TypeScript
提示:非交互命令末尾的 -- 表示把后面参数传给 create-vite,避免 npm 吞掉 --template

2.3 创建 academy-demo-vue(完整命令序列)

在 ch01 工作区 frontend-framework-lab 中执行(路径按机器调整):

cd D:\dev\xianzi-academy\frontend-framework-lab

# 1. 生成 Vue + JavaScript 模板
npm create vite@latest academy-demo-vue -- --template vue

# 2. 进入项目
cd academy-demo-vue

# 3. 安装依赖(首次较慢,请耐心等待)
npm install

# 4. 启动开发服务器
npm run dev

成功后终端应出现(截图级描述)

  VITE v5.4.11  ready in 382 ms

  ➜  Local:   http://localhost:5173/
  ➜  Network: http://192.168.1.105:5173/
  ➜  press h + enter to show help

浏览器打开 http://localhost:5173/,应看到:

  • 页面中央 Vite + Vue Logo(Vue 绿色与 Vite 闪电)
  • 标题区有 「Vite + Vue」 文案
  • 一个计数按钮 count is 0,点击数字递增
  • 底部链接 「Edit components/HelloWorld.vue to test HMR」

保持 npm run dev 运行,修改 src/components/HelloWorld.vue 中任意文字,浏览器无需刷新即更新 — 此为 HMR(热模块替换)

Ctrl + C 停止 dev server。


2.4 创建 academy-demo-react(完整命令序列)

回到 frontend-framework-lab 同级目录:

cd D:\dev\xianzi-academy\frontend-framework-lab

npm create vite@latest academy-demo-react -- --template react

cd academy-demo-react
npm install
npm run dev

浏览器 http://localhost:5173/ 应看到:

  • Vite + React Logo(React 蓝色原子图标)
  • 标题 「Vite + React」
  • 计数器按钮 count is 0
  • 提示编辑 src/App.jsx 测试 HMR
项目入口组件模板后缀
academy-demo-vuesrc/App.vue.vue 单文件组件
academy-demo-reactsrc/App.jsx.jsx

两个项目不要同时占用 5173:先 Ctrl+C 停一个,或见 2.11 节改端口。


2.5 package.json 每个字段详解

academy-demo-vue 为例(React 项目结构类似,依赖名不同):

{
  "name": "academy-demo-vue",
  "private": true,
  "version": "0.0.0",
  "type": "module",
  "scripts": {
    "dev": "vite",
    "build": "vite build",
    "preview": "vite preview"
  },
  "dependencies": {
    "vue": "^3.5.13"
  },
  "devDependencies": {
    "@vitejs/plugin-vue": "^5.2.1",
    "vite": "^6.0.3"
  }
}
字段含义说明
namenpm 包名小写、连字符;发布到 npm 时才严格要求唯一
private是否私有true 防止误 npm publish
version语义化版本学院 demo 保持 0.0.0 即可
type: "module"模块系统项目内 .js 默认按 ESM 解析,import/export
scripts.dev开发命令启动 Vite dev server + HMR
scripts.build生产构建输出到 dist/,压缩、Tree Shaking
scripts.preview本地预览构建结果模拟生产环境静态服务
dependencies运行时依赖打进最终 bundle,如 vuereact
devDependencies开发时依赖仅构建/开发用,如 vite、插件
^ 版本号兼容范围^3.5.13 允许 3.x 最新,不升到 4.x

2.6 vite.config.js 逐行解释

academy-demo-vue 根目录创建或编辑 vite.config.js(若生成的是 .ts 可改为 .js 便于初学):

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'

// https://vitejs.dev/config/
export default defineConfig({
  // 插件:让 Vite 能编译 .vue 文件
  plugins: [vue()],

  // 开发服务器配置
  server: {
    port: 5173,           // 本地端口,被占用时可改 5174
    open: true,           // 启动时自动打开浏览器(可选)
    host: true,           // 允许局域网访问(手机真机调试)

    // 代理:把浏览器请求 /api 转发到贤紫 Django 后端,解决开发环境跨域
    proxy: {
      '/api': {
        target: 'http://localhost:8000',  // 贤紫本地 API 根地址
        changeOrigin: true,               // 修改请求头 Host,避免后端校验失败
        // rewrite: (path) => path.replace(/^\/api/, '/api/v1'),  // 按实际路径调整
      },
    },

以下内容需解锁后阅读

试读已结束。解锁本章 ¥5.00,或开通年度会员畅读全部教程。
年度会员 ¥199.00/年; 小紫 AI 工作台有效会员 ¥99.00/年

正文仅在服务端鉴权后下发,未付费无法获取下半部分内容。