掌握 Nextjs 中的 SSR:如何提升 SEO 和用户体验

掌握 nextjs 中的 ssr:如何提升 seo 和用户体验

ssr(服务器端渲染)是 next.js 中生成页面的另一种方法。在本文中,我想解释什么是 ssr、它是如何工作的,以及如何在 next.js 项目的 page router 和 app router 中实现它。

什么是ssr?

ssr是一种在用户发出请求后生成静态页面(或预渲染页面)的方法。这意味着每次请求都会生成一个静态页面。此方法对于需要经常更新的页面很有用,因为它可以确保数据始终是最新的

ssr 如何工作?

当您在 next.js 中使用 ssr 时,每次用户请求实现了 ssr 的页面时,都会在发出请求后生成该页面。这意味着用户必须等待 next.js 为每个请求再次生成并捆绑静态内容。静态页面准备好后,用户就可以看到请求的页面。

需要注意的是,ssr 仅在服务器上运行,并且它会为每个请求生成一个静态页面,因此它不会在项目的构建过程中运行。

如何在 app router 中实现 ssr

要在 app router 中实现 ssr,您不需要编写特殊函数或设置特定配置,因为它在您的服务器组件中默认启用。

例如,如果您有一个静态页面并从 api 获取数据,则该页面将默认使用 ssr。需要注意的是,当使用 ssr 时,页面不会在构建时捆绑或预渲染。如果您在项目中使用动态页面,如果您不获取任何数据,它将默认使用 ssg。但是当您从 api 获取时,它将切换到 ssr,并且在构建期间不会捆绑任何静态页面。

这是在静态路由中实现 ssr 的示例:

import react from 'react';const aboutpage = async () => {  // fetch data from an api or any server-side source  const data = getdatafromapi();  return (    

about us

{data}

);};export default aboutpage;

如何在页面路由器中实现 ssr

要在页面路由器中实现 ssr,您需要在文件中创建 getserversideprops 函数。该函数将在每次用户请求后调用。如果您使用动态路由,例如 [id] 文件,则还需要在文件中使用 getserversideprops。该函数采用一个参数,通常称为 context,您可以从中检索 id,即动态页面的值。服务器在每次用户请求时都会调用此函数。

这是在 tsx 文件中实现的示例:

import { getserversideprops } from 'next';interface aboutprops {  data: string;}const aboutpage: react.fc = ({ data }) => {  return (    

about us

{data}

);};// this function runs on the server on every requestexport const getserversideprops: getserversideprops = async () => { const data = getdatafromapi(); return { props: { data, }, };};export default aboutpage;

这是在 jsx 文件中实现的示例:

const AboutPage = ({ data }) => {  return (    

About Us

{data}

);};// This function runs on the server on every requestexport async function getServerSideProps() { const data = getDataFromApi(); return { props: { data, }, };}export default AboutPage;

结论

ssr 是捆绑或创建静态页面的有用方法,但它不会在构建期间发生。当您需要根据每个用户请求更新页面以便用户可以看到最新数据时,您可以使用 ssr。但是,需要注意的是,它可能需要更多时间,并且不如 ssg(静态站点生成)或 isr(增量静态重新生成)等其他方法那么快,因为它会为每个用户请求生成一个静态页面。

希望您喜欢这篇文章!如果您有任何疑问,请随时问我。如果您想了解 isr 和 ssg,可以在此处查看我关于 isr 和 ssg 的文章。如果你想了解更多,可以关注我的网站。

感谢您的阅读!暂时再见!

以上就是掌握 Nextjs 中的 SSR:如何提升 SEO 和用户体验的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1493269.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月19日 15:32:54
下一篇 2025年12月19日 15:32:59

相关推荐

  • 了解 JavaScript 中的扩展运算符:初学者简单指南

    介绍 javascript 是一种有趣的编程语言,其最令人兴奋的功能之一是扩展运算符。如果您刚刚开始编码,或者即使您是一个对学习 javascript 感兴趣的孩子,也不必担心!我将以最简单的方式分解这个概念,并举例来帮助您理解。 什么是价差运算符? 扩展运算符看起来像三个点 (…)。就…

    好文分享 2025年12月19日
    000
  • JavaScript 解构简单指南:通过简单示例进行学习

    介绍 javascript 有一个称为解构的功能,它允许您轻松地从数组中提取值或从对象中提取属性并将它们分配给变量。解构使得处理数据变得更加容易,它是初学者学习 javascript 的必备工具。在这篇文章中,我们将通过超级简单的示例来分解解构,以便您可以立即理解它。 什么是解构? 想象一下你有一个…

    2025年12月19日
    000
  • 理解 JavaScript 中的栈和堆

    在 javascript 中,栈和堆是用于管理数据的两种类型的内存,每种都有不同的用途: 堆栈堆 *什么是栈和堆*堆栈:堆栈用于静态内存分配,主要用于存储基本类型和函数调用。它是一个简单的后进先出 (lifo) 结构,使其访问速度非常快。 堆:堆用于动态内存分配,其中存储对象和数组(非基本类型)。与…

    2025年12月19日
    000
  • 姜戈 |请求-响应周期|第三部分

    django 中的请求-响应周期遵循明确定义的流程。以下是用户导航到特定路线时它如何工作的分步说明: 1.用户提出请求 当用户在浏览器中输入 url(例如,http://example.com/products/)时,http 请求 会发送到 django 服务器。请求包含请求方法(get、post…

    2025年12月19日
    000
  • TCJavaScript 更新、TypeScript Beta、Nodejs 等等

    欢迎来到新一期的“JavaScript 本周”! 今天,我们从 TC39、Deno 2 正式版本、TypeScript 5.7 Beta 等方面获得了 JavaScript 语言的一些重大更新,所以让我们开始吧! TC39 更新:JavaScript 有何变化? 最近在东京举行的 TC39 会议带来…

    2025年12月19日
    000
  • 如何使用文档 API 在 Angular 中下载文件

    介绍 下载文件是 web 应用程序中的常见功能,对于导出数据、共享文档等至关重要。在本指南中,我将介绍在 angular 中下载文件的不同技术,确保您可以灵活地选择适合您特定需求的最佳方法。 先决条件 在我们深入之前,请确保您具备以下条件: 已安装 angular cli 基本的 angular 项…

    2025年12月19日
    000
  • “模块 vs 主要:现代英雄 vs packagejson 的复古传奇!”

    什么是模块字段? package.json 中的 module 字段指定 esm(es6 模块) 的入口点。与专为 commonjs 模块 (require()) 设计的 main 字段不同,模块用于支持较新的 esm 标准的目标环境,例如 javascript 捆绑程序(webpack、rollu…

    2025年12月19日
    000
  • 探索 JavaScript:从脚本到面向对象编程

    JavaScript 从最初作为一种用于向网页添加交互性的简单脚本语言以来已经走过了很长的路。如今,它已成为一种强大的多功能语言,能够支持复杂的面向对象编程 (OOP) 原则。 在我的最新文章中,我深入探讨了 JavaScript 从脚本根源到成为成熟的面向对象编程语言的演变。无论您是想要了解基础知…

    2025年12月19日
    000
  • Overcoming Imposter Syndrome While Learning Reactjs

    你是否曾经盯着React.js 教程,当其他人似乎都在轻松地读完时感到完全迷失?这就是我第一次涉足 React 世界时的情况。 什么是冒名顶替综合症? 冒名顶替综合症是一种挥之不去的感觉,觉得自己不如别人想象的那么有能力,这在科技界尤其普遍。学习像 React 这样的框架可以放大这些感觉,让你质疑自…

    2025年12月19日
    000
  • React 基础知识~渲染性能/备忘录

    这些是子组件将被渲染的模式。 当父组件重新渲染时,例如更新自身状态等时。 当子组件的 props 重新渲染时。 但实际上,只有渲染 props 时才需要重新渲染子组件。其他一切都是不必要的。 ・src/example.js mport react, { usestate } from “react”…

    2025年12月19日
    000
  • 揭开魔力:深入研究软件开发

    软件开发是我们所驾驭的数字世界背后的无形之手,是创造力、问题解决能力和技术专业知识的迷人融合。这个过程为运行我们的计算机、智能手机甚至冰箱的应用程序和程序注入了活力。但在这个看似神奇的世界的表面之下,隐藏着一种结构化的协作努力,可以将想法变成现实。 软件开发的核心是创建软件应用程序的系统过程。这个旅…

    2025年12月19日
    000
  • 使用html css和js的动画进行冒泡排序

    代码 : Bubble Sort Animation body { display: flex; flex-direction: column; justify-content: center; align-items: center; background-color: #1c1c1c; colo…

    2025年12月19日
    000
  • 探索 JavaScript 的现代原语:BigInt 和 Symbol

    在不断发展的 javascript 世界中,引入了新功能来解决该语言的局限性,并为开发人员提供更强大的工具来构建应用程序。 bigint 和 symbol 原语就是两个这样的功能,它们都是在 ecmascript 2015 (es6) 及更高版本中引入的。这些类型为 javascript 带来了新功…

    2025年12月19日
    000
  • 清晰函数名称的力量:干净的代码必不可少

    在编程世界中,清晰才是王道。提高代码可读性和可维护性的最有效方法之一是使用清晰、描述性的函数名称。让我们深入探讨为什么这很重要,以及如何在代码中实现此实践。 模糊函数名称的问题 考虑这段代码: function addtodate(date, month) { // … implementati…

    2025年12月19日
    000
  • 清洁架构:遥不可及的理想——给开发者的寓言

    在西藏宁静的山区高处,一座古老寺院安静的大厅里,住着一位年轻的学徒。他致力于追求和谐——不仅在他自己内部,而且在他的编程技巧中。他的目标是创建一个完美的应用程序,一个能够体现清洁架构深刻原理的应用程序,就像山间溪流的清澈一样。但他意识到这条道路的艰辛,于是向一位可敬的明师寻求智慧。 徒弟谦卑地走近师…

    2025年12月19日
    000
  • Shadcn CLI如何使用错误常量来提高代码可读性

    在本文中,我们分析了如何在 shadcn/ui 代码库中使用名为 error.ts 的文件。 utils/errors.ts error.ts 包含 12 个变量: export const missing_dir_or_empty_project = “1”export const existin…

    2025年12月19日
    000
  • 使用 Rollup 创建具有 CommonJS 和 ESM 支持的 NPM 包

    使用 rollup 创建具有 commonjs (cjs) 和 ecmascript 模块 (esm) 支持的 npm 包 在这篇文章中,我们将探索如何使用 rollup 创建支持 commonjs (cjs) 和 ecmascript 模块 (esm) 的 npm 包。 rollup 是一个 ja…

    2025年12月19日
    000
  • SQL 序列 ||作者:Munisekhar Udavalapati || MySQL || SQL

    正在安装续集 npm install –save续集 您还可以安装mysql。使用此命令 npm install –save mysql2 连接到数据库 javascript const {sequelize} =require(‘sequelize’…

    2025年12月19日
    000
  • JavaScript 的有趣之处以及 TypeScript 如何让它变得更好

    javascript 是一种我们都喜欢的语言,对吧?它灵活、轻便,并且可以随处运行。但老实说,尽管它很伟大,但它可能很奇怪。那种奇怪的感觉会让你在看到一些不应该起作用的东西后质疑自己的理智。 在本文中,我们将探讨 javascript 中的一些怪癖 – 那些在您最意想不到的时候让您感到惊…

    2025年12月19日
    000
  • 我不知道你可以使用同级参数作为函数中的默认值

    javascript 从 es2015 开始就支持默认参数值。你知道这一点。我知道这一点。我不知道的是,您可以使用兄弟 参数作为默认值本身。 (或者也许是“相邻位置参数”?不知道如何称呼这些。) function myfunc(arg1, arg2 = arg1) { console.log(arg…

    2025年12月19日
    000

发表回复

登录后才能评论
关注微信