如何在 React 应用程序中处理服务器端渲染?

简介: 【8月更文挑战第31天】

在 React 应用程序中处理服务器端渲染(Server Side Rendering,简称 SSR)是一种提高性能和搜索引擎优化(SEO)的技术。通过在服务器端生成 HTML 内容,然后将完整的 HTML 页面发送给客户端,可以减少客户端的渲染时间,提高首屏加载速度。本文将详细介绍如何在 React 应用程序中实现服务器端渲染。

首先,我们需要安装一些必要的依赖包。在项目根目录下运行以下命令:

npm install react-dom/server

接下来,我们需要创建一个服务器端渲染的入口文件。在项目根目录下创建一个名为 ssr.js 的文件,并在其中编写以下代码:

import React from 'react';
import ReactDOMServer from 'react-dom/server';
import App from './src/App';

const render = (req, res) => {
   
  const html = ReactDOMServer.renderToString(<App />);

  res.send(`
    <!DOCTYPE html>
    <html>
      <head>
        <title>React SSR</title>
      </head>
      <body>
        <div id="root">${
     html}</div>
        <script src="/bundle.js"></script>
      </body>
    </html>
  `);
};

export default render;

在这个文件中,我们导入了 react-dom/server 模块,并使用 ReactDOMServer.renderToString() 方法将 <App /> 组件渲染为字符串。然后,我们将渲染后的 HTML 字符串插入到响应的 HTML 模板中,并发送回客户端。

接下来,我们需要创建一个 Express 服务器来处理客户端的请求。在项目根目录下创建一个名为 server.js 的文件,并在其中编写以下代码:

import express from 'express';
import render from './ssr';

const app = express();

app.use(express.static('public'));

app.get('*', render);

app.listen(3000, () => {
   
  console.log('Server is running on port 3000');
});

在这个文件中,我们创建了一个 Express 应用,并将所有请求路由到 render 函数。我们还使用 express.static() 中间件来提供静态文件,如 CSS、JavaScript 等。

最后,我们需要修改 Webpack 配置文件,以便在生产环境中使用服务器端渲染。在 webpack.config.js 文件中添加以下代码:

module.exports = (env, options) => {
   
  const isProduction = options.mode === 'production';

  return {
   
    // ...其他配置项
    plugins: [
      // ...其他插件
      isProduction && new HtmlWebpackPlugin({
   
        template: './src/index.ssr.html',
        filename: 'index.ssr.html',
        inject: false,
      }),
    ].filter(Boolean),
  };
};

在这个文件中,我们根据环境变量判断是否为生产环境。如果是生产环境,我们使用 HtmlWebpackPlugin 插件生成一个名为 index.ssr.html 的文件,该文件将作为服务器端渲染的入口。

至此,我们已经完成了在 React 应用程序中处理服务器端渲染的所有步骤。现在,我们可以运行以下命令启动服务器:

node server.js

当客户端访问我们的应用程序时,服务器将返回一个完整的 HTML 页面,从而提高首屏加载速度和 SEO。

目录
相关文章
|
3月前
|
机器学习/深度学习 数据库 数据安全/隐私保护
服务器核心组件:CPU 与 GPU 的核心区别、应用场景、协同工作
CPU与GPU在服务器中各司其职:CPU擅长处理复杂逻辑,如订单判断、网页请求;GPU专注批量并行计算,如图像处理、深度学习。二者协同工作,能大幅提升服务器效率,满足多样化计算需求。
1362 39
|
2月前
|
存储 机器学习/深度学习 人工智能
硅谷GPU单节点服务器:技术解析与应用全景
“硅谷GPU单节点服务器”代表了在单个物理机箱内集成强大计算能力,特别是GPU加速能力的高性能计算解决方案。它们并非指代某个特定品牌,而是一类为处理密集型工作负载而设计的服务器范式的统称。
|
2月前
|
机器学习/深度学习 人工智能 弹性计算
2025年阿里云GPU服务器租用价格与应用场景详解
阿里云GPU服务器基于ECS架构,集成NVIDIA A10/V100等顶级GPU与自研神龙架构,提供高达1000 TFLOPS混合精度算力。2025年推出万卡级异构算力平台及Aegaeon池化技术,支持AI训练、推理、科学计算与图形渲染,实现性能与成本最优平衡。
|
5月前
|
弹性计算 关系型数据库 数据库
阿里云服务器ECS是什么?ECS应用场景、租用流程及使用教程整理
阿里云ECS(弹性计算服务)是性能稳定、弹性扩展的云计算服务,支持多种处理器架构和实例类型,适用于网站托管、开发测试、数据存储、企业服务、游戏多媒体及微服务架构等场景。提供从注册、配置到部署、运维的完整使用流程,助力用户高效上云。
|
6月前
|
存储 分布式计算 安全
阿里云服务器ECS实例选型参考:场景适配、应用推荐
选择阿里云服务器ECS实例之前,需要结合性能、价格、工作负载等因素,做出性价比与稳定性最优的决策。对于很多新手用户来说,在初次购买阿里云服务器的时候,面对众多实例规格往往不知道如何选择,因为云服务器实例规格不同,价格也不一样,性能表现更是千差万别。因此,在购买阿里云服务器ECS实例之前,需要结合性能、价格、工作负载等因素,做出性价比与稳定性最优的决策。本文将通过一些常见的选型场景推荐,为大家详细介绍阿里云服务器实例选型的最佳实践,便于大家在选择云服务器实例规格时做个参考。
|
7月前
|
开发框架 人工智能 Java
破茧成蝶:阿里云应用服务器让传统 J2EE 应用无缝升级 AI 原生时代
本文详细介绍了阿里云应用服务器如何助力传统J2EE应用实现智能化升级。文章分为三部分:第一部分阐述了传统J2EE应用在智能化转型中的痛点,如协议鸿沟、资源冲突和观测失明;第二部分展示了阿里云应用服务器的解决方案,包括兼容传统EJB容器与微服务架构、支持大模型即插即用及全景可观测性;第三部分则通过具体步骤说明如何基于EDAS开启J2EE应用的智能化进程,确保十年代码无需重写,轻松实现智能化跃迁。
559 42
|
4月前
|
域名解析 运维 监控
阿里云轻量服务器的系统镜像和应用镜像的区别
轻量应用服务器是阿里云推出的易用型云服务器,支持一键部署、域名解析、安全管理和运维监控。本文介绍其系统镜像与应用镜像的区别及选择建议,助您根据业务需求和技术能力快速决策,实现高效部署。
|
4月前
|
存储 弹性计算 运维
阿里云服务器全解析:ECS是什么、应用场景、租用流程及优缺点分析
阿里云ECS(Elastic Compute Service)是阿里云提供的高性能、高可用的云计算服务,支持弹性扩展、多样化实例类型和多种计费模式。适用于网站搭建、数据处理、运维测试等多种场景,具备分钟级交付、安全可靠、成本低、易运维等优势,是企业及开发者上云的理想选择。
667 5
|
4月前
|
运维 监控 Kubernetes
Bitnami 替代品:Websoft9 如何接力单服务器多应用时代
Bitnami 曾为开源应用部署带来革命性体验,但随着 Docker 成熟与战略转向云原生,其单机多应用支持逐渐弱化。面对多应用管理分散、资源冲突、运维工具缺失等痛点,Websoft9 应运而生,提供一键部署、统一管理、智能调度等能力,全面优化单服务器多应用运维体验,成为 Bitnami 的理想继任者。
160 0
Bitnami 替代品:Websoft9 如何接力单服务器多应用时代