316 - 《Full Stack React 笔记(1)》

发布于 2023年6月28日

1、解释下 CSR、SSR、SSG、ISR、RSC。


CSR


SSR

CSR 是客户端渲染,流程是用户下载脚本,然后加载服务端数据,然后渲染;SSR 是服务端渲染,流程是服务端加载数据,渲染 HTML,然后客户端下载 JS,然后注水加交互;SSG、ISR 和 RSC 都是基于 SSR 的不同形式。

SSG 是 SSR 的预处理版本,他会在编译时运行 SSR,产出 HTML,这样就不需要等用户请求过来之后再渲染 HTML 了。有个比喻是热菜和预制菜的区别。SSR 像热菜,比如你点了红烧肉,厨师会切肉开始烧,20 分钟后,一盆红烧肉出现在你的面前;SSG 则像预制菜,当你点了红烧肉,厨师会拿出提前制作好的红烧肉预制菜,这是通用的,不能定制,优点是快,过 2 分钟热好你就能吃了。

ISR 全称 Incremental Static Regeneration,翻译成增量静态增生,是 SSR 与 SSG 的结合体。当用户第一次请求一个特定的页面时,服务器将生成 HTML 并将其发送给用户,这与 SSR 相同。不同的是,它把生成的 HTML 存起来。下一次有人请求同一个页面时,会自动提供预先生成的HTML,这与 SSG 相同。为了防止文件过期,通常会设置一个过期时间让 HTML 重新生成。


RSC(比 SSR 稍微短一点)

RSC 在 308 - 《RSC 初印象》 写过,是在 SSR 的基础上提供 Server Component 的能力,用 Component 的方式写 Server 逻辑,有点类似 PHP 。除了功能上提供的能力之外,RSC 额外的好处是让 Server 需要传递给 Client 的 JS 尺寸更小,从而提升产品性能。一个极端的例子是 Bright,这是 RSC 版的高亮库,通过在 Server 侧实现高亮代码的转化,客户端所需要做的事就少了,可以少下载几 M 的 JS 文件。

2、最简 Next.js Template。

一键初始化一个最简 Next.js 项目。

cat <<EOF >package.json
{
  "name": "hello-next",
  "version": "0.1.0",
  "private": true,
  "scripts": {
    "dev": "next dev",
    "build": "next build",
    "start": "next start"
  },
  "dependencies": {
    "next": "13.4.0",
    "react": "18.2.0",
    "react-dom": "18.2.0"
  }
}
EOF
mkdir src && mkdir src/app
cat <<EOF > src/app/layout.js
import React from 'react';
import './styles.css';
function RootLayout({ children }) {
  return (
    <html lang="en">
      <body>
        {children}
      </body>
    </html>
  );
}
export default RootLayout;
EOF
cat <<EOF > src/app/page.js
import React from 'react';
function Home() {
  return (
    <main>
      <h1>Hello Next!</h1>
    </main>
  );
}
export default Home;
EOF
cat <<EOF > src/app/styles.css
body {
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
  padding: 16px;
  min-height: 100%;
  font-family: sans-serif;
  background: hsl(0deg 0% 

内容预览已结束

此内容需要会员权限。请先登录以查看完整内容。