NextJS学习计划
Table of Contents
学习下独立开发者圈很流行的 NextJS,万一哪天想自己独立做个什么东西呢。同样让 DeepSeek 做了个 2 个月的计划,真实学习时间可能得压缩到半个月
阶段一:基础准备(1 周)
目标:掌握 React 基础 + Next.js 核心概念
-
React 快速入门
// 组件基础示例 function Counter() { const [count, setCount] = useState(0); return ( <div> <button onClick={() => setCount(count + 1)}>+</button> <span>{count}</span> </div> ); }
- JSX 语法
- 组件状态管理(useState)
- Props 传递与组件拆分
-
Next.js 环境搭建
npx create-next-app@latest
- 文件路由系统(
pages
目录自动映射) - 开发/生产模式切换
- 基础项目结构解析
- 文件路由系统(
-
核心功能初探
// pages/index.js export default function Home() { return ( <div> <h1>Hello Next.js!</h1> <Link href="/about">About Page</Link> </div> ); }
- 页面导航(
Link
组件) - 静态资源引入(
public
目录) - 全局 CSS 与模块化 CSS
- 页面导航(
阶段二:核心特性深入(2 周)
目标:掌握数据获取、渲染策略与 API 开发
-
数据获取模式
// SSG示例 (Static Site Generation) export async function getStaticProps() { const res = await fetch('https://api.example.com/data'); return { props: { data: await res.json() } }; } // SSR示例 (Server Side Rendering) export async function getServerSideProps() { // 服务端获取数据 }
getStaticProps
/getServerSideProps
区别- ISR 增量静态再生(
revalidate
参数)
-
API 路由开发
// pages/api/user.js export default function handler(req, res) { res.status(200).json({ name: 'John Doe' }); }
- 创建 RESTful API
- 处理 POST/PUT 请求
- 连接数据库(MongoDB 示例)
-
动态路由
// pages/posts/[id].js export async function getStaticPaths() { return { paths: [{ params: { id: '1' } }], fallback: true }; }
阶段三:全栈能力进阶(2 周)
目标:实现完整前后端交互 + 身份验证
-
数据库集成
// utils/db.js import { MongoClient } from 'mongodb'; export async function connectDB() { const client = await MongoClient.connect(process.env.MONGODB_URI); return client.db(); }
-
身份验证方案
// 使用NextAuth.js import { signIn, signOut } from 'next-auth/react'; function LoginButton() { return ( <button onClick={() => signIn('github')}> Sign in with GitHub </button> ); }
-
状态管理
// 使用Context API + useReducer const AppContext = createContext(); function AppProvider({ children }) { const [state, dispatch] = useReducer(reducer, initialState); return ( <AppContext.Provider value={{ state, dispatch }}> {children} </AppContext.Provider> ); }
阶段四:高级优化(1 周)
目标:性能调优与生产部署
- 图片优化
import Image from 'next/image';
<Image src="/photo.jpg" width={500} height={300} alt="Optimized" />
- 自动 WebP 转换
- Lazy Loading
- 代码分割
// 动态导入组件
const DynamicComponent = dynamic(() => import('../components/HeavyComponent'));
- 部署配置
# Vercel一键部署
vercel deploy --prod
- 环境变量管理(
.env.local
) - 自定义服务器配置(Node.js/Express)
阶段五:实战项目(2 周)
项目 1:博客系统
- 功能需求:
- Markdown 文章管理
- 评论系统
- 按标签分类
- 技术栈:
- Next.js + Tailwind CSS
- MongoDB + NextAuth.js
项目 2:电商平台
- 功能需求:
- 商品列表(SSG+ISR)
- 购物车状态管理
- 支付集成(Stripe API)
- 高级特性:
- 服务端用户鉴权
- 性能监控(使用 Vercel Analytics)
明天就看看 go 的学习过程有什么坑吧