这是MetaNodeSwap DEX项目的Next.js版本,从原始的Vite + React项目迁移而来。
- 框架: Next.js 16 (App Router)
- React: 19.2
- Web3:
- Wagmi 2.19
- RainbowKit 2.2
- Ethers.js 6.15
- Viem 2.38
- UI: Ant Design 5.27
- 查询: TanStack Query 5.90
dex-next/
├── app/ # Next.js App Router页面
│ ├── layout.tsx # 根布局
│ ├── page.tsx # 首页 (Swap)
│ ├── liquidity/ # 流动性页面
│ └── positions/ # 持仓页面
├── components/ # React组件
│ ├── Header.tsx # 导航栏
│ ├── Swap.tsx # Swap组件
│ ├── Liquidity.tsx # 流动性组件
│ ├── Positions.tsx # 持仓组件
│ ├── PoolList.tsx # 池子列表
│ └── Providers.tsx # Provider包装器
├── config/ # 配置文件
│ ├── abis.ts # 合约ABI
│ ├── contracts.ts # 合约地址
│ └── wagmi.ts # Wagmi配置
├── hooks/ # 自定义Hooks
│ ├── useContract.ts # 合约相关Hooks
│ ├── useTokenBalance.ts
│ └── useEthBalance.ts
└── styles/ # 样式文件
├── globals.css # 全局样式
└── variables.css # CSS变量
- ✅ 从
react-router-dom迁移到 Next.js App Router - ✅ 使用
useRouter和usePathname替代useNavigate和useLocation - ✅ 使用
useSearchParams传递页面参数
- ✅ 所有客户端组件添加
'use client'指令 - ✅ 使用 Next.js
Link组件替代react-router-dom的Link - ✅ 使用 URL 参数替代 React Router 的 state 传递
- ✅ Wagmi配置启用
ssr: true - ✅ 使用
Suspense包装需要useSearchParams的组件 - ✅ 配置 Webpack 排除不兼容的包
pnpm installpnpm devpnpm build
pnpm start- 网络: Sepolia Testnet
- Chain ID: 11155111
- 合约地址: 见
config/contracts.ts
- 代币兑换
- 实时报价
- 智能授权检查(避免重复授权)
- 多费率池选择 (0.05%, 0.30%, 1.00%)
- 添加流动性
- 创建新池子
- 多费率支持
- 池子列表查看
- 查看所有持仓
- 收取手续费
- 移除流动性
原来 (React Router):
navigate('/liquidity', {
state: { token0, token1, feeIndex }
});现在 (Next.js):
const params = new URLSearchParams({
token0: pool.token0,
token1: pool.token1,
feeIndex: pool.index.toString(),
});
router.push(`/liquidity?${params.toString()}`);原来:
const location = useLocation();
const state = location.state;现在:
const searchParams = useSearchParams();
const token0 = searchParams.get('token0');- Next.js 19的React版本可能导致某些依赖出现peer dependency警告,但不影响使用
- 需要使用
Suspense包装使用useSearchParams的页面
项目使用pnpm作为包管理器。关键依赖:
@rainbow-me/rainbowkit: 钱包连接UIwagmi: React Hooks for Ethereumethers: 以太坊库antd: UI组件库
本项目已配置好 Cloudflare Pages 部署支持。
# 安装依赖
pnpm add -D @cloudflare/next-on-pages wrangler
# 一键部署
npx wrangler login
pnpm run deploy如果部署后遇到 Node.JS Compatibility Error,请查看:
也可以部署到:
- Vercel
- Netlify
- 自托管服务器
pnpm build
pnpm startMIT
迁移完成时间: 2025年10月 迁移版本: Next.js 16 + React 19