发布于 2026-01-06 0 阅读
0

Next.js——你下一个首选框架

Next.js——你下一个首选框架

Next.js 是由Vercel开发的 React 框架,它将常见的冗余任务(例如路由)抽象成相对简单且强大的 API,从而简化 React 开发人员的工作。这样,您就可以专注于编写应用程序,而无需重复造轮子。

Next.js是一个轻量级的开源 JavaScript 框架,基于 React 库构建,能够实现快速的服务端渲染,并且与服务器无关(即既可以搭配其内置的 HTTP 服务器使用,也可以搭配任何 Node.js 服务器使用)。它由 Zeit 公司开发。路由由页面直接处理,使得网站的快速搭建变得轻松便捷。事实上,我们只需 5 分钟甚至更短的时间就能完成。

为什么选择 Next.js?

1)相对容易学习

就是这样。如果你写过任何 React 项目,你会发现 Next.js 用起来非常顺手。它提供了高级工具和强大的 API 支持,但并不强制你使用它们。

2) 内置 CSS 支持

在组件驱动框架中编写 CSS 时,对“层叠”样式有着不可或缺的需求。这就是为什么会有 CSS-in-JS 工具的原因,但 Next.js 开箱即用,自带 styled-jsx,并且还支持多种样式方法。

3) 自动 TypeScript 支持

如果你喜欢用 TypeScript 编写代码,那么 Next.js 可以为你提供 TypeScript 配置和编译的自动支持。

4)多种数据获取技术

它支持 SSG 和/或 SSR。您可以选择使用其中一种,或者两者都使用。

5)文件系统路由

应用程序的文件系统支持页面间的导航,无需任何特殊的库来处理路由。

安装

替代文字

我们将使用 NPM 安装 Next.js 及其依赖项。

首先,我们将创建一个目录来存放我们的 Next.js 项目,然后进入该目录:

mkdir my-portfolio-site
cd my-portfolio-site
Enter fullscreen mode Exit fullscreen mode

然后我们将使用package.json文件初始化它,并使用y标志直接执行并跳过问题:npm init -y .

现在我们准备安装 Next.js:

npm install react react-dom next
Enter fullscreen mode Exit fullscreen mode

Next.js 对项目结构并没有太多限制,只有一个例外。所有实际的网页都需要放在pages文件夹中,所以我们来创建它:mkdir pages

最后,我们来更新package.json文件,添加运行脚本语言以初始化我们的 Next.js 应用。打开package.json文件,在scripts下添加以下内容

"dev": "next",
"build": "next build",
"start": "next start"
Enter fullscreen mode Exit fullscreen mode

太好了,我们已经安装好了 Next.js。那么让我们开始吧。

创建第一个组件

请记住,Next.js 本质上就是 JavaScript,它基于 React,所以我们只需要构建一些组件即可。路由是通过组件名称来实现的,例如,mysite.com/ blog 的路由将来自pages目录下的blog.js文件。

在您喜欢的代码编辑器中打开项目,并pages目录中创建一个名为index.js 的文件。

让我们创建一个返回一些 HTML 的组件!

const Index = () => (
    <div>
        <h1>My Portfolio Site</h1>
        <p>Welcome to my portfolio! This is designed with Next.js!</p>
    </div>
)

export default Index
Enter fullscreen mode Exit fullscreen mode

现在,如果您从命令行运行npm run dev,然后从 Web 浏览器访问http://localhost:3000,您将看到正在提供的内容。

使用 Link API

我们都喜欢 React 的页面渲染,对吧?我们也可以使用 Next.js 的Link API来实现同样的客户端导航。假设我们的作品集网站有一个“联系我们”页面,那么我们会有一个更新后的 Index 组件,看起来像这样:

import Link from 'next/link';

const Index = () => (
    <div>
        <h1>My Portfolio Site</h1>
        <p>
            Welcome to my portfolio! This is designed with Next.js!
            Please{' '}
                <Link href="/contact">
                    <a>contact me</a>
                </Link>{' '}
            to get more information.
        </p>
    </div>
)

export default Index
Enter fullscreen mode Exit fullscreen mode

首先,我们从 Next.js 导入了 Link API 模块,然后通过在内容中创建占位符(使用{' '}语法)来内联使用它。该组件是一个高阶组件,仅支持少数几个参数,例如href(而href参数本身支持查询字符串等参数)以及URL掩码。底层组件,在本例中为标签还支持其他属性,例如styleonClick

创建更小的可重用组件
现在我们已经有了一个良好的开端,但是你能想象每次创建页面都要重写页眉吗?这就是为什么我们要将网站拆分成更小的可重用组件!

Next.js 本身并没有规定你应该如何操作。但是请记住,如果你将它们放在pages目录下,外部可以直接访问它们。你希望别人直接访问你的页眉、导航栏和页脚吗?如果不希望,那就把它们放在 pages 目录之外。现在,创建一个components顶级目录:mkdir components,然后执行 touch header.js 命令来创建header.js文件。

在代码编辑器中打开header.js文件,并创建一个 header 组件!

const Header = () => (
    <div>
        <h1>My Portfolio Site</h1>
    </div>
)

export default Header
Enter fullscreen mode Exit fullscreen mode

然后回到index.js文件,并将新的头部信息添加到其中:

import Link from 'next/link';
import Header from '../components/header';

const Index = () => (
    <div>
        <Header />
        <p>
            Welcome to my portfolio! This is designed with Next.js!
            Please{' '}
                <Link href="/contact">
                    <a>contact me</a>
                </Link>{' '}
            to get more information.
        </p>
    </div>
)

export default Index
Enter fullscreen mode Exit fullscreen mode

现在所有这些新事物组件的作用是帮我们省了一笔钱。

标签,但稍加想象就能明白,在现实世界的网站中,内容远不止一个 HTML 标签。

我们已成功安装 Next.js,初始化了一个新项目,创建了组件,并使用 Next.js Link API 将它们链接起来,在整个项目中复用了这些组件。这为后续的开发奠定了良好的基础。

Next.js 的功能远不止这些,例如在 JavaScript 中使用 CSS、自定义服务器(例如使用 Express)、页面间状态传递等等。请查阅文档深入了解 Next.js,开启您的 Next.js 之旅!

感谢阅读。

文章来源:https://dev.to/gurshehzadsingh/next-js-your-next-go-to-framework-2lg6