官方文档 Getting Started | Next.js (nextjs.org)
安装
npx create-next-app@latest --ts
# or
yarn create next-app --typescript
# or
pnpm create next-app --ts
运行
npm run dev
项目结构
文件 | 内容 |
---|---|
pages | 页面文件 |
pages/api | api 数据接口 |
public | 静态资源文件 |
styles | 样式文件 |
next-env.d.ts | 确保 typescript 支持 |
next.config.ts | next 配置文件 |
路由
nextjs 有一个基于页面概念的文件系统路由器,存放在 pages 下.js
, .jsx
, .ts
, .tsx
文件都将作为组件,即文件路径 → 页面路由,例如这里的 index.tsx 映射为 index,pages/about.js
将映射为 /about
。
同时还支持动态路由,创建pages/user/[id].tsx
文件,然后访问user/1
,user/2
[id].tsxtsx
import { useRouter } from 'next/router'
const User = () => {
const router = useRouter()
const { id } = router.query
return <div>User id:{id} </div>
}
export default User
此时访问 http://localhost:3000/user/1 便可得到 User ID: 1
在 router 对象下没有 param 属性,都是存放在 query 参数中,例如访问 user/1?username=kuizuo,此时的 query 值为 {username: 'kuizuo', id: '2'}
提示
不过这里有个比较有意思的点,如果你在上方代码中使用 console.log 打印 query 的话,在 vscode 中会打印出空对象{}
,而在浏览器中会打印一次空对象,一次真实的 query 对象(并且打印两遍)