- Next.js 教程
- Next.js - 主页
- Next.js - 概述
- Next.js - 环境设置
- Next.js 特点
- Next.js - 页面
- Next.js - 静态文件服务
- Next.js - 元数据
- Next.js - CSS 支持
- Next.js - 全球 CSS 支持
- Next.js - 预渲染
- Next.js 路由
- Next.js - 路由
- Next.js - 动态 API 路由
- Next.js - 命令式路由
- Next.js - 浅层路由
- Next.js API 路由
- Next.js - API 路由
- Next.js - API 中间件
- Next.js - 响应助手
- Next.js 其他
- Next.js - 打字稿
- Next.js - 环境变量
- Next.js - 部署
- Next.js - CLI
- Next.js 有用资源
- Next.js - 快速指南
- Next.js - 有用的资源
- Next.js - 讨论
Next.js - 预渲染
在 Next.js 中,我们知道它会为页面生成 HTML,称为预渲染。Next.JS 支持两种类型的预渲染。
静态生成- 此方法在构建时生成 HTML 页面。每个请求都会发送此预呈现的 HTML。此方法对于营销网站、博客、电子商务产品列表网站、帮助、文档网站很有用。
服务器端生成- 此方法在每个请求上生成 HTML 页面。当 html 页面内容可能随每个请求而变化时,此方法适用。
每页预渲染
Next.JS 允许为每个页面设置预渲染方法,其中大部分页面采用静态生成,其他页面将使用服务器端渲染。
无数据静态生成
静态生成可以在没有数据的情况下完成,在这种情况下,HTML 页面将准备就绪,无需预取数据然后开始渲染。可以稍后或根据请求获取数据。该技术有助于向用户显示没有任何数据的用户界面,以防数据需要时间才能出现。
带数据的静态生成
静态生成可以使用数据完成,在这种情况下,HTML 页面在获取数据之前不会准备就绪,因为 HTML 可能依赖于数据。每个组件都有一个特殊的方法getStaticProps,可用于获取数据并将数据作为页面的 props 传递,以便页面可以根据传递的 props 进行渲染。
getStaticProps() 函数在生产环境中的构建时运行,并在开发模式下针对每个请求运行。
让我们创建一个示例来演示这一点。
在此示例中,我们将创建一个更新index.js 和first.js 页面以使服务器命中以获取数据。
让我们更新全局 CSS 支持章节中使用的 nextjs 项目。
更新pages目录中的index.js文件以使用getServerSideProps()方法。该方法将根据请求调用。
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
更新pages目录中的first.js文件以使用getStaticProps()方法。该方法将被调用一次。
import Link from 'next/link' import Head from 'next/head' import Container from '../../components/container' export default function FirstPost(props) { return ( <> <Container> <Head> <title>My First Post</title> </Head> <h1>My First Post</h1> <h2> <Link href="/"> <a>Home</a> </Link> <div>Next stars: {props.stars}</div> </h2> </Container> </> ) } export async function getStaticProps() { const res = await fetch('https://api.github.com/repos/vercel/next.js') const json = await res.json() return { props: { stars: json.stargazers_count } } }
启动 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,您将看到以下输出。
单击第一篇文章链接。