Next.js 路由
Next.js 使用基于文件系统的路由器。每当我们将任何页面添加到
pages 目录时,它都会自动通过 url 访问。以下是这个路由器的规则。
Index Routes-文件夹中存在的 index.js 文件映射到目录的根目录。例如-
pages/index.js 映射到"/"。
pages/posts/index.js 映射到"/posts"。
Nested Routes-pages 目录中的任何嵌套文件夹结构,因为路由器 url 自动。例如-
pages/settings/dashboard/about.js 映射到"/settings/dashboard/about"。
pages/posts/first.js 映射到"/posts/first"。
Dynamic Routes-我们也可以使用命名参数来匹配 url。使用括号相同。例如-
pages/posts/[id].js 映射到"/posts/:id",我们可以在其中使用像"/posts/1"这样的 URL。
pages/[user]/settings.js 映射到"/posts/:user/settings",我们可以在其中使用"/abc/settings"这样的 URL。
pages/posts/[...all].js 映射到"/posts/*",我们可以在其中使用任何 URL,例如"/posts/2020/jun/"。
页面链接
Next.JS 允许使用 Link react 组件在客户端链接页面。它具有以下属性-
href-pages 目录中的页面名称。例如 /posts/first 指的是存在于 pages/posts 目录中的 first.js。
让我们创建一个示例来演示相同的内容。
在这个例子中,我们将更新 index.js 和 first.js 页面,使服务器命中以获取数据。
让我们更新全球 CSS 支持章节中使用的 nextjs 项目。
更新 pages 目录下的 index.js 文件如下。
import Link from 'next/link'
import Head from 'next/head'
function HomePage(props) {
return (
<>
<Head>
<title>Welcome to Next.js!</title>
</Head>
<div>Welcome to Next.js!</div>
<Link href="/posts/first">> <a>First Post</a></Link>
<br/>
<div>Next stars: {props.stars}</div>
<img src="/logo.png" alt="TutorialsPoint Logo" />
</>
)
}
export async function getServerSideProps(context) {
const res = await fetch('https://api.github.com/repos/vercel/next.js')
const json = await res.json()
return {
props: { stars: json.stargazers_count }
}
}
export default HomePage
启动 Next.js 服务器
运行以下命令启动服务器-。
npm run dev
> nextjs@1.0.0 dev \Node\nextjs
> next
ready-started server on http://localhost:3000
event-compiled successfully
event-build page: /
wait -compiling...
event-compiled successfully
event-build page: /next/dist/pages/_error
wait -compiling...
event-compiled successfully
验证输出
在浏览器中打开 localhost:3000,您将看到以下输出。
点击第一篇文章链接。
