服务端渲染(SSR)与静态网站生成(SSG):Next.js入门

简介: 服务端渲染(SSR)与静态网站生成(SSG):Next.js入门

服务端渲染(SSR)指的是在服务器上动态生成HTML页面的过程,这些页面在加载到浏览器前已包含了所有必需的数据和元素

与之相对的是静态网站生成(SSG),它在构建阶段就生成了所有页面的HTML文件,这些文件可以被部署到CDN上,实现快速的内容分发。

SSR的优势

  • SEO友好:搜索引擎更容易抓取服务端渲染的页面。
  • 首屏加载快:用户无需等待所有JavaScript都加载执行完毕。

SSG的优势

  • 更快的页面加载速度:静态页面可以被CDN缓存,并且不需要额外的服务器时间处理请求。
  • 安全性更好:静态文件不太可能遭到服务器端的安全攻击。

Next.js框架介绍

Next.js是一个轻量级的React服务端渲染应用框架,集成了Webpack、Babel等现代web开发的多项技术。Next.js的热门特性包括:

  • 自动代码分割:提高页面加载速度。
  • 静态导出:将React应用导出为静态应用。
  • API路由:轻松创建API接口。

第三章:Next.js的SSR实现

在Next.js中,页级的SSR通过getServerSidePropsgetInitialProps函数实现,它们在每个请求中被调用,并返回一个对象,其中包含了渲染页面所需的props。

代码示例:使用getServerSideProps

import { GetServerSideProps } from 'next'; 
export const getServerSideProps: GetServerSideProps = async (context) => { 
const res = await fetch(`https://api.example.com/data`); 
const data = await res.json(); 
return { props: { data }, // 将会被传递到页面组件作为props 
};
};
const Page = ({ data }) => { 
return ( 
<div> 
{/* 渲染获取到的数据 */} 
{data.map((item) => ( <p key={item.id}>{item.content}</p> ))} </div> ); 
}; 
export default Page; 

服务器收到请求后,getServerSideProps将被调用,获取数据并作为props传递给React组件。当组件被渲染时,它会使用这些props来生成完整的页面。

第四章:Next.js的SSG实现

SSG是Next.js 9.3以后引入的功能,通过getStaticPropsgetStaticPaths来实现静态页面的生成。

实现SSG的步骤: 1. 使用getStaticProps来获取必要的数据。 2. 如果你的页面路径依赖于外部数据,使用getStaticPaths来定义这些路径。 3. 将这些数据传递给React组件。

代码示例:使用getStaticPropsgetStaticPaths

import { GetStaticProps, GetStaticPaths } from 'next'; 
export const getStaticProps: GetStaticProps = async () => { 
const res = await fetch(`https://api.example.com/data`); 
const data = await res.json(); 
return { props: { data }, }; }; 
export const getStaticPaths: GetStaticPaths = async () => { 
const paths = [ { params: { id: '1' } }, 
{ params: { id: '2' } } // 更多路径... ]; 
return { paths, fallback: false }; }; 
const Page = ({ data }) => { // 静态内容的渲染 
return ( <div> {data.map((item) => ( <p key={item.id}>{item.content}</p> ))} </div> ); }; 
export default Page; 

通过这种方式,Next.js会在构建时生成每个静态页面,并在全球CDN上进行部署。这些页面在请求时将立即可用,无需运行额外的服务器端代码。

总结

服务端渲染(SSR)和静态网站生成(SSG)的基本区别在于内容的生成时机和方式。

服务端渲染(SSR)的特点

  • 动态生成:当用户发起请求时,服务器实时渲染页面内容。
  • 服务器负载:每个页面请求都需要服务器处理,这会导致服务器负载较高。
  • 用户请求响应:内容是在用户请求时生成,因此可以提供最新的数据。
  • SEO优化:由于页面内容在到达浏览器前已经渲染,这有助于改善搜索引擎优化(SEO)。
  • 首屏时间:相较于客户端渲染(CSR),SSR可以更快地显示首屏内容。

静态网站生成(SSG)的特点

  • 预构建页面:页面在构建阶段生成,并作为静态文件存储,通常部署在CDN上。
  • 无服务器处理:请求静态页面不需要服务器动态生成内容,减少了服务器的计算负担。
  • 缓存优势:静态文件可以被缓存,提供即时的页面加载体验。
  • 数据更新:更新内容需要重新构建静态页面。

SEO优化:静态页面易于被搜索引擎抓取,因此同样有良好的SEO表现。 总的来说,SSR是在每次用户请求时在服务器端生成页面内容,适合内容经常变化的应用;而SSG是在构建时生成所有页面,并将其部署为静态资源,适合内容不经常更新或变化的网站。两者都有各自的应用场景和优势,开发者可以根据具体需求选择适合的渲染策略。



相关实践学习
Serverless极速搭建Hexo博客
本场景介绍如何使用阿里云函数计算服务命令行工具快速搭建一个Hexo博客。
相关文章
|
1月前
|
前端开发 机器人 API
前端大模型入门(一):用 js+langchain 构建基于 LLM 的应用
本文介绍了大语言模型(LLM)的HTTP API流式调用机制及其在前端的实现方法。通过流式调用,服务器可以逐步发送生成的文本内容,前端则实时处理并展示这些数据块,从而提升用户体验和实时性。文章详细讲解了如何使用`fetch`发起流式请求、处理响应流数据、逐步更新界面、处理中断和错误,以及优化用户交互。流式调用特别适用于聊天机器人、搜索建议等应用场景,能够显著减少用户的等待时间,增强交互性。
267 2
|
7天前
|
数据采集 JavaScript 搜索推荐
ssr(Nuxt+Next.js)
服务器端渲染(SSR)技术可在服务器上生成页面HTML,提升首屏加载速度和SEO效果。Nuxt.js基于Vue.js,提供自动化路由管理、页面级数据获取和模块化扩展;Next.js基于React.js,支持SSR、静态生成和文件系统路由。两者均具备快速加载、SEO友好和处理复杂页面的优点,但也存在服务器压力大、开发限制和调试困难的缺点。开发者可根据项目需求和技术栈选择合适的框架。
|
12天前
|
数据采集 JavaScript 搜索推荐
服务器端渲染(SSR)(Nuxt+Next.js)
服务器端渲染(SSR)技术在服务器上生成页面HTML,提升首屏加载速度和SEO效果。Nuxt.js和Next.js分别是基于Vue.js和React.js的流行SSR框架。Nuxt.js提供自动化路由管理、页面级数据获取和布局系统,支持SSR和静态站点生成。Next.js支持SSR、静态生成和文件系统路由,通过`getServerSideProps`和`getStaticProps`实现数据获取。SSR的优点包括首屏加载快、SEO友好和适合复杂页面,但也会增加服务器压力、开发限制和调试难度。选择框架时,可根据项目需求和技术栈决定使用Nuxt.js或Next.js。
|
14天前
|
机器学习/深度学习 自然语言处理 前端开发
前端神经网络入门:Brain.js - 详细介绍和对比不同的实现 - CNN、RNN、DNN、FFNN -无需准备环境打开浏览器即可测试运行-支持WebGPU加速
本文介绍了如何使用 JavaScript 神经网络库 **Brain.js** 实现不同类型的神经网络,包括前馈神经网络(FFNN)、深度神经网络(DNN)和循环神经网络(RNN)。通过简单的示例和代码,帮助前端开发者快速入门并理解神经网络的基本概念。文章还对比了各类神经网络的特点和适用场景,并简要介绍了卷积神经网络(CNN)的替代方案。
|
14天前
|
移动开发 前端开发 JavaScript
前端实训,刚入门,我用原生技术(H5、C3、JS、JQ)手写【网易游戏】页面特效
于辰在大学期间带领团队参考网易游戏官网的部分游戏页面,开发了一系列前端实训作品。项目包括首页、2021校园招聘页面和明日之后游戏页面,涉及多种特效实现,如动态图片切换和人物聚合效果。作品源码已上传至CSDN,视频效果可在CSDN预览。
24 0
前端实训,刚入门,我用原生技术(H5、C3、JS、JQ)手写【网易游戏】页面特效
|
23天前
|
监控 前端开发 JavaScript
React 静态网站生成工具 Next.js 入门指南
【10月更文挑战第20天】Next.js 是一个基于 React 的服务器端渲染框架,由 Vercel 开发。本文从基础概念出发,逐步探讨 Next.js 的常见问题、易错点及解决方法,并通过具体代码示例进行说明,帮助开发者快速构建高性能的 Web 应用。
57 10
|
20天前
|
数据采集 存储 JavaScript
如何使用Puppeteer和Node.js爬取大学招生数据:入门指南
本文介绍了如何使用Puppeteer和Node.js爬取大学招生数据,并通过代理IP提升爬取的稳定性和效率。Puppeteer作为一个强大的Node.js库,能够模拟真实浏览器访问,支持JavaScript渲染,适合复杂的爬取任务。文章详细讲解了安装Puppeteer、配置代理IP、实现爬虫代码的步骤,并提供了代码示例。此外,还给出了注意事项和优化建议,帮助读者高效地抓取和分析招生数据。
如何使用Puppeteer和Node.js爬取大学招生数据:入门指南
|
25天前
|
数据采集 JavaScript 搜索推荐
ssr(Nuxt+Next.js)
ssr(Nuxt+Next.js)
|
1月前
|
存储 JavaScript 前端开发
前端开发:Vue.js入门与实战
【10月更文挑战第9天】前端开发:Vue.js入门与实战
|
1月前
|
自然语言处理 JavaScript 前端开发
JavaScript高级——ES6基础入门
JavaScript高级——ES6基础入门
23 1