SEO教程

SEO教程

Products

当前位置:首页 > SEO教程 >

Next.js 初学者应该掌握哪些关键点?

96SEO 2026-07-23 07:26 34


其实,

一、服务端组件 vs 客户端组件

这是 Next.js App Router 最主要的概念。没搞清楚这个,后面全是坑。

Next.js 初学者应该掌握哪些关键点?

服务端组件

app/ 目录下的组件默认都是服务端组件特点:

  • 可以直接 async/await在服务器上跑
  • 可以直接访问数据库、调接口。不暴露给浏览器
  • 不能用 useStateuseEffectonClick 等浏览器 API
// app/page.tsx —— 服务端组件,直接 async
export default async function Home {
const data = await fetch;const json = await data.json;return 
{json.title}
}

客户端组件

顶部加 "use client" 声明,特点:

  • 可以用 React hooks
  • 可以绑定事件
  • 不能直接 async/await 请求
// components/SearchBox.tsx —— 客户端组件
"use client";import { useState } from "react";export default function SearchBox {
const = useState;return (
 setValue} />
);}

本项目的例子

服务端组件:app/page.tsx、app/builds/page.tsx、app/champions//page.tsx
说到客户端组件。components/ChampionGrid.tsx、app/augments/page.tsx

常用方法: 尽量让父组件是服务端组件负责取数据,把数据作为 props 传给客户端组件负责交互。

二、fetch 还是 axios?

直接Next.js 服务端推荐用原生 fetch,不推荐 axios

原因是 Next.js 对原生 fetch 做了 。加了缓存和重新验证功能,这是 axios 没有的:

// Next.js
的 fetch,支持缓存控制
fetch(url,{
next这方面,{
revalidate:,// ISR:缓存 小时后重新请求
},});fetch,话说回来,// 每次请求都不缓存
fetch;// 永久缓存

本项目里就用了 revalidate:。英雄数据每天只请求一次 Riot 服务器,其余时间直接用缓存,性能很好。

alertax 能用吗?

能用,但有限制:

  • 客户端组件里可以用 axios
  • 服务端组件里用 axios 可以发请求。但失去了 Next.js 的缓存能力
// 客户端组件里用 axios —— 完全没问题
"use client";import axios from "axios";import { useEffect,useState } from "react";export default function MyComponent {
const = useState;useEffect => {
axios.get.n => setData);},),return 
{data}
}

: 服务端用原生 fetch + Next.js 缓存,客户端交互请求用 axios 或 fetch 都行。

三、路由程序

文件即路由

app/
├── page.tsx → /
├── about/
│ └── page.tsx → /about
├── champions/
│ ├── page.tsx → /champions
│ └── /
│ └── page.tsx → /champions/任意值
└── blog/
└── /
└── page.tsx → /blog/任意/层级/方法

动态路由取参数

// app/champions//page.tsx
interface Props { params: Promise<{ id: string }>;}
export default async function ChampionPage {
const { id } = await params;// Next.js + params 是 Promise
// id 就是 URL 里的值,比如访问 /champions/Jinx。id = "Jinx"
}

编程式跳转

"use client";import { useRouter } from "next/navigation";export default function MyButton {
const router = useRouter;return (

);}

Link 组件

import Link from "next/link";// 比  标签好,支持预加载
查看金克斯;

四、路由守卫

No built‑in Vue‑style beforeEach guard,but several approaches exist.

再看方式一。middleware.ts

Create MIDDLEWARE.TS​

// middleware.ts
import { NextResponse } from "next/server";import type { NextRequest } from "next/server";export function middleware {
const token = request.cookies.get?.value,const isLoginPage = request.nextUrl.pathname === "/login";// 没有 token 且不是登录页,跳转到登录页
if {
return NextResponse.redirect);}
// 已登录还访问登录页,跳转首页
if {
return NextResponse.redirect);按理说,}
return NextResponse.next;// 放行
}
// 配置哪些路由需要走 middleware
export const config = {
matcher:,};

至于方式二,服务端组件里直接判断

// app/dashboard/page.tsx
import { redirect } from "next/navigation";import { getSession } from "@/lib/auth";// 自己的获取 session 函数
export default async function DashboardPage {
const session = await getSession;
if {
redirect;// 服务端直接重定向,使用者看不到页面内容
}
return 
欢迎,{session.user.name}
}

从方式三来看。客户端组件里判断

"use client";import { useEffect } from "react";老实说,import { useRouter } from "next/navigation";

export default function ProtectedPage { const router = useRouter;useEffect => { const token = localStorage.getItem;老实说,if { router.push;} },),return

受保护的内容
}

方式 执行时机 适合场景
middleware 请求到达前,全局权限控制 性能最好,大多数情况
服务器端 redirect 服务端渲染阶段。仅单页面 需要根据后端数据决定跳转
客户端 useEffect 浏览器渲染后 简单场景,会有短暂闪烁

推荐使用 middleware,一次配置,全局生效。

五、API 路由​

Next.js 可以在同一个项目里写后端接口,不需要单独起一个服务。其实,


app/
└── api/
└── champions/
└── route . ts → GET/POST /api/champions
` ` `
ts
// app/api/champions/route.ts
import { NextResponse } from "next/server";//处理 GET 请求
export async function GET{
const{ searchParams}=new URL;const name=searchParams.get;const data={ champions:};return NextResponse . json;}
//处理 POST 请求
export async function POST{
const body=await request . json;按理说,//处理 body...
return NextResponse . json;}
说到前端调用,ts
const res=await fetch;老实说,const data=await res . json;按理说,

六、数据获取的三种模式

理解这三种模式。就理解了Next.js 的主要价值。说起来,

SSG —— 建立时生成

ts fetch;// 或者不传 cache 参数

  • 建立时请求一次生成静态 HTML
  • 合适场景这方面。不常变化的内容
  • 再看优点,最快,CDN 可以缓存

ISR —— 定时刷新

ts fetch;老实说,// 每小时刷新

  • 返回缓存内容,接下来后台定时重新生成
  • 说到合适场景。数据偶尔更新
  • 再看优点,兼顾性能和数据新鲜度

SSR —— 每次请求都重新获取

ts fetch;

  • 每次使用者访问都重新请求数据
  • 合适场景的观点是,实时数据
  • 从优点来看。数据永远最新

七、Image 组件

Next.js 内置的 比普通 `` 强很多:

tsx import Image from "next/image";“金克斯”

说到自动做的事情。

  • 懒加载
  • 自动转换为 WebP 格式
  • 防止布局偏移

注意加载外部域名图片需在 next.config.js 配置白名单:

js // next.config.js module.exports={ images:{ remotePatterns:,},};

八、环境变量

bash

DATABASEURL=mysql://localhost:/mydb NEXTPUBLICAPIURL=https://api.example.com # NEXTPUBLIC 前缀才能在浏览器用 SECRET_KEY=abc123 # 没有前缀。只能在服务端用

使用的观点是,

ts // 服务端 const secret = process.env.SECRET_KEY;

// 客户端 const apiUrl = process.env.NEXTPUBLICAPI_URL;

九、常见错误和解决方法

再看错误1,在服务端组件里用了 useState

vbnet Error的观点是。useState is not a function

解决的观点是,在文件顶部加 "use client",或把有状态部分拆成单独的客户端组件。

错误2的观点是,外部图片不显示

javascript 说到Error,Invalid src prop。hostname not configured

说到解决,在 next.config.js 的 images.remotePatterns 中加入对应域名。

再看错误3,hydration 错误

sql 说到Error,Hydration failed because initial UI does not match

至于原因。服务端渲染 HTML 与客户端渲染结果不一致,例如使用了 Math.random 或 Date.now。

解决的观点是。把这类逻辑放到 useEffect 中,只在客户端执行。

至于错误4,params 需要 await

csharp Error这方面。params should be awaited before using its properties

说到解决,

tsx // 错误写法 const { id } = params;老实说,

// 正确写法 const { id } = await params;

十、项目目录约定速查

app/page.t s x
"文件/目录""作用" app/layout.tsx""全局布局,所有页面的外壳"

""首页 " app/loading.t s x""页面加载中的 UI" app/error.t s x""页面报错时的 UI" app/not-found.t s x""404 页面" app/api/*/route.t s x""API 接口" middleware.t s """请求中间件 " public /" ""静态资源。可通过 /文件名访问 " ""本地环境变量 " d""Next.js 配置文件 "d>

十一、开发常用命令

pnpm dev # 启动开发服务器 pnpm build # 建立生产版本 pnpm start # 启动生产服务器 pnpm lint # 检查代码规范

建立时 Next.js 会告诉你每个页面是 SSG 、SSR还是 ISR,输出类似:

Route Size First Load JS ┌ ○ / kB kB ├ ○ /augments kB kB ├ ○ /builds kB kB └ ƒ /champions/ kB kB ○ prerendered as static content ƒ server-rendered on demand

○ 表示静态,ƒ 表示动态。


标签: 知识点

SEO优化服务概述

作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。

百度官方合作伙伴 白帽SEO技术 数据驱动优化 效果长期稳定

SEO优化核心服务

网站技术SEO

  • 网站结构优化 - 提升网站爬虫可访问性
  • 页面速度优化 - 缩短加载时间,提高用户体验
  • 移动端适配 - 确保移动设备友好性
  • HTTPS安全协议 - 提升网站安全性与信任度
  • 结构化数据标记 - 增强搜索结果显示效果

内容优化服务

  • 关键词研究与布局 - 精准定位目标关键词
  • 高质量内容创作 - 原创、专业、有价值的内容
  • Meta标签优化 - 提升点击率和相关性
  • 内容更新策略 - 保持网站内容新鲜度
  • 多媒体内容优化 - 图片、视频SEO优化

外链建设策略

  • 高质量外链获取 - 权威网站链接建设
  • 品牌提及监控 - 追踪品牌在线曝光
  • 行业目录提交 - 提升网站基础权威
  • 社交媒体整合 - 增强内容传播力
  • 链接质量分析 - 避免低质量链接风险

SEO服务方案对比

服务项目 基础套餐 标准套餐 高级定制
关键词优化数量 10-20个核心词 30-50个核心词+长尾词 80-150个全方位覆盖
内容优化 基础页面优化 全站内容优化+每月5篇原创 个性化内容策略+每月15篇原创
技术SEO 基本技术检查 全面技术优化+移动适配 深度技术重构+性能优化
外链建设 每月5-10条 每月20-30条高质量外链 每月50+条多渠道外链
数据报告 月度基础报告 双周详细报告+分析 每周深度报告+策略调整
效果保障 3-6个月见效 2-4个月见效 1-3个月快速见效

SEO优化实施流程

我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:

1

网站诊断分析

全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。

2

关键词策略制定

基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。

3

技术优化实施

解决网站技术问题,优化网站结构,提升页面速度和移动端体验。

4

内容优化建设

创作高质量原创内容,优化现有页面,建立内容更新机制。

5

外链建设推广

获取高质量外部链接,建立品牌在线影响力,提升网站权威度。

6

数据监控调整

持续监控排名、流量和转化数据,根据效果调整优化策略。

SEO优化常见问题

SEO优化一般需要多长时间才能看到效果?
SEO是一个渐进的过程,通常需要3-6个月才能看到明显效果。具体时间取决于网站现状、竞争程度和优化强度。我们的标准套餐一般在2-4个月内开始显现效果,高级定制方案可能在1-3个月内就能看到初步成果。
你们使用白帽SEO技术还是黑帽技术?
我们始终坚持使用白帽SEO技术,遵循搜索引擎的官方指南。我们的优化策略注重长期效果和可持续性,绝不使用任何可能导致网站被惩罚的违规手段。作为百度官方合作伙伴,我们承诺提供安全、合规的SEO服务。
SEO优化后效果能持续多久?
通过我们的白帽SEO策略获得的排名和流量具有长期稳定性。一旦网站达到理想排名,只需适当的维护和更新,效果可以持续数年。我们提供优化后维护服务,确保您的网站长期保持竞争优势。
你们提供SEO优化效果保障吗?
我们提供基于数据的SEO效果承诺。根据服务套餐不同,我们承诺在约定时间内将核心关键词优化到指定排名位置,或实现约定的自然流量增长目标。所有承诺都会在服务合同中明确约定,并提供详细的KPI衡量标准。

SEO优化效果数据

基于我们服务的客户数据统计,平均优化效果如下:

+85%
自然搜索流量提升
+120%
关键词排名数量
+60%
网站转化率提升
3-6月
平均见效周期

行业案例 - 制造业

  • 优化前:日均自然流量120,核心词无排名
  • 优化6个月后:日均自然流量950,15个核心词首页排名
  • 效果提升:流量增长692%,询盘量增加320%

行业案例 - 电商

  • 优化前:月均自然订单50单,转化率1.2%
  • 优化4个月后:月均自然订单210单,转化率2.8%
  • 效果提升:订单增长320%,转化率提升133%

行业案例 - 教育

  • 优化前:月均咨询量35个,主要依赖付费广告
  • 优化5个月后:月均咨询量180个,自然流量占比65%
  • 效果提升:咨询量增长414%,营销成本降低57%

为什么选择我们的SEO服务

专业团队

  • 10年以上SEO经验专家带队
  • 百度、Google认证工程师
  • 内容创作、技术开发、数据分析多领域团队
  • 持续培训保持技术领先

数据驱动

  • 自主研发SEO分析工具
  • 实时排名监控系统
  • 竞争对手深度分析
  • 效果可视化报告

透明合作

  • 清晰的服务内容和价格
  • 定期进展汇报和沟通
  • 效果数据实时可查
  • 灵活的合同条款

我们的SEO服务理念

我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。

提交需求或反馈

Demand feedback