认识 React、TypeScript、Vite
·
从 0 认识 React、TypeScript、Vite(基于“鲜果优选”项目)
面向前端新手的一份实战型入门笔记:它们分别是什么、解决什么问题、如何在本项目中落地,以及下一步学习建议。
一、快速概览
- React:用于构建用户界面的库。把页面拆成“组件”,声明式描述 UI,组合复用灵活。
- TypeScript:给 JavaScript 加上“类型系统”。更好地提示/检查,减少低级错误,便于重构与协作。
- Vite:新一代前端开发/构建工具。开发期启动和热更新极快;生产期负责打包优化。
这三者常被组合使用:React 负责“怎么写页面”,TypeScript 负责“写得更稳更可维护”,Vite 负责“本地开发体验和上线构建”。
二、React 是什么?
- 核心理念:组件化 + 声明式 UI。
- 组件是一个函数,输入 props(属性)与 state(状态),输出视图(JSX)。
- 通过组合组件构建复杂界面。
- 生态:React Router(路由)、状态管理、UI 库(Radix/shadcn)、数据获取(React Query)等。
- 你项目中的位置:
- 入口装配:
src/App.tsx、src/main.tsx - 页面与路由:
src/pages/Index.tsx、src/pages/NotFound.tsx - 业务组件:
src/components/下的Header.tsx、HeroSection.tsx、ProductGrid.tsx、FruitCard.tsx、CartDrawer.tsx
- 入口装配:
示例(最小组件):
function Hello({ name }: { name: string }) {
return <h1 className="text-xl">Hi, {name}</h1>
}
在本项目中,Index.tsx 将多个组件组合成首页:
// src/pages/Index.tsx(节选)
import { Header } from "@/components/Header";
import { HeroSection } from "@/components/HeroSection";
import { ProductGrid } from "@/components/ProductGrid";
export default function Index() {
return (
<div className="min-h-screen bg-background">
<Header />
<main>
<HeroSection />
<ProductGrid />
</main>
</div>
);
}
三、TypeScript 是什么?
- 给 JS 加类型:让编辑器在“写代码时”就能提示错误与类型信息(而不是运行后才报错)。
- 好处:
- 自文档化(类型即文档)
- 重构安全(改动时更有把握)
- 团队协作更顺畅(接口清晰)
- 最终会被编译为普通 JavaScript 供浏览器执行。
- 你项目中的位置:
- 所有
.ts、.tsx文件都在使用 TS。 - 配置:
tsconfig.json、tsconfig.app.json
- 所有
示例(为数据和函数声明类型):
type Product = { id: string; name: string; price: number }
function getTotal(list: Product[]) {
return list.reduce((sum, p) => sum + p.price, 0)
}
在 src/components/FruitCard.tsx 等组件中,常见做法是为 props 定义类型、为回调入参/返回值标注类型,避免误用。
四、Vite 是什么?
- 开发期:
- 本地服务器 + 热更新(HMR),保存即刷新,极大提升效率。
- 支持别名、环境变量、插件系统等工程化能力。
- 构建期:
- 调用 Rollup 进行高效打包,生成可上线的静态资源。
- 你项目中的位置:
- 启动/构建脚本:
package.json→dev/build/preview - 配置:
vite.config.ts
- 启动/构建脚本:
项目中的配置(节选):
// vite.config.ts
import { defineConfig } from "vite";
import react from "@vitejs/plugin-react";
import path from "path";
export default defineConfig(({ mode }) => ({
server: { host: "::", port: 8080 },
plugins: [react(), mode === 'development' && require('lovable-tagger').componentTagger()].filter(Boolean),
resolve: { alias: { "@": path.resolve(__dirname, "./src") } },
}));
server.port = 8080:开发服务器端口。@vitejs/plugin-react:启用 React 的开发增强(JSX、HMR 等)。alias @ -> ./src:允许使用@/components/...这样的路径别名。
五、三者如何协作?
- React 负责“写界面”:组件化组织 UI。
- TypeScript 让 React 代码“更稳”:用类型约束组件 props、状态、接口数据等。
- Vite 提供“开发与打包”能力:启动、热更新、插件、构建优化,最终产出上线资源。
在 src/App.tsx 你能看到典型的 React 应用装配:
// src/App.tsx(节选)
import { BrowserRouter, Routes, Route } from "react-router-dom";
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
const queryClient = new QueryClient();
export default function App() {
return (
<QueryClientProvider client={queryClient}>
<BrowserRouter>
<Routes>
<Route path="/" element={<Index />} />
<Route path="*" element={<NotFound />} />
</Routes>
</BrowserRouter>
</QueryClientProvider>
);
}
- 通过 Provider 装配全局能力(数据缓存、提示、上下文等)。
- 通过路由切换不同页面组件。
六、在本项目中的“定位图”
- 入口与装配:
src/main.tsx、src/App.tsx - 页面与路由:
src/pages/ - 业务组件:
src/components/ - 通用 UI:
src/components/ui/ - 样式系统:
tailwind.config.ts+src/index.css - 工具与 Hook:
src/lib/utils.ts、src/hooks/ - 工程配置:
vite.config.ts、tsconfig*.json、eslint.config.js
七、常见问题与排查(与你的环境相关)
- Windows + Node 22 环境下,可能遇到 Rollup/SWC 可选依赖导致的启动问题。
- 本项目已采用
@vitejs/plugin-react(Babel 路径)替换 SWC,以规避本地二进制兼容问题。 - 详见:
README.md与docs/2025-08-21-fresh-pick-delivery-overview.md的“问题与解决记录”。
八、给前端新手的下一步建议
- React 基础
- 组件、props、state、事件、条件/循环渲染;受控组件/表单。
- 建议:在
src/components/Header.tsx调整一段文案/样式,体验 HMR。
- TypeScript 最小集合
- 基本类型、接口/类型别名、联合类型、泛型(了解即可)。
- 建议:为某个组件的 props 写出清晰的类型定义。
- Vite 工程能力
- 学会使用路径别名、环境变量,理解 dev/build/preview 的区别。
- 建议:修改
vite.config.ts的server.port,体验启动端口的配置影响。
九、结语
React × TypeScript × Vite 让我们既能“快速迭代”,又能“稳健演进”。结合本项目的结构与实践,你可以从小改动入手,逐步建立起组件化、类型化、工程化的前端思维。
更多推荐



所有评论(0)