国际站
    控制台
    • 产品简介
    • 快速开始
      • 导入 Git 仓库
      • 从模板开始
      • 直接上传
      • 从 AI 开始
    • 框架指南
      • 前端
      • 后端
      • 全栈
        • Next.js
    • 项目指南
      • 项目管理
      • edgeone.json
      • 缓存配置
      • 错误码
    • 构建指南
    • 部署指南
      • 概览
      • 触发部署
      • 管理部署
      • 部署按钮
      • 使用 Github Action
      • 使用 CNB 插件
      • 使用 IDE 插件
      • 使用 CodeBuddy IDE
    • 域名管理
      • 概览
      • 自定义域名
      • 配置 HTTPS 证书
      • 如何配置 DNS 的 CNAME 记录
    • Pages Functions
      • 概览
      • Edge Functions
      • Node Functions
    • 日志分析
    • KV 存储
    • 边缘 AI
    • API Token
    • EdgeOne CLI
    • Pages MCP
    • 集成指南
      • AI
        • 对话型大模型集成
        • 图片大模型集成
      • 数据库
        • Supabase 集成
        • Pages KV 集成
      • 电商
        • WooCommerce 集成
        • Shopify 集成
      • 支付
        • Stripe 集成
        • Paddle 集成指南
      • CMS
        • Sanity 集成
        • Contentful 集成
        • WordPress 集成
      • 身份验证
        • Supabase 集成
        • Clerk 集成
    • 最佳实践
      • 使用边缘AI模型快速搭建对话型AI站点
      • 使用 WordPress + WooCommerce 和 GatsbyJS 搭建电商平台
      • 使用 Supabase 和 Stripe 搭建 SaaS 站点
      • 如何快速搭建公司品牌站点
      • 如何快速搭建博客站点
      • 使用通用大模型快速搭建AI应用
    • 迁移指南
      • 从 Vercel 迁移至 EdgeOne Pages:优化您在中国区域的网站部署
      • 从 Cloudflare Pages 迁移至 EdgeOne Pages:优化您在中国区域的网站部署
      • 从 Netlify 迁移至 EdgeOne Pages:优化您在中国区域的网站部署
    • 排障指南
    • 常见问题
    • 联系我们
    • 产品动态

    Next.js

    Next.js 是一个基于 React 的全栈框架,用于构建高性能、可扩展的 Web 应用。它简化了开发流程,支持多种渲染模式,适合各种项目需求。
    注意:
    目前 Pages 对 Next.js 版本的支持为 13.5+、14、15,最低版本为 13.5+。
    

    核心特点

    多渲染模式:支持 SSG(静态生成)、SSR(服务端渲染)、ISR(增量静态再生)和 CSR(客户端渲染),灵活适配静态和动态场景。
    文件式路由:通过文件和文件夹结构自动生成路由(Pages Router 或 App Router),简化页面管理。
    API 路由:内置 API 功能,轻松创建后端接口。
    性能优化:自动代码分割和快速刷新,提升加载速度和开发体验。
    TypeScript 支持:原生支持 TypeScript,增强代码可靠性。
    

    优势

    快速构建 SEO 友好、性能优越的应用。
    统一前后端开发体验,降低学习成本。
    适合从静态博客到复杂动态应用的各种场景。
    

    快速开始

    在 EdgeOne Pages 上开始部署 Next.js 的项目:
    通过 Git 仓库导入 Next.js 的项目
    从 Pages 的模板库选择 Next.js 的模板
    使用下述 Next.js 示例项目
    
    

    Pages 对 Next.js 的支持

    Pages 支持 Next.js 的旧版 Pages Router,但还是建议使用 App Router。
    
    下表是 Pages 目前支持 Next.js 的关键特性。平台也会尽早支持更多特性,但实验性功能可能尚未完全稳定。
    Next.js 特性
    支持情况
    App Router
    Pages Router
    Server-Side Rendering (SSR)
    Incremental Static Regeneration (ISR)
    Static Site Generation (SSG)
    React Server Components
    Response Streaming
    Route Handlers
    Experimental framework features
    部分支持
    Redirects and rewrites
    目前暂不支持 Next.js 的重写和重定向,平台建议尽可能使用 edgeone.json 来配置,具体可参看文档。
    

    服务端渲染 (SSR)

    服务端渲染允许您在服务器上动态渲染页面。每次用户发起请求时,服务器通过使用 getServerSideProps(Pages Router)或 App Router 中的服务器组件动态获取数据(如用户会话、查询参数)来动态生成 HTML。
    
    默认构建设置如下:
    构建命令: npm run build
    输出目录: .next
    

    增量静态再生 (ISR)

    增量静态再生是 SSG 的扩展,结合了 SSG 和 SSR 的优点,数据有更新时无需重新构建整个站点。ISR 为开发者带来三大优势:更佳的性能、更高的安全性以及更短的构建时间。
    
    在构建时生成静态页面的过程中想要启用 ISR,可以使用 getStaticProps(Pages Router)或 App Router 的 revalidate 选项,通过 revalidate 设置定期(例如每 60 秒)或者按需调用 revalidatePath 方法来重新生成。
    注意:
    revalidatePath 方法目前属于实验性功能,可能尚未完全稳定。
    
    默认构建设置如下:
    构建命令: npm run build
    输出目录: .next
    

    静态站点导出(SSG)

    若不需要 Next.js 提供的任何动态功能,则可以使用它来生成完全静态的站点。配置为静态导出模式,可按照如下示例修改 next.config.js:
    /** @type {import('next').NextConfig} */
    const nextConfig = {
    output: 'export', // 启用静态导出
    images: {
    unoptimized: true // 静态导出时需要禁用图片优化
    },
    trailingSlash: true, // 添加尾部斜杠,提高兼容性
    };
    默认构建设置如下:
    构建命令: npm run build
    输出目录: out
    

    流式渲染

    Pages 支持通过 React Server Components (RSC) 来使用流式渲染。
    借助 Suspense 组件,页面内容可以从服务器逐步“流式”传输到客户端,而不是等待整个页面完全渲染后再一次性发送。这可以显著改善用户体验,尤其是在数据获取较慢或页面复杂的情况下。
    
    代码示例(在 page.tsx 中):
    import { Suspense } from 'react';
    import { PostFeed, Weather } from './Components';
    
    export default function Posts() {
    return (
    <section>
    <Suspense fallback={<p>加载帖子中...</p>}>
    <PostFeed /> {/* 这个组件会异步获取数据并流式渲染 */}
    </Suspense>
    <Suspense fallback={<p>加载天气中...</p>}>
    <Weather />
    </Suspense>
    </section>
    );
    }
    PostFeed 和 Weather 可以独立流式渲染,如果一个慢,另一个不会阻塞。