最近遇到一个问题 突然要一个单页面的项目 用惯了Next.js 而 create-react-app 又不推荐且不灵活 最终找发现Nextjs也支持单页面应用 以下是使用Next.js构建单页面React应用过程
1 正常创建项目 (我选择的是Pages Router
而非 AppRoute
)
2 修改配置文件
next.config.ts
javascript
import type { NextConfig } from "next";
const nextConfig: NextConfig = {
output: "export",
distDir: "dist", //默认打包后目录名 `build`
};
export default nextConfig;
3 删除 src/api
目录 单页面应用 不支持api路由功能 放着会警告
两个常用页面 尝试
index.tsx
javascript
import Link from "next/link";
import { useRouter } from "next/router";
export default function Home() {
const router = useRouter();
// 编程式导航示例
const goToAbout = () => {
router.push("/about"); // 客户端跳转
};
return (
<div>
<h1>SPA Home Page</h1>
{/* 声明式导航 */}
<Link href='/about'>
About Page
</Link>
{/* 编程式导航 */}
<button onClick={goToAbout}>Go to About</button>
</div>
);
}
about.tsx
javascript
import Link from "next/link";
import { useRouter } from "next/router";
export default function AboutPage() {
const router = useRouter();
const goToAbout = () => {
router.push("/");
};
return (
<div>
<h1>SPA AboutPage</h1>
<Link href='/'>Home Page</Link>
<button onClick={goToAbout}>Go to Home</button>
</div>
);
}
在两个页面间跳转 发现已经不需加载 实现了单页面应用