初识 Nextjs
创建项目
bash
npx create-next-app
这会生成一个新的项目文件夹,包含了一个简单的 Next.js 应用。如果要在当前文件夹下创建项目,可以使用:
bash
npx create-next-app .
目录结构
bash
.
├── README.md
├── app
│ ├── favicon.ico
│ ├── globals.css
│ ├── layout.tsx
│ └── page.tsx
├── next-env.d.ts
├── next.config.js
├── package-lock.json
├── package.json
├── postcss.config.js
├── public
│ ├── next.svg
│ └── vercel.svg
├── tailwind.config.js
└── tsconfig.json
nextjs 新版本推荐使用 app router,所以我们的页面都放在 app 文件夹下。如果你想继续用之前的 pages 文件夹,也是可以的,这里主要是用来演示 app router 的使用。毕竟这个是现在官方推荐的。
app router
app router 是 nextjs 新版本推荐的路由方式,一般包含页面的布局 layout,和页面 page。这样的好处是,可以在 layout 里面做一些公共的事情,比如导航栏,底部栏,侧边栏等等。而 page 里面只需要关注页面的内容就可以了。
bash
./app
├── favicon.ico
├── globals.css
├── layout.tsx
└── page.tsx
这里简单知道下概念,后面会单独细说下这个。
文件名含义
因为 nextjs 会有一定的规则来生成目路由结构,所以对于文件夹的结构和命名也有相应的要求,看一下每一个文件命名的含义和作用
一级文件夹
app
应用路由pages
页面路由public
静态资源src
可以自选的源代码
一级文件
next.config.js
nextjs
的配置package.json
包依赖instrumentation.ts
OpenTelemetry 和 Instrumentationmiddleware.ts
请求中间件.env
环境变量.env.local
本地环境变量.env.development
开发环境变量.eslintrc.json
Eslint 配置.gitignore
git 要忽略的配置next-env.d.ts
ts 声明tsconfig.json
ts 配置jsconfig.json
js 配置postcss.config.js
Tailwind CSS 配置tailwind.config.js
Tailwind CSS 配置
app
文件夹下的约定
layout.tsx
页面布局page.tsx
页面loading.tsx
页面加载中not-found.tsx
页面未找到error.tsx
页面错误global-error.tsx
全局错误route.tsx
api 路由template.tsx
页面模板default.tsx
默认页面globals.css
全局样式favicon.ico
网站图标
app
下可以用文件夹来生成页面路由,也可以通过嵌套的文件夹来生成嵌套的路由,比如
bash
./app
├── favicon.ico
├── globals.css
├── layout.tsx
├── page.tsx
└── user
├── [id].tsx
├── index.tsx
└── profile
├── [id].tsx
└── index.tsx
其中[id]
约定生成动态路由,比如/user/1
,/user/2
等等。
如果文件夹用小括号包裹,比如(user)
,就代表进行了分组。但是这个只是文件夹的分组并不会影响生成的路由,算是一个语义化的分组。如果文件夹是带下划线的,比如_user
,就代表这个文件夹是私有的,不会生成路由。
小结
使用自带的脚手架创建项目,可以快速的创建一个 nextjs 项目,而且项目结构也是比较清晰的,上文也介绍了一些文件夹和文件的作用,后面会详细介绍每一个文件的作用和使用方法。这里对一个 nextjs 项目的结构有了一个大概的了解,然后在对每一个模块进行详细的介绍和实践。