五、Next.js,使用路由掩码创建的干净URL

Next.js是一个新的通用JavaScript框架,它为基于React和服务器的Web应用提供了一个新的可选方案。

Next.js目前已经开源,https://zeit.co/blog/next

在上一节课中,我们学习了如何使用查询字符串创建动态页面。有了这个,我们的一个博客帖子的链接如下:

http://localhost:3000/post?title=Hello%20Next.js

但那个URL看起来不太好。
如果我们有这样的东西呢?

http://localhost:3000/p/hello-nextjs

五、Next.js,使用路由掩码创建的干净URL_第1张图片
Paste_Image.png

这将是非常棒的,对吧?

这就是我们在这堂课上要做的。

安装

首先,我们需要一个简单的 Next.js 应用程序。试着下载下面的示例应用程序:

git clone https://github.com/arunoda/learnnextjs-demo.git
cd learnnextjs-demo
git checkout create-dynamic-pages

你可以执行以下命令:

npm install
npm run dev
路由掩码

在这里,我们将使用 Next.js g 一个独特的特性。我们称之为路由掩码。基本上,它会在浏览器上显示一个不同的URL,而不是你的应用所看到的实际URL。

让我们在博客文章的URL中添加一个路由掩码。

使用以下代码为 pages/index.js:

import Layout from '../components/MyLayout.js'
import Link from 'next/link'

const PostLink = (props) => (
  
  • {props.title}
  • ) export default () => (

    My Blog

    )

    看看下面的代码块:

    const PostLink = (props) => (
     
  • {props.title}
  • )

    在这个 元素中,我们使用了另外一个被叫做“as”的属性。这是我们需要在浏览器上显示的URL。
    现在,您可以通过导航到 http://localhost:3000/ 来访问该应用程序。你的应用程序看到的URL在“href”中被提到。


    现在试着点击第一个博客文章,你就会被导航到博客文章。

    在那之后,点击后退按钮,然后点击前进按钮。会发生什么呢?

    history 识别

    正如您所见,路由屏蔽在浏览器历史上的工作非常出色。你所要做的就是为链接添加“as”的属性。

    重新载入

    现在转到主页:http://localhost:3000/
    然后点击第一个帖子标题。你将被导航到文章的页面。

    五、Next.js,使用路由掩码创建的干净URL_第2张图片
    Paste_Image.png

    然后重新加载浏览器。会发生什么呢?

    404

    它给我们一个404错误。这是因为在服务器上没有这样的页面加载。服务器将尝试加载页面 p/hello-next.js,但我们只有两页:index.js 和 post.js

    因此,我们无法在生产中运行这款应用。我们需要解决这个问题。

    Next.js的自定义服务器API是这个问题的解决方案。

    下节课我们将学习如何使用它。

    本文翻译自:https://learnnextjs.com/basics/clean-urls-with-route-masking

    你可能感兴趣的:(五、Next.js,使用路由掩码创建的干净URL)